网站反爬方案分析

简介: 网站反爬方案分析

一、爬虫识别方法

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

目录
相关文章
|
5月前
|
数据采集 监控
如何检测和应对网站的反爬虫机制?
如何检测和应对网站的反爬虫机制?
561 3
|
5月前
|
数据采集 Web App开发 搜索推荐
突破目标网站的反爬虫机制:Selenium策略分析
突破目标网站的反爬虫机制:Selenium策略分析
|
5月前
|
数据采集 JavaScript 前端开发
如何判断一个网站是否采取了反爬虫措施
通过观察请求响应、分析请求频率限制和检测JavaScript动态加载来初步判断网站是否使用反爬虫措施。使用Python `requests` 发送请求并检查响应头和内容,寻找验证码、限制信息。尝试短时间内多次请求,看是否被限制。使用Selenium模拟浏览器行为,获取动态加载内容。注意,这些方法仅为初步判断,实际可能需更深入分析,并确保爬取行为合法合规。
|
数据采集 存储 数据库连接
Python爬虫中的数据存储和反爬虫策略
Python爬虫中的数据存储和反爬虫策略
|
数据采集 数据挖掘 大数据
应对反爬之前先懂什么是网站反爬
什么是网站反爬,应对反爬有哪些解决措施
|
数据采集 消息中间件 NoSQL
爬虫识别-爬虫识别总体流程|学习笔记
快速学习爬虫识别-爬虫识别总体流程
228 0
爬虫识别-爬虫识别总体流程|学习笔记
|
数据采集 消息中间件 前端开发
爬虫识别-关键页面访问量-需求及实现思路|学习笔记
快速学习爬虫识别-关键页面访问量-需求及实现思路
130 0
爬虫识别-关键页面访问量-需求及实现思路|学习笔记
|
数据采集 搜索推荐 算法
反爬虫的重点:识别爬虫
我们在网站运营的时候,最大的问题就是:我们自己花费几个小时甚至是几天辛辛苦苦创作作的内容,被爬虫只需要 1s 就抓去了。为了保卫我们创作的成果,也为了网站的稳定运行,我们需要对爬虫说:No,我们在反爬虫的过程中最重要的就是如何识别爬虫。
449 0
反爬虫的重点:识别爬虫
|
数据采集 移动开发 监控
客户端系统化体验分析:一种无入侵的设计与实现
本文主要阐述一种客户端体验分析的思考与系统化实践。优化用户体验的关键点在于如何评估衡量用户体验,传统用户体验分析度量主要有埋点耗时统计及录屏帧耗时统计等手段,这些方法存在开发接入成本较高,分析结果粒度较粗等问题。为了解决传统体验分析中的若干问题,我们提出了基于无线AOP的端到端链路分析和评估方法,该方案采用无入侵方式降低了接入成本,同时将交互链路片段化并产出细粒度分析结果,实现了客户端上用户行为链路的标准化度量及客户端全景体验分析,为客户端体验问题的定位及优化提供有力的支持。
客户端系统化体验分析:一种无入侵的设计与实现