学会使用ip池和cookie池伪装

摘要:
如何修改解码为python文本的字符串类型的编码方法:最好的方法是使用response。所容纳之物decode()获取响应html页面//www.baidu.com“}IP选择-准备一堆IP地址并检查IP的可用性-您可以使用请求添加超时参数来判断IP地址的质量-在线代理IP质量检测网站importrequestsproxies={”http“:

在进入正题之前,我们先复习一个关于requests模块的相关知识点:

requests中解决编码的三种方法:

①response.content

类型:bytes

解码类型:没有指定

如何修改编码方式:response.content.decode()

②response.content.decode()

类型:str

解码类型:解码成python文本的字符串类型

如何修改编码方式:respsonse.content.decode(encoding="utf-8")

③response.txt

类型:str

解码类型:根据HTTP头部对响应的编码作出有根据的推测,推测的文本编码。

如何修改编码方式:response.encoding="gbk"

所以,综上所述,最好的方式就是使用response.content.decode()来获取响应的html页面。

那么现在,回到正题:

我们做爬虫的时候,一定要学会伪装自己。

因为一旦有一天,你不采取措施,但是你需求的量多,频率也快,是很容易被识别为爬虫的,从而对你拦截处理。

思路很简单,就是我一个人模拟多个人,那么从人的属性分析:

浏览器名称,ip地址,cookie和session信息。

所以我们写爬虫的时候,要准备一堆User-Agent,一堆ip地址和一堆cookie信息。

①使用代理ip
ip参数是proxies,依旧是字典的形式{"http":"http://www.baidu.com"}
 
ip的选择
-准备一堆的ip地址,组成ip池,使用代理时随机选择一个ip使用。
-{"ip":"times":0}
-[{},{},{},{}],对这个ip地址的列表进行排序,按照使用次数进行那个排序。
-选择使用次数较少的10个ip,从中随机选择一个。

检查ip的可用性
-可以使用requests添加超时参数,判断ip地址的质量
-在线代理ip质量检测的网站
 
import requests
proxies={"http":"http://132.232.52.79:80"}       #选择代理IP地址的时候,要选对跟自己网络符合的端口哦,否则就是407
headers={"User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e Safari/602.1"}
url="http://www.baidu.com"

response=requests.get(url,proxies=proxies,headers=headers)
print(response.status_code)
 
 
②使用cookie和session
 
cookie存放在客户的浏览器上,session数据放在服务器上。
一组cookie和session的信息对应于一个用户的信息。
使用过快过多会被识别会爬虫。
但是要获取登陆之后的页面,必须发送带有cookies的请求。
 
携带cookie请求
 
跟ip池一样的是,这次需要携带一堆cookie进行请求,把cookie组成cookie池。
 
使用requests提供的session类来请求登陆之后的网站的思路
 
实例化sessin,
先使用session发送post请求,登录到正确的网站,把cookie保存在session中,
再使用session请求get登陆之后才能访问的网站,session能够自动地携带登录成功时保存在其中的cookie,进行请求。
 
import requests

session=requests.session()
url="http://www.renren.com/SysHome.do"
data={"email":"177********","password":"***123456789"}
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6814.400 QQBrowser/10.3.3005.400"}
#使用session发送post请求,cookie保存在其中
session.post(url,data=data,headers=headers)
#使用session进行登陆之后才能访问的地址
response=session.get("http://www.renren.com/969398979/profile",headers=headers)

#保存页面
with open("renrenwang.html","w",encoding="utf-8") as f:
    f.write(response.content.decode())
 
cookie和session的使用思路,我再复述一遍:
首先实例化一个session,然后准备好post请求的表单内容,里面包含账号密码等登陆信息。
然后用session发送post请求,登陆上网站,这个时候已经完成cookie和session的自动保存。
于是就再用session直接发送get请求,登陆上一个需要登陆账号密码的网页,这个时候,依旧能访问成功。
 
值得一提的是,这个过程可以简化,当遇到一下三种情况的时候:
1.cookie过期时间很长的网站
2.在cookie过期之前能够拿到所有的数据,比较麻烦
3.配合其他程序一起使用,其他程序专门获取cookie,当前程序专门请求页面
我们可以直接加入cookie信息,直接登陆上去。方法是和headrs字典一样的,创造一个cookie字典放进去,然后get请求里面放一个cookies参数。
具体过程我就不放代码了,结合headers类似的方法应该都懂。
 
 
 
总结一下今后的爬虫之路,就是准备一堆浏览器名称,一堆IP地址和一堆cookie信息,做到对自己的完美伪装。

免责声明:文章转载自《学会使用ip池和cookie池伪装》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇闪光灯的开启和关闭IIS服务器怎么查看网站日志下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Unity灯光详解

Lights will bring personality and flavor to your game. You use lights to illuminate the scenes and objects to create the perfect visual mood. Lights can be used to simulate the s...

mybatis返回HashMap结果类型与映射

Xhtml代码  <!-- 返回HashMap结果 类型-->       <!-- 如果想返回JavaBean,只需将resultType设置为JavaBean的别名或全限定名 -->       <!-- TypeAliasRegistry类初始化时注册了一些常用的别名,如果忘记了别名可以在这里面查看 -->  ...

Golang服务器热重启、热升级、热更新(safe and graceful hot-restart/reload http server)详解

服务端代码经常需要升级,对于线上系统的升级常用的做法是,通过前端的负载均衡(如nginx)来保证升级时至少有一个服务可用,依次(灰度)升级。 而另一种更方便的方法是在应用上做热重启,直接更新源码、配置或升级应用而不停服务。 这个功能在重要业务上尤为重要,会影响服务可用性、用户体验。 原理 热重启的原理比较简单,但是涉及到一些系统调用以及父子进程之间文件句...

Vim 快捷键整理

一、移动光标 1、左移h、右移l、下移j、上移k 2、向下翻页ctrl + f,向上翻页ctrl + b 3、向下翻半页ctrl + d,向上翻半页ctrl + u 4、移动到行尾$,移动到行首0(数字),移动到行首第一个字符处^ 5、移动光标到下一个句子 ),移动光标到上一个句子( 6、移动到段首{,移动到段尾} 7、移动到下一个词w,移动到上一个词b...

php 4种传值方式

我们定义page01.php和page02.php两个php文件,将page01中的内容想办法传递到page02,然后供我们继续使用。第一种:     使用客户端浏览器的cookie。cookie很容易理解,就是一个临时文件,可以把它看成一个储藏室,浏览器在浏览的过程中记录一些信息,就暂时存放在这里。在page01中设置一个cookie。 代码如下: &...

Apache环境下强制http跳转至https的配置总结

一. 简单实例介绍一般来说,apache配置好http和https后,如果想要做http强转到https,需要设置url重定向规则,大致需要下面几个步骤即可完成配置: 1)在httpd.conf文件里使下面模块生效 [root@back ~]# cat /usr/local/apache/conf/httpd.conf ..... LoadModule s...