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

2021年12月26日
Image

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

通过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等浏览器渲染框架来进行模拟浏览器进行爬取。

相关推荐

Image
2021年12月23日
网络爬虫配置ip代理

网络爬虫配置ip 代理,下面以python request 库为例子。首先,准备好文章链接和开发工具(Pych […]

Image
2021年12月30日
有哪些好用的优质高匿代理IP?

蜜蜂代理是国内一家专业的企业级高匿名代理IP平台。每天产生超40万代理IP,为企业和开发者提供低延迟、优质、稳 […]

轻松上手!

单击此处通过 1 天免费试用来测试 蜜蜂代理 的代理IP!

立即开始

立即开始您的1天免费试用!

微信客服