通常防止爬虫被反主要有以下几个策略:
一.BAN IP
原因:某一个某一个时刻IP访问量特别特别大 ,或者是超出正常用户使用权限,导致服务器会偶尔把该IP放入黑名单 ,过一段时间再将其放出来
解决办法:分布式爬虫(分布式【分散url的手动分布式,以及框架分布式】)以及购买代理IP(Tor代理~~能买暗网代理),转化成app有的也有效
二.BAN USERAGENT
原因:爬虫请求头就是默认的 python-requests/2.18.4 等等类型在headers的数据包,会直接拒绝访问,返回403错误
解决办法:伪装浏览器头 ,添加其请求头,再发送请求
三.BAN COOKIES
原因:服务器对每一个访问网页的人都set-cookie,给其一个cookies,当该cookies访问超过某一个阀值(请求次数或者timeout值)时就BAN掉该COOKIE
解决办法:
1,控制访问速度 ,
2,在某宝上买多个账号,生成多个cookies,在每一次访问时带上cookies
3,手动获取页面返回cookies
4,解析js拿到其js生成的cookies再带入请求(超级稳)
5,再没有遇到逆天js加载情况下无所不能的selenuim
案例:亚马逊等大型电商平台,马蜂窝
四.验证码验证
原因:当某一用户访问次数过多后,就自动让请求跳转到一个验证码页面,只有在输入正确的验证码之后才能继续访问网站
解决办法:python可以通过一些第三方库如(pytesser,PIL)来对验证码进行处理,识别出正确的验证码,复杂的验证码可以通过机器学习让爬虫自动识别复杂验证码,让程序自动识别验证码并自动输入验证码继续抓取 ,还有最终手段打码平台(兔宝贝,超级鹰等)打码平台99%的能搞定,那1%也可以用打码平台的人工打码搞定。哈哈
短信验证:易码(专业手机短信验证好几年)
二维码验证:打码平台有支持扫码(神一样的验证,我没有遇到过,但听说过)
案例:淘宝,12306
五.javascript渲染
原因:网页开发者将重要信息放在网页中但不写入html标签中,而浏览器会自动渲染