zoukankan      html  css  js  c++  java
  • 常见的反爬机制及应对策略

    1.Headers:

      从用户的headers进行反爬是最常见的反爬策略,Headers是一种最常见的反爬机制Headers是一种区分浏览器行为和机器行为中最简单的方法,还有一些网站会对Referer (上级链接)进行检测 从而实现爬虫。

      相应的解决措施:通过审查元素或者开发者工具获取相应的headers 然后把相应的headers 传输
    给python 的requests,这样就能很好地绕过。

    2.IP 限制

      一些网站会根据你的IP 地址访问的频率,次数进行反爬。也就是说如果你用单一的IP 地址访问频
    率过高,那么服务器会在短时间内禁止这个IP 访问。
      解决措施:构造自己的IP 代理池,然后每次访问时随机选择代理(但一些IP 地址不是非常稳定,
    需要经常检查更新)。
    3. UA 限制
      UA 是用户访问网站时候的浏览器标识,其反爬机制与ip 限制类似。  

      解决措施:构造自己的UA 池,每次python 做requests 访问时随机挂上UA 标识,更好地模拟浏
    览器行为。当然如果反爬对时间还有限制的话,可以在requests 设置timeout(最好是随机休眠,这
    样会更安全稳定,time.sleep())。

    4.验证码反爬虫或者模拟登陆  

      验证码:这个办法也是相当古老并且相当的有效果,如果一个爬虫要解释一个验证码中的内容,这在以前通过简单的图像识别是可以完成的,但是就现在来讲,验证码的干扰线,噪点都很多,甚至还出现了人类都难以认识的验证码

      解决措施:验证码识别的基本方法:截图,二值化、中值滤波去噪、分割、紧缩重排(让高

    矮统一)、字库特征匹配识别。(python 的PIL 库或者其他)模拟登陆(例如知乎等):用好python requests 中的session

    5.Ajax 动态加载  

      网页的不希望被爬虫拿到的数据使用Ajax 动态加载,这样就为爬虫造成了绝大的麻烦,如果一个爬虫不具备js 引擎,或者具备js 引擎,但是没有处理js 返回的方案,或者是具备了js 引擎,但是没办法让站点显示启用脚本设置。基于这些情况,ajax 动态加载反制爬虫还是相当有效的。

    Ajax 动态加载的工作原理是:从网页的url 加载网页的源代码之后,会在浏览器里执行JavaScript程序。这些程序会加载出更多的内容,并把这些内容传输到网页中。这就是为什么有些网页直接爬它的

    URL 时却没有数据的原因.

      解决策略:若使用审查元素分析”请求“对应的链接(方法:右键→审查元素→Network→清空,点

    击”加载更多“,出现对应的GET 链接寻找Type 为text/html 的,点击,查看get 参数或者复制Request
    URL),循环过程。如果“请求”之前有页面,依据上一步的网址进行分析推导第1 页。以此类推,抓取
    抓Ajax 地址的数据。对返回的json 使用requests 中的json 进行解析,使用eval()转成字典处理fiddler 可以格式化输出json 数据。

    6.cookie 限制
      一次打开网页会生成一个随机cookie,如果再次打开网页这个cookie 不存在,那么再次设置,第

    三次打开仍然不存在,这就非常有可能是爬虫在工作了。

      解决措施:在headers 挂上相应的cookie 或者根据其方法进行构造(例如从中选取几个字母进行

    构造)。如果过于复杂,可以考虑使用selenium 模块(可以完全模拟浏览器行为)。

    认真做一件事,并将之完全学会掌握为止!
  • 相关阅读:
    聊聊WS-Federation
    用双十一的故事串起碎片的网络协议(上)
    责任链模式的使用-Netty ChannelPipeline和Mina IoFilterChain分析
    最小化局部边际的合并聚类算法(中篇)
    最小化局部边际的合并聚类算法(上篇)
    UVaLive 7371 Triangle (水题,判矩形)
    UVaLive 7372 Excellence (水题,贪心)
    POJ 3312 Mahershalalhashbaz, Nebuchadnezzar, and Billy Bob Benjamin Go to the Regionals (水题,贪心)
    UVa 1252 Twenty Questions (状压DP+记忆化搜索)
    UVa 10817 Headmaster's Headache (状压DP+记忆化搜索)
  • 原文地址:https://www.cnblogs.com/mqhpy/p/11420352.html
Copyright © 2011-2022 走看看