网站反爬方案分析

简介: 网站反爬方案分析

@TOC

一、爬虫识别方法

1、http日志和流量分析
对IP访问频率统计,设置一个阈值,如果单位时间内某个IP访问频率和流量超过特定阈值就可以界定为爬虫。
2、Headers参数检测
一般有User-Agent、Referer、Cookies等等,目标站点可以检测User-Agent或者Referer参数的值来判断是否为爬虫,Referer参数也可以防盗链。
User-Agent是检查用户所用客户端的种类和版本,Referer是检查此请求由哪里来,通常可以做图片的盗链判断。网站可能会检测Cookie中session_id的使用次数,如果超过限制,就触发反爬策略。
3、在网页源码内放置一个对浏览器不可见的链接
正常用户使用浏览器是看不到该链接的当然也不会去点击,如果检测到该链接被点击,来访IP就会被界定为爬虫。

二、常见反爬虫策略

当我们识别出爬虫之后,通常可以采取以下几种措施来实现反爬:
  1. 临时或永久封禁来访ip。实现难度:简单。破解难度:简单。
  2. 返回验证码进行行为阻止。实现难度:简单。破解难度:困难
  3. 采用ajax异步加载:如果只是爬虫仅为静态网页爬虫,则爬取内容为空。实现难度:中等。破解难度:中等。
  4. 爬虫陷阱:使爬取的内容变成其他和本网站无关的信息。实现难度:中等。破解难度:简单
  5. 加速乐cookies验证服务:在访问之前服务器会先判断客户端请求的cookies正不正确。如果不正确,则返回错误状态码。实现难度:需第三方支持。破解难度:困难
  6. javascript渲染:网页开发者将重要信息放在网页中但不写入html标签中,而浏览器会自动渲染script标签的js代码将信息展现在浏览器当中,而爬虫是不具备执行js代码的能力,所以无法将js事件产生的信息读取出来。实现难度:中等。破解难度:中等。

如果还有爬虫可以绕过这些反爬策略的话,网站一般就会放弃阻拦了,因为拦截成本太高得不偿失。此外,反爬策略太严格的话会影响正常用户的访问。简单来说,反爬措施越多,网站用户体验越差。

三、针对反爬策略攻击者可能会采取的措施

从攻击者的角度来考虑,针对上述涉及到的反爬措施

- 针对反爬策略--临时或永久封禁来访ip

可以设置等待时间(显式或隐式)和使用高匿代理IP来解决。

- 针对反爬策略--验证码

如果不是每次都弹验证码也可以使用高匿代理IP解决,如果感觉高匿代理不稳定或者收集起来不方便使用Tor网络也可以;
如果每次都弹验证码那就得涉及到验证码识别了,简单的验证码可以自己写代码处理,python有不少知名的图像处理(识别)库(如PIL/Pillow、Mahotas、Pymorph、pytesser、tesseract-ocr、openCV等)和算法(比如大名鼎鼎的KNN[K邻近算法]和SVM[支持向量机]),但复杂的验证码例如涉及逻辑判断和计算、字符粘连变形、前置噪音多色干扰、多语种字符混搭的大多也只能靠接入人工打码平台来对抗了。
人工识别:适合比较复杂的验证码,正确率高,但是成本也高。
机器识别:调用在线验证码识别软件接口识别验证码,正确率百分之九十以上。

- 针对反爬策略--ajax异步加载

①可以使用fiddler / wireshark抓包分析ajax请求的界面,再通过规律仿造服务器构造一个请求访问服务器得到返回的真实数据包;
②可以使用selenium+phantomjs解决,phantomjs是一个无头无界面浏览器,使用selenium可以驱动它模拟浏览器的一切操作,但缺点也很明显,爬取效率低。

  • 针对反爬策略--爬虫陷阱

一般是比较简单的死循环陷阱,可以对爬虫将要爬取的链接进行判断,不重复爬取相同的页面。除此之外,对于特定的元素看清之后小心爬取,例如可使用scrapy的LinkExtractor设定unique参数为True即可或者直接设定爬虫的最大循环次数。

  • 针对反爬策略--加速乐的服务

稍复杂,可将浏览器返回的js代码放在一个字符串中,然后利用nodejs对这段代码进行反压缩,然后对局部的信息进行解密,得到关键信息放入下一次访问请求的头部中。可参考:关于加速乐最新反爬虫机制。

- 针对反爬策略--javascript渲染

使用selenium+phantomjs解决。

四、方案选型

目前企业网站常见的反爬方式一般有两种

第一种为企业根据网站自身特性选择反爬措施并实现,此方式较为灵活,但需投入大量成本,实现门槛较高。一般为大型网站如淘宝,京东等采用。

第二种为采取第三方提供商集成的反爬服务,此方式拦截效果好,实现成本较低。目前国内的极验公司此服务较为专业 https://www.geetest.com/BotSonar

目录
相关文章
|
2月前
|
数据采集 监控
如何检测和应对网站的反爬虫机制?
如何检测和应对网站的反爬虫机制?
120 3
|
4月前
|
数据采集 机器学习/深度学习 安全
如何有效防爬虫?一文讲解反爬虫策略
如何有效防爬虫?一文讲解反爬虫策略
139 0
|
20天前
|
数据采集 JavaScript 前端开发
如何判断一个网站是否采取了反爬虫措施
通过观察请求响应、分析请求频率限制和检测JavaScript动态加载来初步判断网站是否使用反爬虫措施。使用Python `requests` 发送请求并检查响应头和内容,寻找验证码、限制信息。尝试短时间内多次请求,看是否被限制。使用Selenium模拟浏览器行为,获取动态加载内容。注意,这些方法仅为初步判断,实际可能需更深入分析,并确保爬取行为合法合规。
|
9月前
|
数据采集 存储 数据库连接
Python爬虫中的数据存储和反爬虫策略
Python爬虫中的数据存储和反爬虫策略
|
12月前
|
Android开发 开发者
页面曝光难点分析及应对方案
页面曝光难点分析及应对方案
111 0
|
数据采集 数据挖掘 大数据
应对反爬之前先懂什么是网站反爬
什么是网站反爬,应对反爬有哪些解决措施
|
XML 搜索推荐 安全
SEO诊断怎么做?网站SEO诊断的10大流程步骤
如果网站从未做过SEO诊断,就不知道SEO存在什么问题,尤其结构比较复杂的网站,问题无时无刻的会出现,除非定期进行SEO诊断,否则不可能会注意到这些问题。接下来可以按照小编分享的网站SEO诊断流程步骤进行检查。
141 0
SEO诊断怎么做?网站SEO诊断的10大流程步骤
|
搜索推荐 JavaScript 前端开发
网络优化中怎么减轻蜘蛛的抓取?
还在等什么,快来一起讨论关注吧,公众号【八点半技术站】,欢迎加入社群
|
数据采集 消息中间件 前端开发
爬虫识别-关键页面访问量-需求及实现思路|学习笔记
快速学习爬虫识别-关键页面访问量-需求及实现思路
95 0
爬虫识别-关键页面访问量-需求及实现思路|学习笔记
|
数据采集 搜索推荐 算法
反爬虫的重点:识别爬虫
我们在网站运营的时候,最大的问题就是:我们自己花费几个小时甚至是几天辛辛苦苦创作作的内容,被爬虫只需要 1s 就抓去了。为了保卫我们创作的成果,也为了网站的稳定运行,我们需要对爬虫说:No,我们在反爬虫的过程中最重要的就是如何识别爬虫。
396 0
反爬虫的重点:识别爬虫