CN109729044B - 一种通用的互联网数据采集反反爬系统及方法 - Google Patents
一种通用的互联网数据采集反反爬系统及方法 Download PDFInfo
- Publication number
- CN109729044B CN109729044B CN201711037128.5A CN201711037128A CN109729044B CN 109729044 B CN109729044 B CN 109729044B CN 201711037128 A CN201711037128 A CN 201711037128A CN 109729044 B CN109729044 B CN 109729044B
- Authority
- CN
- China
- Prior art keywords
- request
- proxy
- module
- login
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种通用的互联网数据采集反反爬方法及系统,该方法通过UA验证单元(01)向服务器提供随机UA头、通过IP验证单元(02)向服务器提供随机代理IP、通过间隔验证单元(03)有根据的随机化请求间隔、通过授权状态验证单元(04)模拟登录、以及通过验证码识别单元(05)进行验证码识别或通过上述组合以分别应对互联网反爬验证中的请求UA验证、请求IP验证、请求间隔验证、授权状态验证、人工操作验证或其组合,上述方式可绕过对多种反爬验证手段组合的拦截,实现对网站信息的有效获取。
Description
技术领域
本发明主要涉及互联网数据采集技术,特别涉及常见的互联网数据反爬验证手段、通用的互联网数据采集反反爬系统及方法。
背景技术
以惊人的速度发展起来的网络,成就了万维网这个拥有着大量信息资源的宝藏,基于万维网信息资源而生的搜索引擎则实现了信息的有效提取和利用;但大数据时代的到来让我们对互联网信息产生了新的需求,于是通过编程实现自动批量采集的互联网数据采集即爬虫应运而生;而大量的爬虫极大增加了网页数据服务器的负载压力,基于服务器压力或数据性质等的考虑,网页数据拥有方对高频/批量获取其数据的爬虫采用反爬验证手段进行甄别并拦截,以阻止爬虫的爬取。
为了快速获取互联网信息或者更新的信息,爬虫的存在必不可少,为了应对反爬验证手段则产生了反反爬方法。随着反爬验证手段和反反爬方法的博弈越演越烈,越来越多的反反爬方法不能绕过反爬验证手段的拦截以获取互联网信息。这主要是因为反爬验证手段的多样性以及多种反爬验证手段的组合,使得拦截方式多样化、复杂化,而反反爬方法的通用性和灵活性得不到提升,网页数据获取方不能应对多样化的反反爬验证手段,互联网信息获取率低。
由于上述问题的存在,本发明人对现有的反爬验证手段等相关技术进行研究和分析,以期待研制出一种通用的互联网数据采集反反爬系统及方法,可以应对目前出现的多种形式的反爬验证手段,以及多组合反爬验证手段的拦截,高效获取互联网信息。
发明内容
为了克服上述问题,本发明人进行了锐意研究,设计出一种通用的互联网数据采集反反爬方法,该方法通过随机UA头、随机代理IP、随机请求间隔、模拟登录、验证码识别或其组合以分别应对互联网反爬验证中的请求UA验证、请求IP验证、请求间隔验证、授权状态验证、人工操作验证或其组合,从而完成本发明。
本发明的目的在于提供以下技术方案:
(1)一种通用的互联网数据采集反反爬方法,该方法包括以下步骤:
步骤1:通过UA头发送模块011接收服务器提出的UA验证请求,由UA头列表012中随机抽取UA头后,向服务器提供随机UA头;
步骤2:通过代理IP发送模块021接收服务器提出的IP验证请求,并向代理IP管理模块022发送调取代理IP的请求,代理IP管理模块022由IP代理池023中获取随机代理IP后传送至代理IP发送模块021,经附加代理IP于HTTP请求头中后,向服务器提供代理IP;
步骤3:通过请求间隔控制模块031控制请求源对服务器的请求间隔,使请求间隔随机化;
步骤4:通过登录请求查询模块041确定服务器是否发送登录请求,若服务器发送登录请求,通过自动登录模块044以拼接登录链接模式或者内置无界面浏览器模式实施网站登录;若服务器未发送登录请求,则登录请求查询模块041不进行信号传送及后续自动登录模块044的相关登录操作;
步骤5:通过验证码请求查询模块051确定服务器是否发送验证码请求,若发送验证码请求则验证码请求查询模块051将请求信号传送至验证码识别模块052,验证码识别模块052接收验证码请求查询模块051传送的请求信号,对验证码进行文字识别,进行验证码文字输入;若服务器未发送验证码请求,则验证码请求查询模块051不进行信号传送。
(2)一种通用的互联网数据采集反反爬系统,所述系统包括UA验证单元01、IP验证单元02和间隔验证单元03:
其中,所述UA验证单元01包括:
UA头发送模块011,其接收服务器提出的UA验证请求,由UA头列表012中随机抽取UA头后,向服务器提供随机UA头;
UA头列表012,其用于存储UA头,并根据UA头载有的浏览器版本信息被UA头管理模块(013)划分成多个不同的UA头子列表;
UA头管理模块013,其用于在UA头列表012中构建UA头子列表,将载有相同浏览器不同版本信息的UA头划入同一个UA头子列表中,形成浏览器分组;并获取浏览器的最新版本信息,根据浏览器的最新版本信息对UA头列表012中的UA头进行信息更新;
所述IP验证单元02包括:
代理IP发送模块021,其用于接收服务器提出的IP验证请求,向代理IP管理模块022发送调取代理IP的请求,代理IP管理模块022由IP代理池023中获取随机代理IP后传送至代理IP发送模块021,经附加代理IP于HTTP请求头中,向服务器提供代理IP;
IP代理池023,其用于存储代理IP;
代理IP管理模块022,其用于接收代理IP发送模块021发出的请求,对IP代理池023中代理IP进行调取,提供至代理IP发送模块021;并对IP代理池023中的代理IP进行监控,统计采用各代理IP的请求被网站拒绝或开放的次数,并将统计结果存入代理IP数据存储模块024;
代理IP数据存储模块024,其用于存储代理IP管理模块022统计得到的采用各代理IP的请求被网站拒绝或开放的统计数据;
所述间隔验证单元03包括:
请求间隔控制模块031,其用于控制请求源对服务器的请求间隔,使请求间隔随机化。
(3)根据上述(2)所述的系统,所述系统还包括授权状态验证单元04,所述授权状态验证单元04以拼接登录链接模式或者内置无界面浏览器模式实施登录;
当授权状态验证单元04以拼接登录链接模式登录时,授权状态验证单元04包括:
登录请求查询模块041,其用于确定服务器是否发送登录请求,若服务器发送登录请求则登录请求查询模块041将请求信号传送至链接拼接模块042;若服务器未发送登录请求则登录请求查询模块041不进行信号传送及后续自动登录模块044的相关登录操作;
链接拼接模块042,其接收登录请求查询模块041传送的请求信号,拼接目标网站的登录链接,将登录链接传送至自动登录模块044;
自动登录模块044,其接收链接拼接模块042传送的登录链接后依照登录逻辑实现登录;
当授权状态验证单元04以内置无界面浏览器模式登录时,授权状态验证单元04包括:
登录请求查询模块041,其用于确定服务器是否发送登录请求,若服务器发送登录请求则登录请求查询模块041将请求信号传送至输入框定位模块043;若服务器未发送登录请求则登录请求查询模块041不进行信号传送及后续的自动登录模块044的相关登录操作;
输入框定位模块043,其接收登录请求查询模块041传送的请求信号后,获取目标网站登录窗口中相应输入框的URL并将该URL输入自动登录模块044;
自动登录模块044,其采用Selenium WebDriver+PhantomJs技术实现相应输入框内容的输入,并利用获取Cookie的核心代码获取Cookie,实现目标网站的自动登录。
(4)根据上述(2)所述的系统,所述系统还包括验证码识别单元05,所述验证码识别单元05包括:
验证码请求查询模块051,其用于确定服务器是否发送验证码请求,若发送验证码请求则将请求信号传送至验证码识别模块052;若服务器未发送验证码请求,则验证码请求查询模块051不进行信号传送;
验证码识别模块052,其接收验证码请求查询模块051传送的请求信号,通过OCR识别和机器学习对验证码进行文字识别,再通过Selenium WebDriver+PhantomJs技术实现验证码输入框中相应内容的输入。
根据本发明提供的一种通用的互联网数据采集反反爬系统及方法,具有以下有益效果:
(1)本发明提供的通用的互联网数据采集反反爬方法及系统,基于现有的多种反爬验证进行了相应或组合应对,可绕过对多种反爬验证手段组合的拦截,实现对网站信息的有效获取;
(2)本发明提供的通用的互联网数据采集反反爬方法及系统中,对UA头列表中UA头载有根据载有的浏览器及版本信息划分入不同UA头子列表,实时更新UA头,并据浏览器市场占有份额的变化,采用数组填充法对各UA头子列表中UA头被抽取的概率进行重新设定,使UA头抽中机率与其对应的浏览器的市场占有份额相符,这种设置使得抽取的UA头在随机性的同时提高了合理性,极大提高了服务器对非人工爬取的识别难度;
(3)本发明提供的通用的互联网数据采集反反爬方法及系统中,随机获取代理IP并附加代理IP于HTTP请求头中,向服务器提供代理IP,通过随机UA和随机代理IP的组合以降低被识别的几率;
(4)本发明提供的通用的互联网数据采集反反爬方法及系统中,通过代理IP管理模块对IP代理池中的代理IP进行监控,根据设定的拒绝次数和/或成功次数分为性能不等的组,并与请求间隔控制模块关联,可参考请求间隔控制模块获得的数据选择特定性能范围的代理IP,此设定提高了请求源对目标网站信息的获取效率,通过对高低性能代理IP范围的选择,提高对代理IP的利用率;
(5)本发明提供的通用的互联网数据采集反反爬方法及系统中,通过请求间隔控制模块测试目标网站的最大允许访问频率,以及记录请求源对目标网站的实际访问频率控制请求间隔,不会由于盲目加快信息抓取速度给目标网站服务器造成过大的负载,也不会由于设定较大的请求间隔以避免访问太频繁而被服务器禁止所造成的网络利用率低的问题;
(6)本发明提供的通用的互联网数据采集反反爬方法及系统中,提供了多种应对授权状态验证的方法,即通过自动登录模块以拼接登录链接模式或者内置无界面浏览器模式实施网站登录;特别地,在内置无界面浏览器模式实施网站登录采用SeleniumWebDriver+PhantomJs技术,可实现网站的高效登陆;
(7)本发明提供的通用的互联网数据采集反反爬方法及系统中,验证码识别单元采用Python-tesseract技术,可实现验证码中文字。
附图说明
图1示出根据本发明一种优选实施方式的通用互联网数据采集反反爬方法;
图2示出登录某网时登录过程的链接列表;
图3示出根据本发明一种优选实施方式中自动登录模块登录新浪微博时获取Cookie的核心代码;
图4示出根据本发明一种优选实施方式的通用互联网数据采集反反爬系统。
附图标号说明:
01-UA验证单元;
011-UA头发送模块;
012-UA头列表;
013-UA头管理模块;
02-IP验证单元;
021-代理IP发送模块;
022-代理IP管理模块;
023-IP代理池;
024-代理IP数据存储模块;
03-间隔验证单元;
031-请求间隔控制模块;
04-授权状态验证单元;
041-登录请求查询模块;
042-链接拼接模块;
043-输入框定位模块;
044-自动登录模块;
05-验证码识别单元;
051-验证码请求查询模块;
052-验证码识别模块。
具体实施方式
下面通过附图和实施例对本发明进一步详细说明。通过这些说明,本发明的特点和优点将变得更为清楚明确。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
如图1所示,根据本发明提供的一种通用的互联网数据采集反反爬方法,该方法包括以下步骤:
步骤1,通过UA头发送模块011接收服务器提出的UA(User-Agent)验证请求,由UA头列表012中随机抽取UA头,向服务器提供随机UA头。
本发明中,UA头是HTTP请求头中的User-Agent参数,为一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
服务器将UA头作为请求源(即客户端)的标识之一,通过接收到的UA头对请求源进行初步识别,验证一段时间内向服务器发送的请求是否来自同一请求源。如果该段时间内服务器接收到的请求源的UA头相同,则该请求源可能为爬虫操作。为避免服务器在短时间内频繁接收到相同的UA头以拒绝访问,需要向服务器提供随机UA头,降低被认为来自同一请求源的可能性。
变换UA头可以降低爬虫被服务器识别的可能性,但是,普遍存在使用不变的、有限的UA头信息,缺乏对UA头的更新、监督管理问题,以及对变换的UA头的选择存在盲目性问题,如频繁使用载有冷门浏览器信息的UA头,使得该UA头引起服务器注意进而被拒绝访问。
基于上述问题,本发明通过构建UA头列表012,存储多个模拟多种浏览器的UA头以供随机选择来绕过UA验证请求。进一步地,本发明通过UA头管理模块013在UA头列表012中构建UA头子列表,将UA头列表012中载有相同浏览器的不同版本信息的UA头划入同一个UA头子列表中,即每个UA头子列表中包括载有相同浏览器的不同版本信息的多个UA头,各UA头子列表组成UA头列表012。多种浏览器的选择增加了UA头的多样性,降低服务器对同一请求源的识别风险,特别是采用智能手机里安装的浏览器的UA头更具有安全性,因为服务器一般认为手机浏览器是被真实用户操作,同时服务器还会给手机浏览器发出样式简单,但内容无删减的网页,降低了请求源解析网页的工作量。其中,部分UA头列表中信息如表1所示。
表1部分UA头列表信息
构建得到的UA头列表012基于浏览器种类分为多个UA头子列表。但UA头子列表或UA头列表012并非不变的,UA头中包括浏览器版本信息,根据浏览器版本的更新,需要刷新(即增加)UA头,获得更新后更加丰富的UA头列表012。
在一种优选的实施方式中,通过UA头管理模块013获取浏览器的最新版本信息,并对UA头列表012中UA头信息进行增加/更新,获得更新后UA头列表012。本发明中UA头管理模块013可通过javascript方法或者Java方法获取浏览器的最新UA头,进而读取其版本信息。
其中,javascript方法获取浏览器的UA头包括两种方式,第一种方式为在相应的浏览器的地址栏中输入“javascript:alert(navigator.userAgent)”获取浏览器的UA头;第二种方式为向网页中输入“alert(navigator.userAgent)”,通过浏览器读取网页获得该浏览器的UA头。
Java方法获取浏览器的UA头的核心代码为String ua=request.getHeader("User-Agent")。具体获取方法为:首先由java创建一个网页服务器,网页服务器上写入上述代码,然后在由一个真实访问者用各种浏览器访问该网页,服务器端就能够得到访问者所用的浏览器真实版本。相似于以下原理:如果不知道自己的电话号码,可以拨通某人的电话,对方电话上就显示出自己的电话号码。
在服务器的反爬验证手段为请求UA验证时,UA头发送模块011获得更新后的UA头列表012后,向服务器提供随机UA头可能还会存在较大被识别风险。这主要是由于抽取UA头的随机性不受控,即未控制抽取到不同UA头子列表中UA头的概率,UA头发送模块011频繁抽取到载有冷门浏览器及其版本信息的UA头,并以此UA头被服务器获取,不符合浏览器市场占有份额的规律,因而请求源的信息获取操作容易被服务器识别为爬虫操作,阻止进一步获取信息。
本发明中,为改善抽取UA头的随机性不受控的问题,通过UA头管理模块013获取最新的浏览器市场占有份额的数据,根据浏览器市场占有份额,设定载有不同浏览器版本信息的UA头被抽取的概率,保证UA头抽中机率与其对应的浏览器的市场占有份额相符。如浏览器IE8.0的市场占有份额为10.90%,则载有IE8.0信息的UA头在UA头列表012中被抽取到的概率均为10.90%。
在一种优选的实施方式中,UA头管理模块013采用数组填充法设定UA头列表012中UA头被抽取的概率。即通过UA头管理模块013根据浏览器市场占有份额的变化,采用数组填充法对各UA头子列表中UA头被抽取的概率进行设定。
在一种优选的实施方式中,UA头管理模块013通过百度统计获取最新的浏览器的市场占有份额数据,获取最新的浏览器市场占有份额的链接为“http://tongji.baidu.com/data/browser/”。
现有技术中,在请求UA验证的基础上,服务器请求IP验证也是较为常用的反爬验证手段。服务器将请求所在地的IP作为请求源的标识之一。所述请求IP验证为根据请求源的IP地址验证一段时间内向服务器发送的请求是否来自同一请求源。如果该段时间内向服务器发送的请求所在地的IP地址相同,该请求来自同一请求源,高频次请求可使服务器认为该请求源为爬虫,阻止其信息采集。
本发明中,步骤2,通过代理IP发送模块021接收服务器提出的IP验证请求,并向代理IP管理模块022发送调取代理IP的请求,代理IP管理模块022由IP代理池023中获取随机代理IP后传送至代理IP发送模块021,经附加代理IP于HTTP请求头中,向服务器提供代理IP。通过随机UA和随机代理IP的组合以降低被识别的几率。所述代理IP是一种特殊的网络服务,允许请求源通过该服务与服务器进行非直接的连接,用于隐藏请求源的真实IP。
在一种优选的实施方式中,通过代理IP管理模块022利用免费网址或收费渠道获得大量的稳定代理IP,经检测有效后存入IP代理池023中。所述IP代理池023为存储代理IP的数据库。
然而,代理IP管理模块022获取的代理IP存在无效代理IP,获取代理IP后对代理IP进行检测,将可用代理IP存入IP代理池023中。所述无效代理IP为不能使用的代理IP。优选的,本发明人对经过大量实验,确定代理IP管理模块022检测代理IP有效性的核心代码为:telnetlib.Telnet('ip',port='80',timeout=10)。Telnet原理为:从字面可以看出它是“拨打电话”的意思,假如你可以设置自己的手机号,如果用这号码可以成功呼叫(Telnet)到某个人,则认为这个手机号是可用的。
Telnet远程登录服务分为以下4个过程:
1)本地与远程主机建立连接。该过程实际上是建立一个TCP连接,用户必须知道远程主机的Ip地址或域名;
2)将本地终端上输入的用户名和口令及以后输入的任何命令或字符以NVT(NetVirtual Terminal)格式传送到远程主机。该过程实际上是从本地主机向远程主机发送一个IP数据包;
3)将远程主机输出的NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果;
4)最后,本地终端对远程主机进行撤消连接。该过程是撤销一个TCP连接。
初始选择的代理IP的质量对互联网信息的收集效率、以及减轻后续对代理IP的管理压力至关重要。本发明中,通过代理IP管理模块022选择可存活较长时间的高质量代理IP放入IP代理池023中。
在进一步优选的实施方式中,通过代理IP管理模块022对IP代理池023中的代理IP进行监控,统计采用各代理IP的请求被网站拒绝或开放的次数,其中统计项目包括各代理IP访问的网站、拒绝次数、成功次数,还可包括拒绝请求的时间点和允许访问的时间点,并将统计结果存入代理IP数据存储模块024。具体地,代理IP访问效率统计如表2所示。
表2代理IP访问效率统计
代理IP目录 | 访问网站 | 拒绝次数 | 成功次数 |
182.46.242.6 | 丁香园 | 127 | 46 |
112.109.138.1 | 丁香园 | 56 | 224 |
117.79.93.39 | 丁香园 | 33 | 255 |
182.46.242.6 | 新浪微博 | 517 | 77 |
112.109.138.1 | 新浪微博 | 235 | 12 |
117.79.93.39 | 新浪微博 | 1567 | 4 |
117.79.93.42 | 新浪微博 | 0 | 0 |
在更进一步优选的实施方式中,通过代理IP数据存储模块024对其存储的数据按访问网站进行项目划分,在特定访问网站的项目下,根据拒绝次数或成功次数将代理IP数据排序,根据设定的拒绝次数和/或成功次数将排序后的代理IP数据分为高价值组、低价值组和无价值组,如将满足拒绝次数超过2000次、成功次数低于200次的代理IP数据分至低价值组,将满足拒绝次数超过5000次,成功次数不限次的代理IP数据分至无价值组,不满足上述条件的代理IP数据分至高价值组。在代理IP数据存储模块024中代理IP数据的排序、分组即相当于了对IP代理池023中代理IP的排序、分组。
代理IP发送模块021与代理IP管理模块022相关联,代理IP管理模块022分别和IP代理池023、代理IP数据存储模块024相关联,在代理IP发送模块021抽取代理IP时,代理IP管理模块022传递请求至IP代理池023和代理IP数据存储模块024,代理IP数据存储模块024根据要访问的网站进行数据查询,如果该网站为访问过的网站,则向代理IP管理模块022提供代理IP访问该网站效率的统计数据,代理IP管理模块022根据统计数据选择落入高价值组和/或低价值组的代理IP,优选将选择的代理IP按拒绝次数或其他参数进行排序后,依次提供给代理IP发送模块021;如果该网站为未访问过的网站,则向代理IP管理模块022提供空白数据,代理IP管理模块022直接对IP代理池023中代理IP进行抽取或者选择后排序,将代理IP逐个提供给代理IP发送模块021。
在另一种优选的实施方式中,步骤2为:通过IP代理池023采用ProxyPool技术独立进行代理IP的获取、存储和检测操作。IP代理池023包括代理获取接口(ProxyGetter)、代理IP存放模块(DB)、代理IP调度模块(Schedule)和代理池的外部接口(ProxyApi);
其中,代理获取接口(ProxyGetter)与代理源连接,由代理源获取最新代理IP存入代理IP存放模块;
IP存放模块,用于存放代理IP;
代理IP调度模块,用于监测IP存放模块中存储的代理IP的可用性,删除不可用的代理IP;
外部接口,用于与代理IP发送模块021连接,使代理IP发送模块021进行代理IP获取。
现有反爬技术中,服务器在根据UA头和IP确定同一请求源后,会根据一段时间内该请求源的请求频率是否过高或请求间隔是否规律判断是否为爬虫。请求间隔,即同一请求源向服务器连续发送两次请求的时间间隔。
针对请求间隔,本发明中,步骤3,通过请求间隔控制模块031控制请求源对服务器的请求间隔,使请求间隔随机化。请求间隔的范围确定的主要参考为客户端的网络带宽、目标网站的承受能力(服务器负载)、目标网站的反爬策略(如网站的最大允许访问频率即最小访问时间间隔)、目标网站的更新频率等,其中目标网站的反爬策略为最主要的限制因素。
在一种优选的实施方式中,通过请求间隔控制模块031测试目标网站的最大允许访问频率,以及记录请求源对目标网站的实际访问频率,根据算法公式Ti=Ti-1+Kp*(S-N),控制请求间隔。
其中,i为自然数,i=1,2,3,…,Ti是对第i次请求设定的延时时间,Ti-1是对第i-1次请求设定的延时时间;Kp为比例系数,为-0.05;S是设定的获取网站中网页信息的标准速度,如60页/分钟,其数值不高于测得的目标网站的最大允许访问频率;N是请求间隔控制模块031统计获得的请求源对目标网站的实际访问频率,单位为页/分钟。
具体地,请求间隔控制模块031对请求间隔的设定包括以下步骤:
(1)向网站服务器发送请求前,设定初始延时时间T0和获取网站中网页信息的标准速度S;
(2)获取网站信息开始后,统计对目标网站中网页的实际抓取速度N;
(3)对网页的实际抓取速度N和设定的标准速度S进行比较,跟据算法公式Ti=Ti-1+Kp*(S-N)确定下一次抓取信息的时间,即确定两次请求的时间间隔。
本发明中采用上述方法确定对服务器的请求间隔,不会由于盲目加快信息抓取速度给目标网站服务器造成过大的负载,也不会由于设定较大的请求间隔以避免访问太频繁而被服务器禁止所造成的网络利用率低的问题,同时由于对目标网站中网页的实际抓取速度N与请求源的网络带宽相关,不会造成在抓取过程中抓取速度过于规律导致的被服务器禁止的问题。
在一种优选的实施方式中,将请求间隔控制模块031与代理IP管理模块022相关联,请求间隔控制模块031将设定的获取网站中网页信息的标准速度S与目标网站的最大允许访问频率发送至代理IP管理模块022,代理IP管理模块022根据接收到的数据选择代理IP,依次提供给代理IP发送模块021。
当请求间隔控制模块031设定的获取网站中网页信息的标准速度S等于或接近目标网站的最大允许访问频率时,可采用高价值组内代理IP;当请求间隔控制模块031设定的获取网站中网页信息的标准速度S较大程度的低于目标网站的最大允许访问频率时,可采用低价值组内代理IP;当请求间隔控制模块031设定的获取网站中网页信息的标准速度S介于上述两种情况设定的标准速度之间时,可混合采用高价值组和低价值组内代理IP。例如,标准速度S与最大允许访问频率之比≥0.8时,代理IP管理模块022选择高价值组代理IP提供给代理IP发送模块021;标准速度S与最大允许访问频率之比≤0.35时,代理IP管理模块022选择低价值组代理IP提供给代理IP发送模块021;当标准速度S与最大允许访问频率之比介于0.35~0.8之间,代理IP管理模块022选择高价值组和低价值组代理IP组合后提供给代理IP发送模块021。
服务器基于数据安全等考虑,对于某些数据资源设置为需要相应授权才可查看,即授权状态验证。
基于授权状态验证,在一种实施方式中,本发明通过登录请求查询模块041确定服务器是否发送登录请求,若服务器发送登录请求则登录请求查询模块041将请求信号传送至链接拼接模块042,链接拼接模块042拼接登录链接后,将登录链接传送至自动登录模块044,自动登录模块044依照登录逻辑实现登录;若服务器未发送登录请求则登录请求查询模块041不进行信息传送及后续的自动登录模块044的相关登录操作。
其中,通过拼接登录链接依照登录逻辑实现登录的具体方法为:首先获取正常的登录链接,通过firebug或Fiddler等抓包工具,监听浏览器与服务器交互的过程,获取它们之间通讯链接地址列表,找到用来传递登录信息的链接,并观察它的构成方式,分析拼接规律,如登录某网时登录过程的链接列表如图2所示。
由图2中信息可以猜出http://a.com/seeyon/main.do?method=login就是登录链接,其携带的参数为(图右):
authorization=&power=2&login_username=***&login_password=***&random=&fontSize=12&screenWidth=1920&screenHeight=1080。可以看出login_username和login_password就是用户名和密码的参数名。所以拼接后的某网站的登录链接为http://a.com/seeyon/main.do?method=login&authorization=&power=2&login_username=用户名&login_password=密码&random=&fontSize=12&screenWidth=1920&screenHeight=1080。将该链接通过自动登录模块044发出就可以实现登录,而不必再打开网页手工输入用户名和密码。
在一种优选的实施方式中,链接拼接模块042对可成功登录相应网站的登录链接进行存储,在后续登录相应网站时直接调用存储的登录链接,节约链接拼接所用时间。
在另一种实施方式中,本发明通过登录请求查询模块041确定服务器是否发送登录请求,若服务器发送登录请求则登录请求查询模块041将请求传送至输入框定位模块043,输入框定位模块043获取目标网站登录窗口中相应输入框的URL(统一资源定位符),并将该URL输入自动登录模块044,自动登录模块044采用Selenium WebDriver+PhantomJs技术实现相应输入框内容的输入,并利用获取Cookie的核心代码获取Cookie,实现目标网站的自动登录;若服务器未发送登录请求则登录请求查询模块041不进行信号传送及后续的自动登录模块044的相关登录操作。
在一种优选的实施方式中,输入框定位模块043对相应网站登录用输入框的URL进行存储,在后续登录相应网站时直接调用存储的输入框URL,传送至自动登录模块044。
以登录新浪为例:人工获取新浪微博的登录窗口中用户名和密码输入框的URL,并将该两URL输入至自动登录模块044,然后自动登录模块044采用Selenium WebDriver+PhantomJs技术实现输入框中相应内容的输入,并利用获取Cookie的核心代码获取Cookie,实现目标网站的自动登录,Cookie的核心代码如图3所示,获取到cookie后,就相当于新浪微博网站认为请求源已经正常登陆了,然后就可以进行网站网页的浏览和信息抓取。
现有技术中还存在服务器对请求源的人工操作验证,其为验证登录、浏览、回复等操作是否为人工而设置的验证码障碍,主要目的是强制人机交互来抵御机器自动化攻击的。
本发明通过验证码请求查询模块051确定服务器是否发送验证码请求,若发送验证码请求则将请求信号传送至验证码识别模块052;若未发送请求,则验证码请求查询模块051不进行信号传送;
验证码识别模块052接收验证码请求查询模块051传送的请求信号,并通过OCR识别和机器学习实现验证码中文字识别,优选地,验证码识别模块052采用Python-tesseract技术实现验证码中文字的识别。
Python-tesseract是一款用于光学字符识别(OCR)的python工具,即从图片中识别出其中嵌入的文字。Python-tesseract是对Google Tesseract-OCR的一层封装。它也同时可以单独作为对tesseract引擎的调用脚本,支持使用PIL库(Python Imaging Library)读取的各种图片文件类型,包括jpeg、png、gif、bmp、tiff等格式。
验证码识别模块052对验证码中文字的识别过程为:
1.图像采集:获取验证码所在网页的信息,分析出验证码图片的URL,下载保存验证码图片;
2.预处理:对验证码图片进行压缩,切出验证码所在区域,并进行去除噪音、灰度化处理;
3.检测:检测文字在预处理后图片中所在的主要区域;
4.前处理:对验证码进行文字切割,分离出单独的各文字;
5.识别:调用代码:
image=Image.open('处理后的图片.png');
图片中的文字=pytesseract.image_to_string(image);
识别验证码中文字后,验证码识别模块052通过Selenium WebDriver+PhantomJs技术实现验证码输入框中相应内容的输入。
本发明的另一方面在于提供一种通用的互联网数据采集反反爬系统,如图4所示,所述反反爬系统包括UA验证单元01、IP验证单元02和间隔验证单元03;
其中,所述UA验证单元01包括:
UA头发送模块011,其接收服务器提出的UA验证请求,由UA头列表012中随机抽取UA头后,向服务器提供随机UA头;
UA头列表012,其用于存储UA头,并根据UA头载有的浏览器版本信息被UA头管理模块013划分成多个不同的UA头子列表;
UA头管理模块013,其用于在UA头列表012中构建UA头子列表,将载有相同浏览器不同版本信息的UA头划入同一个UA头子列表中,形成浏览器分组;并获取浏览器的最新版本信息,根据浏览器的最新版本信息对UA头列表012中的UA头进行信息更新。
所述IP验证单元02包括:
代理IP发送模块021,其用于接收服务器提出的IP验证请求,向代理IP管理模块022发送调取代理IP的请求,代理IP管理模块022由IP代理池023中获取随机代理IP后传送至代理IP发送模块021,经附加代理IP于HTTP请求头中后,向服务器提供代理IP;
IP代理池023,其用于存储代理IP;
代理IP管理模块022,其用于接收代理IP发送模块021发出的请求,对IP代理池023中代理IP进行调取,提供至代理IP发送模块021;代理IP管理模块022还通过代理IP源获得代理IP,检测获得的代理IP的有效性,将有效的代理IP存入IP代理池023;对IP代理池023中的代理IP进行监控,统计采用各代理IP的请求被网站拒绝或开放的次数,并将统计结果存入代理IP数据存储模块024;
代理IP数据存储模块024,其用于存储代理IP管理模块022统计得到的采用各代理IP的请求被网站拒绝或开放的统计数据。
所述间隔验证单元03包括:
请求间隔控制模块031,其用于控制请求源对服务器的请求间隔,使请求间隔随机化。
在一种优选的实施方式中,UA头列表012中包括模拟Windows Phone内置浏览器、Safari Windows浏览器、Safari Mac浏览器、iPad内置浏览器、iPhone6内置浏览器、IE6浏览器、IE7浏览器、IE10浏览器、IE11(winRT)浏览器、IE11(win8)浏览器、IE11(win10)浏览器、Edge浏览器、Opera浏览器、Firefox 3.6浏览器、Firefox 43浏览器、Firefox phone浏览器、Firefox Mac浏览器、Chrome浏览器、Chrome(android)浏览器、Chromebook内置浏览器、Kindle浏览器、以及GoogleBot的UA头。
在一种优选的实施方式中,UA头管理模块013还能通过获取最新的浏览器市场占有份额的数据,采用数组填充法对各UA头子列表中UA头被抽取的概率进行设定,使各UA头子列表中UA头被抽中的机率与其对应的浏览器的市场占有份额相符。
在一种优选的实施方式中,代理IP数据存储模块024中按访问网站进行项目划分,在特定访问网站的项目下,根据拒绝次数或成功次数将代理IP数据排序,根据设定的拒绝次数和/或成功次数将排序后的代理IP数据分为使用价值不等的组,如高价值组、低价值组和无价值组。
在一种优选的实施方式中,在代理IP发送模块021抽取代理IP时,代理IP管理模块022传递请求至IP代理池023和代理IP数据存储模块024,代理IP数据存储模块024根据要访问的网站进行数据查询,如果该网站为访问过的网站,则向代理IP管理模块022提供代理IP访问该网站效率的统计数据,代理IP管理模块022根据统计数据选择落入高价值组和/或低价值组的代理IP,并将选择的代理IP进行排序,依次提供给代理IP发送模块021;如果该网站为未访问过的网站,则向代理IP管理模块022提供空白数据,代理IP管理模块022直接对IP代理池023中代理IP进行抽取或者选择后排序,提供给代理IP发送模块021。
在一种优选的实施方式中,请求间隔控制模块031测试目标网站的最大允许访问频率,以及记录请求源对目标网站的实际访问频率,根据算法公式Ti=Ti-1+Kp*(S-N),控制请求间隔。
其中,i为自然数,i=1,2,3,…,Ti是对第i次请求设定的延时时间,Ti-1是对第i-1次请求设定的延时时间;Kp为比例系数,为-0.05;S是设定的获取网站中网页信息的标准速度,其数值不高于测得的目标网站的最大允许访问频率,单位为页/分钟;N是请求间隔控制模块031统计获得的请求源对目标网站的实际访问频率,单位为页/分钟。
在一种优选的实施方式中,请求间隔控制模块031可与代理IP管理模块022相关联,请求间隔控制模块031将设定的获取网站中网页信息的标准速度S与目标网站的最大允许访问频率发送至代理IP管理模块022,代理IP管理模块022根据接收到的数据选择代理IP,依次提供给代理IP发送模块021。
本发明中,所述反反爬系统还包括授权状态验证单元04,所述授权状态验证单元04以拼接登录链接模式或者内置无界面浏览器模式实施登录;
当授权状态验证单元04以拼接登录链接模式登录时,授权状态验证单元04包括:
登录请求查询模块041,其用于确定服务器是否发送登录请求,若服务器发送登录请求则登录请求查询模块041将请求信号传送至链接拼接模块042;若服务器未发送登录请求则登录请求查询模块041不进行信号传送及后续自动登录模块044的相关登录操作;
链接拼接模块042,其接收登录请求查询模块041传送的请求信号,拼接目标网站的登录链接,将登录链接传送至自动登录模块044;
自动登录模块044,其接收链接拼接模块042传送的登录链接后依照登录逻辑实现登录。
当授权状态验证单元04以内置无界面浏览器模式登录时,授权状态验证单元04包括:
登录请求查询模块041,其用于确定服务器是否发送登录请求,若服务器发送登录请求则登录请求查询模块041将请求信号传送至输入框定位模块043;若服务器未发送登录请求则登录请求查询模块041不进行信号传送及后续的自动登录模块044的相关登录操作;
输入框定位模块043,其接收登录请求查询模块041传送的请求信号后,获取目标网站登录窗口中相应输入框的URL并将该URL输入自动登录模块044;
自动登录模块044,其采用Selenium WebDriver+PhantomJs技术实现相应输入框内容的输入,并利用获取Cookie的核心代码获取Cookie,实现目标网站的自动登录。
本发明中,所述反反爬系统还包括验证码识别单元05,所述验证码识别单元05包括:
验证码请求查询模块051,其用于确定服务器是否发送验证码请求,若发送验证码请求则将请求信号传送至验证码识别模块052;若服务器未发送请求,则验证码请求查询模块051不进行信号传送;
验证码识别模块052,其接收验证码请求查询模块051传送的请求信号,通过OCR识别和机器学习对验证码进行文字识别,再通过Selenium WebDriver+PhantomJs技术实现验证码输入框中相应内容的输入。
实施例
采用本发明中提供的反反爬方法获取FaceBook和新浪微博网页信息:
1、通过UA头发送模块011接收服务器提出的UA验证请求,从UA头列表012中随机抽取UA头,向服务器提供随机UA头;其中,UA头列表012中UA头根据载有的浏览器版本信息通过UA头管理模块013划分入不同的UA头子列表,各UA头子列表中UA头被抽中的机率与其对应的浏览器的市场占有份额相符;UA头列表012如表1所示;
2、通过代理IP发送模块021接收服务器提出的IP验证请求,并向代理IP管理模块022发送调取代理IP的请求,代理IP管理模块022由IP代理池023中获取随机代理IP后传送至代理IP发送模块021,经附加代理IP于HTTP请求头中后,向服务器提供代理IP;其中,IP代理池023中根据设定的拒绝次数和成功次数将排序后的代理IP分为高价值组、低价值组和无价值组,当请求间隔控制模块031设定的获取网站中网页信息的标准速度S与目标网站的最大允许访问频率之比≥0.8时,代理IP管理模块022选择高价值组代理IP提供给代理IP发送模块021;标准速度S与最大允许访问频率之比≤0.35时,代理IP管理模块022选择低价值组代理IP提供给代理IP发送模块021;当标准速度S与最大允许访问频率之比介于0.35~0.8之间,代理IP管理模块022选择高价值组和低价值组代理IP组合后提供给代理IP发送模块021;
3、请求间隔控制模块031测试目标网站的最大允许访问频率为40页/分钟,根据算法公式Ti=Ti-1+Kp*(S-N),控制请求间隔,其中,Kp为-0.05,S为35页/分钟,此时,代理IP管理模块022选择高价值组代理IP提供给代理IP发送模块021;
4、登录请求查询模块041接收服务器发送的登录请求,并将请求信号传送至输入框定位模块043,由于已经登录过新浪微博,输入框定位模块043接收登录请求查询模块041传送的请求信号后,将存储的“用户名”“密码”输入框的URL输入自动登录模块044,自动登录模块044采用Selenium WebDriver+PhantomJs技术实现输入框相应内容的输入,并利用获取Cookie的核心代码获取Cookie,实现目标网站的自动登录,Cookie的核心代码如图3所示;
5、验证码请求查询模块051接收服务器发送的登录请求,并将请求信号传送至验证码识别模块052,验证码识别模块052接收验证码请求查询模块051传送的请求信号,通过OCR识别和机器学习对验证码进行文字识别,再通过Selenium WebDriver+PhantomJs技术实现验证码输入框中相应内容的输入;
6、通过信息获取模块采用分布式跨省跨机房利用非对称数字用户线路(ADSL)进行网页信息获取。
对比方法
1、通过UA头发送模块011接收服务器提出的UA验证请求,从UA头列表012中随机抽取UA头,向服务器提供随机UA头;其中,UA头列表012中UA头不进行抽取概率设置,为完全随机抽取方式;UA头列表012如表1所示;
2、通过代理IP发送模块021接收服务器提出的IP验证请求,并向代理IP管理模块022发送调取代理IP的请求,代理IP管理模块022由IP代理池023中获取随机代理IP后传送至代理IP发送模块021,经附加代理IP于HTTP请求头中,向服务器提供代理IP;
3、请求间隔控制模块031测试目标网站的最大允许访问频率为40页/分钟,固定请求间隔为3秒,此时,代理IP管理模块022选择随机选择IP代理池023中的代理IP提供给代理IP发送模块021;
4、登录请求查询模块041接收服务器发送的登录请求,并将请求信号传送至输入框定位模块043,由于已经登录过新浪微博,输入框定位模块043接收登录请求查询模块041传送的请求信号后,将存储的“用户名”“密码”输入框的URL输入自动登录模块044,自动登录模块044采用网络链接抓包分析技术实现输入框相应内容的输入,并利用获取Cookie的核心代码获取Cookie,实现目标网站的自动登录,Cookie的核心代码如图3所示;
5、验证码请求查询模块051接收服务器发送的登录请求,并将请求信号传送至验证码识别模块052,验证码识别模块052接收验证码请求查询模块051传送的请求信号,通过OCR识别和机器学习对验证码进行文字识别,再通过Selenium WebDriver+PhantomJs技术实现验证码输入框中相应内容的输入。
6、通过信息获取模块采用分布式跨省跨机房利用非对称数字用户线路(ADSL)进行网页信息获取。
采用上述本发明方法后,因为不再轻易被FaceBook拒绝访问,所以可以大胆采集,从而提高了采集效率,下表3和表4为使用本发明的技术后采集效率与对比方法的对比:
以采集FaceBook为例,如果被FaceBook认定为爬虫,则爬虫使用的ip就被拉入黑名单,使用此ip将无法登录和注册FaceBook,打开任何FaceBook网页都会被要求验证账户合法性。
表3
对比方法 | 本发明方法采用后 | |
采集陌生人的短文条数 | 不能查看 | <1000条 |
采集朋友的短文条数 | <100 | <2000条 |
查看评论 | 不能查看 | 无限制 |
采集关系圈 | 2度 | 4度 |
采用本发明方法和对比方法获取新浪微博网页信息。以100个爬虫进程为例:
表4
对比方法 | 本发明方法采用后 | |
单个ip有效时间 | 5天 | 30天 |
平均采集间隔 | >10s | <5s |
采集短文条数 | <50,000条 | <100,000条 |
查看全文 | 不能查看 | 无限制 |
查看评论 | 不能查看 | 无限制 |
以上结合了优选的实施方式对本发明进行了说明,不过这些实施方式仅是范例性的,仅起到说明性的作用。在此基础上,可以对本发明进行多种替换和改进,这些均落入本发明的保护范围内。
Claims (2)
1.一种通用的互联网数据采集反反爬方法,其特征在于,该方法包括以下步骤:
步骤1:通过UA头发送模块(011)接收服务器提出的UA验证请求,从UA头列表(012)中随机抽取UA头,向服务器提供随机UA头;
步骤2:通过代理IP发送模块(021)接收服务器提出的IP验证请求,并向代理IP管理模块(022)发送调取代理IP的请求,代理IP管理模块(022)从IP代理池(023)中获取随机代理IP后传送至代理IP发送模块(021),经附加代理IP于HTTP请求头中后,向服务器提供代理IP;
步骤3:通过请求间隔控制模块(031)控制请求源对服务器的请求间隔,使请求间隔随机化;
步骤4:通过登录请求查询模块(041)确定服务器是否发送登录请求,若服务器发送登录请求,通过自动登录模块(044)以拼接登录链接模式或者内置无界面浏览器模式实施网站登录;若服务器未发送登录请求,则登录请求查询模块(041)不进行信号传送及后续自动登录模块(044)不进行相关登录操作;
步骤5:通过验证码请求查询模块(051)确定服务器是否发送验证码请求,若服务器发送验证码请求,则验证码请求查询模块(051)将请求信号传送至验证码识别模块(052),验证码识别模块(052)接收验证码请求查询模块(051)传送的请求信号,对验证码进行文字识别,并进行验证码文字输入;若服务器未发送验证码请求,则验证码请求查询模块(051)不进行信号传送;
步骤1中,还包括通过UA头管理模块(013)在UA头列表(012)中构建UA头子列表,将UA头列表(012)中载有相同浏览器不同版本信息的UA头划入同一个UA头子列表中,形成浏览器分组;
通过UA头管理模块(013)获取浏览器的最新版本信息,并对UA头列表(012)中的UA头进行更新,获得更新后的UA头列表(012);
通过UA头管理模块(013)获取最新的浏览器市场占有份额的数据,采用数组填充法对各UA头子列表中UA头被抽取的概率进行设定,使各UA头子列表中UA头被抽取的概率与其对应的浏览器的市场占有份额相符;
步骤2中,还包括通过代理IP管理模块(022)利用免费网址或收费渠道获得大量的稳定代理IP,经检测有效后存入IP代理池(023)中;
其中,代理IP管理模块(022)检测代理IP有效性的核心代码为:telnetlib.Telnet('ip',port='80',timeout=10);
通过代理IP管理模块(022)对IP代理池(023)中的代理IP进行监控,统计采用各代理IP的请求被网站拒绝或开放的次数,其中统计项目包括各代理IP访问的网站、拒绝次数、成功次数,还包括拒绝请求的时间点和允许访问的时间点,并将统计结果存入代理IP数据存储模块(024);
通过代理IP数据存储模块(024)对其存储的数据按访问网站进行项目划分,在特定访问网站的项目下,根据拒绝次数或成功次数将代理IP数据排序,根据设定的拒绝次数和/或成功次数将排序后的代理IP数据分为高价值组、低价值组和无价值组;
步骤3中,将请求间隔控制模块(031)与代理IP管理模块(022)相关联,请求间隔控制模块(031)将设定的获取网站中网页信息的标准速度S与目标网站的最大允许访问频率发送至代理IP管理模块(022),代理IP管理模块(022)根据接收到的数据选择代理IP,依次提供给代理IP发送模块(021);
当请求间隔控制模块(031)设定的获取网站中网页信息的标准速度S等于或接近目标网站的最大允许访问频率时,采用高价值组内代理IP;当请求间隔控制模块(031)设定的获取网站中网页信息的标准速度S较大程度的低于目标网站的最大允许访问频率时,采用低价值组内代理IP;当请求间隔控制模块(031)设定的获取网站中网页信息的标准速度S介于上述两种情况设定的标准速度之间时,混合采用高价值组和低价值组内代理IP;
步骤4中,以拼接登录链接模式登陆的过程为:
通过登录请求查询模块(041)确定服务器是否发送登录请求,若服务器发送登录请求,则登录请求查询模块(041)将请求信号传送至链接拼接模块(042),链接拼接模块(042)拼接登录链接后,将登录链接传送至自动登录模块(044),自动登录模块(044)依照登录逻辑实现登录;若服务器未发送登录请求,则登录请求查询模块(041)不进行信号传送,及后续自动登录模块(044)不进行相关登录操作;
以内置无界面浏览器模式登陆的过程为:
通过登录请求查询模块(041)确定服务器是否发送登录请求,若服务器发送登录请求则登录请求查询模块(041)将请求信号传送至输入框定位模块(043),输入框定位模块(043)获取目标网站登录窗口中相应输入框的URL,并将该URL发送至自动登录模块(044),自动登录模块(044)采用Selenium WebDriver+PhantomJs技术实现相应输入框内容的输入,并利用获取Cookie的核心代码获取Cookie,实现目标网站的自动登录;若服务器未发送登录请求则登录请求查询模块(041)不进行信号传送,及后续自动登录模块(044)不进行相关登录操作。
2.根据权利要求1所述的方法,其特征在于,步骤3中,还包括通过请求间隔控制模块(031)测试目标网站的最大允许访问频率,以及记录请求源对目标网站的实际访问频率,根据算法公式Ti=Ti-1+Kp*(S-N),控制请求间隔;
其中,i为自然数,i=1,2,3,…;
Ti是对第i次请求设定的延时时间;
Ti-1是对第i-1次请求设定的延时时间;
Kp为比例系数,为-0.05;
S是设定的获取目标网站中网页信息的标准速度,单位为页/分钟;
N是请求间隔控制模块(031)统计获得的请求源对目标网站的实际访问频率,单位为页/分钟。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711037128.5A CN109729044B (zh) | 2017-10-30 | 2017-10-30 | 一种通用的互联网数据采集反反爬系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711037128.5A CN109729044B (zh) | 2017-10-30 | 2017-10-30 | 一种通用的互联网数据采集反反爬系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109729044A CN109729044A (zh) | 2019-05-07 |
CN109729044B true CN109729044B (zh) | 2022-01-14 |
Family
ID=66291906
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711037128.5A Active CN109729044B (zh) | 2017-10-30 | 2017-10-30 | 一种通用的互联网数据采集反反爬系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109729044B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113723980A (zh) * | 2020-05-26 | 2021-11-30 | 北京达佳互联信息技术有限公司 | 广告落地页的检测方法、装置、电子设备及存储介质 |
CN111756850B (zh) * | 2020-06-29 | 2022-01-18 | 金电联行(北京)信息技术有限公司 | 一种服务于互联网数据采集的代理ip请求频率自动调整方法及系统 |
CN111787024B (zh) * | 2020-07-20 | 2023-08-01 | 杭州安恒信息安全技术有限公司 | 网络攻击证据的搜集方法、电子装置及存储介质 |
CN111865977A (zh) * | 2020-07-20 | 2020-10-30 | 北京丁牛科技有限公司 | 一种信息处理方法及系统 |
CN112528117B (zh) * | 2020-12-11 | 2023-03-14 | 杭州安恒信息技术股份有限公司 | 一种政务网站一级目录的识别方法及相关装置 |
CN114021668A (zh) * | 2021-11-29 | 2022-02-08 | 北京天融信网络安全技术有限公司 | 网站反爬机制自动化检测方法、装置、设备及存储介质 |
CN116132534B (zh) * | 2022-07-01 | 2024-03-08 | 马上消费金融股份有限公司 | 业务请求的存储方法、装置、设备及存储介质 |
CN115242491B (zh) * | 2022-07-19 | 2024-04-19 | 厦门市美亚柏科信息股份有限公司 | 一种基于网络爬虫的app云探测方法和系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004006499A1 (en) * | 2002-07-02 | 2004-01-15 | America Online Incorporated | Seamless cross-site user authentication status detection and automatic login |
CN101815060B (zh) * | 2009-02-23 | 2015-01-07 | 传线网络科技(上海)有限公司 | 互联网内容发布网络防盗链方法 |
US9258289B2 (en) * | 2013-04-29 | 2016-02-09 | Arbor Networks | Authentication of IP source addresses |
CN103281457B (zh) * | 2013-06-03 | 2016-08-10 | 贝壳网际(北京)安全技术有限公司 | 一种移动终端浏览器中视频播放方法及装置 |
CN105956175B (zh) * | 2016-05-24 | 2017-09-05 | 考拉征信服务有限公司 | 网页内容爬取的方法和装置 |
CN107025296B (zh) * | 2017-04-17 | 2018-11-06 | 山东辰华科技信息有限公司 | 基于科技服务信息智能抓取系统数据收集方法 |
-
2017
- 2017-10-30 CN CN201711037128.5A patent/CN109729044B/zh active Active
Non-Patent Citations (4)
Title |
---|
基于Java平台的分布式网络爬虫系统研究;郑豪等;《科技创新与应用》;20170108(第1期);第112页 * |
教育新闻平台的优化设计与实现;何俊杰;《中国优秀硕士学位论文全文数据库 信息科级辑》;20170215;第3章第3.4节 * |
爬虫间隔抓取服务器网页;路过你的苦;《https://www.cnblogs.com/siliconvalley/archive/2013/05/27/3102709.html》;20130527;第1-5页 * |
网络爬虫针对"反爬"网站的爬取策略研究;邹科文等;《电脑知识与技术》;20160511;第12卷(第7期);第61-63页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109729044A (zh) | 2019-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109729044B (zh) | 一种通用的互联网数据采集反反爬系统及方法 | |
CN113098870B (zh) | 一种网络诈骗检测方法、装置、电子设备及存储介质 | |
US9300683B2 (en) | Identifying bots | |
CN109981653B (zh) | 一种web漏洞扫描方法 | |
US20180248879A1 (en) | Method and apparatus for setting access privilege, server and storage medium | |
CN104113519A (zh) | 网络攻击检测方法及其装置 | |
KR100848319B1 (ko) | 웹 구조정보를 이용한 유해 사이트 차단 방법 및 장치 | |
CN109688097A (zh) | 网站防护方法、网站防护装置、网站防护设备及存储介质 | |
CN103581909B (zh) | 一种疑似手机恶意软件的定位方法及其装置 | |
US10462257B2 (en) | Method and apparatus for obtaining user account | |
KR101329034B1 (ko) | 에스엔에스 검색 서비스를 이용한 유알엘 수집 시스템 및 방법 | |
CN114338064B (zh) | 识别网络流量类型的方法、装置、系统、设备和存储介质 | |
RU2701040C1 (ru) | Способ и вычислительное устройство для информирования о вредоносных веб-ресурсах | |
US20170017695A1 (en) | Question and answer information providing system, information processing device, and non-transitory computer-readable medium | |
CN114422211B (zh) | 基于图注意力网络的http恶意流量检测方法及装置 | |
CN103457909A (zh) | 一种僵尸网络检测方法及装置 | |
CN104618388B (zh) | 快速注册登录方法及对应的重置服务器、信息服务器 | |
CN111859234A (zh) | 一种非法内容识别方法、装置、电子设备及存储介质 | |
CN111723083B (zh) | 用户身份识别方法、装置、电子设备及存储介质 | |
CN111245838A (zh) | 一种反爬虫保护关键信息的方法 | |
CN111371778A (zh) | 攻击团伙的识别方法、装置、计算设备以及介质 | |
CN103488947A (zh) | 即时通信客户端盗号木马程序的识别方法及装置 | |
KR101329040B1 (ko) | 에스엔에스 트랩 수집 시스템 및 그에 의한 유알엘 수집 방법 | |
CA3122975A1 (en) | Network device identification | |
CN113810381A (zh) | 一种爬虫检测方法、web应用云防火墙、装置和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |