反爬及反反爬
2019-05-21 本文已影响58人
Donald_32e5
本文涉及反爬措施:
- 1、强制等待
- 2、动态生成Cookies
- 3、Headers
- 4、UA
- 5、IP限制
- 6、Ajax动态加载
- 7、Cookies
- 8、 验证码
I、强制等待(Cloudflare)
- 1、Cloudflare是一家美国的科技公司,可以帮助受保护站点抵御包括分布式拒绝服务攻击(DDoS, Distributed Denial of Service)在内的大多数网络攻击。
-
2、被保护的网站会在此界面上强制等待3-10s的样子
-
3、遇见这种情况,推荐使用一个开源包来解决。作者会基本上是同步Cloudflare的措施更新的。
-
4、附上传送门
II、动态生成Cookies
-
1、这种类型的网站一般会让浏览器请求两次:
-
2、第一次请求的时候,给一串js代码串,浏览器会渲染出来,取得cookies,同时会有一个redict跳转命令
-
3、第二次请求的时候,带上第一次的cookies,返回正常的html
-
4、类似这种网站,要不直接使用selenium,要不你就自己把它第一段返回的js解析出来
-
5、本人使用的是PyExecJS。这种工具还是很多的,用自己最熟悉的最好不过了
III、Headers
- 1、如果没记错的话,现在百度首页,如过不带headers是不给数据的,基本上headers是一个爬虫的标配
- 2、headers这边我一般都是先只带UA,如过UA不行的话才会加上别的字段
- 3、至于headers中各字段的意义,就不多赘述,如果想了解的伙伴移步HTTP请求中的Header各字段的意思
IV、UA(User-Agent)
- 1、UA的话基本都是直接填充在headers中使用了
- 2、要爬同一网站大批量的数据的时候,还是创建一个UA池更好
- 3、创建一个UA池
V、IP限制
-
1、通过ip反爬在很长一段时间内是最通用的方法了。
-
2、网站根据你的ip地址访问的频率进行限制,这种ip反爬基本上已经成了各大厂的低配反爬了,只要稍微快一点,频率高一点,分分钟被封
-
3、解决的方法还是得使用代理ip了,至于ip的质量,还是得看自己所需数据的量来定了
-
4、在买代理之前也可以搜一下,看自己的业务到底适合哪种代理:传送门
VI、Ajax动态加载
- 1、如果数据是通过ajax加载的话,有好处也有坏处
- 2、好处是可以直接找到API接口获取数据
- 3、坏处是如果API是加密的,或是你解不掉它的加密,也就不能再直接获取html标签了
- 4、通常使用ajax获取数据的接口,都是在js中封装的requests,如果想直接拿出API,那对JS的功力也是一中考验了
- 5、若果实在破解不了,那也只能用selenium牺牲速度,来换取数据了。
VII、Cookies
-
1、有的网页打开的时候,会随机生成一个cookies,如果在此打开这个网页发现cookies不存在,再次设置一个,但第三次打开还是没有cookies,就会认定为是爬虫在工作了
-
2、这种情况的话,可以把cookies封装在headers中,每次都带上
-
3、Python的requests模块会有一个session,每次请求都会带上cookies