反爬及反反爬

本文涉及反爬措施

  • 1、强制等待
  • 2、动态生成Cookies
  • 3、Headers
  • 4、UA
  • 5、IP限制
  • 6、Ajax动态加载
  • 7、Cookies
  • 8、 验证码
  • 9、JS渲染

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


VIII、验证码

  • 1、验证码就不用多介绍了吧,这事最常见的一种反爬措施
  • 2、推荐一个数字验证码大码平台,当然是收费的:斐斐打码
  • 3、在推荐一个专业的验证码解决平台:传送门

VIIII、JS渲染

  • 1、分析网页源代码数据,如果数据是隐藏在 HTML 中的其他地方,以 JavaScript 变量的形式存在,直接提取就好了。
  • 2、分析 Ajax,很多数据可能是经过 Ajax 请求时候获取的,所以可以分析其接口。
  • 3、模拟 JavaScript 渲染过程,直接抓取渲染后的结果。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容