• 反爬机制


    一.通过headers反爬虫:

    • Basic Auth

    这是一种古老的、不安全的用户验证方式,一般会有用户授权的限制,会在headers的Autheration字段里要求加入用户名密码(明文),如果验证失败则请求就会失败,现在这种认证方式正在被淘汰。

    • Referer

      链接的来源,通常在访问链接时,都要带上Referer字段,服务器会进行来源验证,后台通常会用此字段作为防盗链的依据。

      User-Agent: U-A校验,浏览器在发请求时,会附带用户设备类型、系统以及浏览器的型号版本。服务器会通过判断U-A的值来区分不同的浏览器。

      如果服务器仅仅通过判断请求的U-A来区分不同浏览器。因此:可模拟U-A,即是我们手动指定我们发出去的请求的User-Agent的值。

      (一般情况下,使用编程语言提供的第三方网络库来发送HTTP请求会有一个默认的U-A,比如requests库的默认U-A为"python-requests/2.8.1"(后面的版本号可能不同)

    • Cookie

      一般在用户登录或者某些操作后,服务端会在返回包中包含Cookie信息要求浏览器设置Cookie,没有Cookie会很容易被辨别出来是伪造请求;

      也有本地通过JS,根据服务端返回的某个信息进行处理生成的加密信息,设置在Cookie里面;

    • 自定义字段

      因为http的headers可以自定义地段,所以第三方可能会加入了一些自定义的字段名称或者字段值,这也是需要注意的。

      

      header表现形式:key-value.

      User-Agent标示了一个浏览器的型号

      

    二.通过用户行为

    真人通过浏览器访问网站的速度(相对程序来讲)是很慢的。在较短时间内,发了较多的请求,服务器会认为你是一个 爬虫。

    我们可以:用代理IP,转发我们的请求。

    不少网站提供或罗列了一大批代理IP,我们可以抓取下来之后存储起来,以备不时之需。不过,很多代理IP的寿命都比较短,所以最好有一套完整的机制来校验已有代理IP的有效性。

    三.通过验证码限制

      这样的方式与上面的方式相比更加难处理的是,不管你的访问频次怎么样,你都需要输入验证码才行

    四.基于动态页面的反爬虫

      跟踪服务器发送的ajax请求,模拟ajax请求

    五.通过账号限制

      账号的作用更多是网站处于功能考虑的,反爬虫只不过是顺便完成的功能。

  • 相关阅读:
    mybatis-cache model
    多线程开发(1)
    正则表达式(3) — 正则表达式库
    正则表达式(2) — 表达式规则
    我在迈瑞工作的两年总结
    正则表达式(1) — 常用的表达式
    C++系列(2) — 智能指针
    C++系列(1) — string
    路径去除前缀
    SIMD性能优化
  • 原文地址:https://www.cnblogs.com/zhaochangbo/p/7652444.html
Copyright © 2020-2023  润新知