反反爬虫相关机制(面试必问,后续陆续添加)

通常防止爬虫被反主要有以下几个策略:

一.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标签中,而浏览器会自动渲染