常见反爬机制以及处理手段

1)IP访问频率限制

可以通过构造IP池解决,网上有很多免费的代理IP。

2)UA限制

UA使用户访问网站时候的浏览器标识,和IP一样可以构建UA池,随机抽取一个。

3)验证码

有的网站访问需要提供验证码,简单的数字或者文字识别的验证码可以通过图像识别的方式解决。

4)Ajax动态加载

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

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

5)cookie

很多网站需要登录才有cookie,如果是简单的爬虫,对服务端的压力不大,其实可以自己登陆然后得到cookie。用cookie+IP访问频率的限制是一个不错的反爬虫方法。

cookie的问题可以具体情况具体分析,比如分析一下游客访问。或者随机一个IP之后,先得到cookie然后访问几次,再换IP如此重复。

6)带上特定字段

有的网站会在cookie上带特定字段才能访问,这样的反爬效果不大好。

7)对Referer (上级链接)进行检测

虽然机器行为不太可能通过链接跳转实现,但是用户也可能直接根据你的域名访问呀,这个方案需要针对特定场景,爬虫时也难以预料。

参考:

https://blog.csdn.net/qq_41057280/article/details/81201337

https://www.cnblogs.com/Eeyhan/p/11520608.html

https://www.cnblogs.com/angle6-liu/p/10451047.html