反爬机制及反反爬策略

1、UA检测

UA,即 User-Agent,是HTTP请求头部信息的一个属性,它是用户访问网站时的浏览器标识,可以通过审查元素或者开发者工具中看到。一些网站通过检测UA从而确定请求的对象是脚本程序还是正常的用户通过浏览器请求,实现反爬虫的目的。

反反爬策略:构造自己的UA池,使得每次用程序向网站发请求时都随机带上正常的UA标识,更好的模拟浏览器行为。有些网站还会有反爬时间或者频率的限制,因此,最好可以再设置一个 timeout ,最好是随机休眠,Python中可以使用 time.sleep() 进行设置。

 2、IP限制

一些网站会根据你请求的IP地址的频率和次数来进行反爬。如果你同样的IP地址在短时间内对一个网站频繁的进行访问,那么服务器有可能在一段时间内会禁止这个IP地址进行访问。

反反爬策略:构造自己的IP代理池,然后每次发起请求时都从池中随机选择一个IP地址。比如:可以去西刺代理寻找一些IP地址构造代理池。

3、验证码反爬

这个是一种非常有效的反爬机制,现在的验证码也变得越来越复杂,各种花样很多,想写个脚本去识别验证码那还真不是一件简单的事情。

反反爬策略:这个能怎么样呢,简单的验证码可以通过云打码这个平台上提供的接口进行编码识别,试了一下,还不错,收费也不贵,但是一些比较复杂的验证码就不知道怎么样了,实在不行,还是用手输入吧

4、Ajax动态加载

有些网页直接用它的URL抓取不到数据,这时候,就很有可能是Ajax动态加载的了。它的原理是利用网页的URL加载网页的源代码之后,会先在浏览器中执行JavaScript程序,这些程序会加载除更多的内容,并把加载出的内容传输到网页中。

反反爬策略:利用审查元素或者开发者工具查看网页数据的XHR类型的URL,并向这个XHR类型的URL发起请求就可以拿到对应的数据了。

5、cookie限制

cookie是服务器在用户浏览器设置的请求头部信息,当浏览器发起请求时,如果存在cookie,就一定会携带。服务器会检测cookie是否是之前设置的cookie实现反爬。

反反爬策略:在请求头部信息中带上相应的cookie信息,利用Python的requests模块发请求时,可以使用requests.session自动处理cookie。

原文地址:https://www.cnblogs.com/andrew3/p/12693288.html