爬虫技术

3种常见的反爬手段及解决思路

梳理 Headers 检测、用户行为限制、动态页面渲染这三类最常见的反爬手段,逐条给出爬虫侧的应对思路:UA 池、Referer 补全、代理IP轮换与随机请求间隔。

BeeProxy团队
阅读 6 分钟
3种常见的反爬手段及解决思路

从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。当然,在这里我们只讨论数据采集部分。

通过Headers反爬虫

从用户请求的Headers反爬虫是最常见的反爬虫策略。很多网站都会对Headers的User-Agent进行检测,还有一部分网站会对Referer进行检测(一些资源网站的防盗链就是检测Referer)。如果遇到了这类反爬虫机制,可以直接在爬虫中添加Headers,将浏览器的User-Agent复制到爬虫的Headers中;或者将Referer值修改为目标网站域名。对于检测Headers的反爬虫,在爬虫中修改或者添加Headers就能很好的绕过。

1. 通过 Headers User-Agent 反爬虫

反爬原理:User-Agent字段中记录着用户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等,如果爬虫时没有携带此参数则会被判定为爬虫。

解决办法:在header,中添加User-Agent即可,更好的方式是使用User-Agent池来解决,我们可以考虑收集一堆User-Agent的方式,或者是随机生成User-Agent。

2. 通过 referer 字段或者是其他字段来反爬

反爬原理:Referer字段是记录当前请求是从那个网页发起的。

解决办法:通过添加上响应的referer字段即可

基于用户行为反爬虫

1. 基于请求频率或者总请求数量

还有一部分网站是通过检测用户行为,例如同一IP短时间内多次访问同一页面,或者同一账户短时间内多次进行相同操作。

解决办法:对于这种情况,使用代理IP就可以解决了。

2. 通过同一IP/账号请求之间的时间间隔进行反爬

反爬原理:正常人操作浏览器浏览网站,请求之间的时间间隔是随机,而爬虫前后两个请求之间时间间隔通常比较固定,同时时间间隔较短,因此可以用来做反爬。

解决办法:请求之间进行随机等待,模拟真实用户操作,在添加时间间隔后,为了能够高速获取数据,尽量使用代理池,如果是账号,则将账号请求之间设置随机休眠。

动态页面的反爬虫

上述的几种情况大多都是出现在静态页面,还有一部分网站,我们需要爬取的数据是通过ajax请求得到,或者通过JavaScript生成的。

解决办法:进行抓取和寻找想要的数据包直接进行请求/使用selenium、splash等浏览器渲染框架来进行模拟浏览器进行爬取。

标签:爬虫技术反爬虫

BeeProxy团队

蜜蜂代理技术团队,专注于高可用代理 IP 服务与数据采集技术分享。

蜜蜂代理

准备好提升采集成功率了吗?

注册即享 1 天免费试用,到期不自动扣费

1 分钟完成注册,即刻获取代理 IP

在线客服在线客服