python爬虫 -13- 反爬虫分析

User-Agent识别

修改请求头信息里的User-Agent

请求头信息识别

比如说referer, content-type,请求方法(POST, GET)

构造相应的请求头信息。比如说referer,我们在提取URL的时候,要把URL所在页面的URL也存储起来,并放到request.headers。

异步加载

我们需要分析页面的网络请求,从中找出和我们想要的数据相关的请求,并分析它的请求头信息、参数、cookie,然后根据这些信息构造我们的请求。通常来说都是ajax请求,也有图片请求,比如图片的lazy load,通过js在页面加载后修改图片的src属性。一般都会有其他的自定义属性存在,比如说"_src"。总之,可以找到一些ID或者链接。注意观察相关dom节点树上的特殊属性。

请求参数加密

一般是在前端通过一定的计算,构造出一个哈希值。需要分析前端的代码,找出具体计算的代码逻辑,并用python再实现。如果前端的代码经过混淆,并且代码量十分巨大,可以使用selenium或者splash等引擎去请求。但是,如果爬取的数据需求量比较大,我们还是要通过直接调用对方接口的形式去获取数据。


请求结果加密

json数据里面加密

比如携程酒店房型列表接口,用它自己的js解密,或者分析它的js前端逻辑,用python代码实现出来。

CSS加密

比如大众点评,通过CSS样式去代替某个字符。我们需要同时爬取CSS文件,并且分析CSS文件内的样式,最后定位到svg文件,并分析提取svg内的内容,完成替换。

字体加密

比如猫眼电影。每次随机返回一个字体文件,并且字符也是随机的。需要每次下载对应的字体文件,并解析字体文件和字符之间的对应关系。

Cookie限制

登录、session限制,比如新片场,拿到登录以后的cookie,然后set到头信息里面,这样请求的时候就相当于登录了。

IP频率限制

需要准备大量的IP代理,获得IP代理的方式有:

  1. 自己搭建代理服务器(tinyproxy, squid+动态拨号,DDNS)
  2. 付费购买
  3. 爬取公开网络上代理(可用性比较低)

控制爬取频率,保持不被封的情况下的最合适的并发数量。

验证码

  1. 尝试可否绕过前端验证,直接请求具体的接口,以绕开验证码.
  2. 可以用图片识别库去识别某些比较简单的验证码
  3. 接入云打码平台
  4. 用机器学习训练验证码的图片库,然后识别
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值