常见反爬虫措施
验证码
通过手动输入图片验证码、输入手机验证码或点击拖动验证码。
解决方法
使用图像识别API进行验证码识别,调用打码网站API,模拟登陆手动辅助。
IP限制
网站根据爬取频率和次数,对访问IP进行短时间限制。
解决方法
构建IP代理池,随机选择代理。
UA限制
网站根据访问时的浏览器标识,进行限制。
解决方法
构建UA池,随机选择UA标识,并选择随机等待时间。
Cookie限制
根据每次打开时生成的随机cookie,进行验证。
解决方法
自己构造cookie,若复杂则使用selenium模拟登陆操作。
Referer防盗链
防盗链主要是针对客户端请求过程中所携带的一些关键信息来验证请求的合法性,而防盗链又有很多种,比如Referer防盗链、时间戳防盗链等等,Referer防盗链根据Referer判断告知服务器该请求是从哪个页面链接过来的,通过限制Referer可以防爬。
解决方法
请求头headers中伪造Referer字段以及相应的值。
HTML/JS/CSS混淆
对html/js/css进行代码混淆,如随机加入无用代码,加大解析的难度。
解决方法
使用工具进行清洗整理,然后进行解析。
Ajax动态加载
从网页的url加载网页的源代码之后,会在浏览器里执行JavaScript程序。这些程序会加载出更多的内容,并把这些内容传输到网页中。如果一个爬虫不具备js引擎,或者具备js引擎,但是没有处理js返回的方案,或者是具备了js引擎,但是没办法让站点显示启用脚本设置。
解决方法
解析Ajax请求,抓取返回数据。