反爬虫姿势与绕过
爬虫是指使用任何技术手段,批量获取网站信息的一种方式。
反爬虫是指使用任何技术手段,阻止别人批量获取自己网站信息的一种方式。
常见的反爬虫机制
通过User-Agent识别爬虫
网站可以通过User-Agent来判断用户是使用什么浏览器访问,不同浏览器的User-Agent是不一样的,但是如果爬虫使用Requests库访问,没有配置UA,即可判断出该请求不是浏览器发出,通过识别特征UA,直接封掉爬虫请求。
访问频率限制
设置IP访问频率
如果超过一定频率,弹出验证码验证,如果输入正确的验证码,则放行,如果没有输入,则禁止访问一段时间,如果超过禁爬时间,再次触发验证码,则拉入黑名单。可以根据具体的业务,为不同场景设置不同阈值,比如登录用户和非登录用户,请求是否含有referer。
统计并发最高的IP
有些爬虫的并发是很高的,统计并发最高的IP,加入黑名单
请求时间窗口过滤统计
爬虫爬取网页的频率都是比较固定的,不像人去访问网页,中间的间隔时间比较无规则,所以我们可以给每个IP地址建立一个时间窗口,记录IP地址最近访问时间,每记录一次就滑动一次窗口,比较最近访问时间和当前时间。如果间隔时间很长判断不是爬虫,清除时间窗口;如果间隔不长,就回溯计算指定时间段的访问频率,如果访问频率超过阀值,就转向验证码页面让用户填写验证码
限制api token的访问量
识别合法搜索引擎爬虫
封Cookie
JavaScript渲染
- 由 JavaScript 改变 HTML DOM 导致页面内容发生变化的现象称为动态渲染。网页开发者将重要信息放在网页中但不写入html标签中,而浏览器会自动渲染