Hello World

反爬机制

一.通过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请求

 

五.通过账号限制

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

posted @ 2017-10-11 19:21  nayike  阅读(260)  评论(0编辑  收藏  举报

Hello