System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种突破服务器接口访问限制的爬虫实现方法及系统技术方案_技高网

一种突破服务器接口访问限制的爬虫实现方法及系统技术方案

技术编号:43686004 阅读:30 留言:0更新日期:2024-12-18 21:05
本发明专利技术属于网络爬虫的技术领域,公开了一种突破服务器接口访问限制的爬虫实现方法及系统。该系统的任务池存储各个爬取目标链接、名称等信息,爬虫调度服务器负责各个模块之间信息数据交流,客户端负责接收任务信息,生成具体请求,下载器负责发送具体请求,返回响应数据,存储器将数据存入数据库或者本地文本文件。本发明专利技术依据庞大的真实设备指纹与IP解决爬虫调度服务器接口访问限制,从而来实现爬虫稳定、高效的抓取信息数据。

【技术实现步骤摘要】

本专利技术属于网络爬虫的,尤其涉及一种突破服务器接口访问限制的爬虫实现方法及系统


技术介绍

1、网络爬虫(又被称为网页蜘蛛,网络机器人,在foaf社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。

2、在互联上抓取用户的信用数据是信用评级的重要手段,例如从支付宝网站抓取的交易记录就能从侧面反映出用户的经济实力。但在抓取这些信息时也遇到了人为设置的技术障碍。

3、有些网站为了防止爬虫抓取信息,做了ip限制。例如限定单个ip在每分钟内只能访问100次,那么一台爬虫调度服务器在每分钟内只能发起100次网络请求,当发起第101个请求时则会被目标服务器拒绝。

4、目前对于上述限制普遍的解决方法是增加服务器从而增加ip地址的数量。例如限定单个ip每分钟内只能访问100次,那么将ip数量增加到500个,就可以达到50000次请求每分钟。这样做虽能解决问题,但花销巨大,很不经济。

5、常见突破访问限制的网络爬虫通常有以下方法。

6、(1)构造合理的http请求头:虽然网站可能会对http请求头的每个属性都进行检查,但是通常真正重要的参数就是user-agent。无论是什么样的爬虫,一定要记得把user-agent属性设置成不容易引起怀疑的内容,比如如果你用python的urllib标准库时,它的user-agent可能就会是python-urllib/3.4,这样就很容易被禁。另外,如果你正在处理一个警觉性非常高的网站,就要注意那些经常用却很少检查的请求头,比如accept-language属性,也许它正是那个网站判断你是否是人类访问者的关键。还有一部分网站会对referer进行检测,比如一些资源网站的防盗链就是检测referer。如果遇到了这类反爬虫机制,可以直接在爬虫中添加headers,将浏览器的user-agent复制到爬虫的headers中;或者将referer值修改为目标网站域名。对于检测headers的反爬虫,在爬虫中修改或者添加headers就能很好的绕过。

7、(2)设置cookie:cookie其实是储存在用户终端的一些被加密的数据,有些网站通过cookies来识别用户身份,如果某个访问总是高频率地发请求,很可能会被网站注意到,被怀疑为爬虫,这时网站就可以通过cookie找到这个访问的用户而拒绝其访问。对于这种情况可以通过禁用cookie,主动阻止服务器写入。禁用cookie可以防止使用cookies识别爬虫的网站来禁掉。但是采集某些网站时cookie是不可或缺的。要在一个网站上持续保持登录状态,需要在多个页面中保存一个cookie。有些网站不要求在每次登录时都获得一个新cookie,只要保存一个旧的已登录的cookie就可以访问。

8、(3)降低访问频率:为了提高爬虫的效率,很多人在爬虫中使用多线程、异步等手段,使得爬虫在一个小时内甚至可以访问数十万次页面,给服务器带来了不小的压力,因此有一些防护措施较完备的网站就可能会阻止快速地提交表单,或者快速地与网站进行交互。即使没有这些安全措施,用一个比普通人快很多的速度从一个网站下载大量信息也可能被网站阻隔。对于这种网站,如果对爬虫效率要求不高,可以尝试降低爬虫访问速度,比如不再使用多线程技术,每次访问后设置等待时间,限制每小时访问量等。

9、(4)动态页面的反爬虫:上述的几种情况大多都是出现在静态页面,还有一部分网站,需要爬取的数据是通过ajax请求得到,或者通过javascript生成的。对于这种情况,首先需要对网络请求进行分析,如果能够找到ajax请求,也能分析出具体的参数和响应的具体含义,就能采用上面的方法,直接模拟ajax请求,对响应的json进行分析得到需要的数据。如果这种方法不行,或者需要处理js,那么则可以采用selenium+phantomjs。phantomjs是一个无界面的webkit浏览器,除了没有界面,基本和一般的浏览器一样。selenium是一个自动化测试工具,它可以驱动浏览器,两者结合,双剑合璧,从填写表单到点击按钮再到滚动页面,全部都可以模拟,不考虑具体的请求和响应过程,只是完完整整的把人浏览页面获取数据的过程模拟一遍。用这套框架几乎能绕过大多数的反爬虫,因为它不是在伪装成浏览器来获取数据(上述的通过添加headers一定程度上就是为了伪装成浏览器),phantomjs本身就是一个没有界面的浏览器,只是操控这个浏览器的不是人而是程序。利用selenium+phantomjs能干很多事情,cookie、javascript、header都能自动处理,比如现在比较流行的滑动式验证码,就可以使用它们解决。

10、(5)使用代理:网络爬虫几乎所有的数据都是伪造的,但是有一项却是不能作假的,那就是ip地址。因此很多网站为了防爬虫,制定了一系列规则去封杀ip,简单粗暴又十分有效。如果ip地址被封,则可以应用代理。所谓代理就是介于用户与网站之间的第三者:用户先将请求发到代理,然后代理再发到服务器,则认为代理在访问那个网站。这时,服务器会将这次访问认为时代理头。同时用多个代理时,单个ip的访问量就降下去。例如,http://www.ip181.com是一个可以检测代理ip的网站,它可以检测出使用的ip是什么,正好可以用来检验自己是否使用代理ip成功。如果有多个代理ip,那么可以建立一个ip池,每次随机从ip池中选择一个进行访问,如果访问失败了,则将其从池中去除即可。

11、(6)应用分布式爬虫:通常服务器都会收集客户端大量设备、行为等信息,通过自有的算法生成客户端唯一身份标识,最后依据这一身份id经过大模型训练判断该客户端访问接口行为是否是爬虫,从而限制其获取有效数据,为避免这一情况就可以依托大批量设备或者其他真实客户端来突破访问总量限制。

12、通过上述分析,现有技术存在的问题及缺陷为:现有技术在实现大批量、高并发、高质量的爬取数据时,显得十分不稳定,系统健壮性低、可扩展性差、代码冗余量高、可用性低等问题。


技术实现思路

1、为克服相关技术中存在的问题,本专利技术公开实施例提供了一种突破服务器接口访问限制的爬虫实现方法及系统。

2、所述技术方案如下:突破服务器接口访问限制的爬虫实现方法,该方法批量生成各页面抓取任务并分发到客户端,依赖客户端提供的设备指纹与ip突破爬虫调度服务器访问限制,保持稳定、可持续、可扩展的数据抓取,具体包括以下步骤:

3、s1,爬虫调度服务器从任务池取出任务,依次检查客户端在线状态并按序下发任务到客户端上;

4、s2,客户端依据任务信息生成完整请求,给到下载器;

5、s3,下载器处理请求并设置包括最大超时时间处理、各类编码处理、异常回调处理在内的响应处理结果,将结果返回爬虫调度服务器;

6、s4,爬虫调度服务器抽取、清洗数据到存储器;

7、s5,存储器依据需要存入数据库或文本导出。本文档来自技高网...

【技术保护点】

1.一种突破服务器接口访问限制的爬虫实现方法,其特征在于,该方法批量生成各页面抓取任务并分发到客户端,依赖客户端提供的设备指纹与IP突破爬虫调度服务器访问限制,保持稳定、可持续、可扩展的数据抓取,具体包括以下步骤:

2.根据权利要求1所述的突破服务器接口访问限制的爬虫实现方法,其特征在于,在步骤S1中,爬虫调度服务器收集各个任务信息,包含目标链接、名称、周期性与一次性设置、每次请求最大时间、最大访问次数、是否切换客户端;对上述信息进行md5摘要算法,得到一个值,存入任务池中,依据集合特性,保证每个任务的唯一性;

3.根据权利要求1所述的突破服务器接口访问限制的爬虫实现方法,其特征在于,在步骤S2中,客户端在获取到任务后,依据各个任务信息构建完整的请求体;其中,任务信息包含ua、cookies基础信息,设备指纹、站点IP信息、以及app的标识信息;发给下载器并标记任务处于等待状态。

4.根据权利要求1所述的突破服务器接口访问限制的爬虫实现方法,其特征在于,在步骤S3中,下载器拿到请求体后,设置请求超时时间与最大尝试次数,为每一个任务设置异常回调方法,避免异常终止系统运行,发送请求并通过标准化接口返回数据给爬虫调度服务器,依据响应状态码标记任务执行状态,对于失败次数达到最大次数的任务,回到任务池中另一个队列,等待下一次触发执行;

5.根据权利要求4所述的突破服务器接口访问限制的爬虫实现方法,其特征在于,设置异常回调方法,包括:

6.根据权利要求5所述的突破服务器接口访问限制的爬虫实现方法,其特征在于,在步骤一中,构建不同任务的二维回调模型,包括:

7.根据权利要求5所述的突破服务器接口访问限制的爬虫实现方法,其特征在于,在步骤一中,进行正演得到运行正常数据,包括:

8.根据权利要求1所述的突破服务器接口访问限制的爬虫实现方法,其特征在于,在步骤S4中,爬虫调度服务器在获取到下载器返回数据后,对数据进行抽取、过滤、清洗,发送给存储器,该任务未达到最大请求次数下,如果下载器返回数据异常,则依据任务设置信息选择是否切换客户端继续执行任务。

9.根据权利要求1所述的突破服务器接口访问限制的爬虫实现方法,其特征在于,在步骤S5中,存储器获取到爬虫调度服务器发送的数据,依据各类型关系型与非关系型数据库API,存储或者更新当前该条数据,同时支持依据任务ID在线导出本地文本文件。

10.一种突破服务器接口访问限制的爬虫实现系统,其特征在于,该系统实施权利要求1-9任意一项所述的突破服务器接口访问限制的爬虫实现方法,该系统包括:

...

【技术特征摘要】

1.一种突破服务器接口访问限制的爬虫实现方法,其特征在于,该方法批量生成各页面抓取任务并分发到客户端,依赖客户端提供的设备指纹与ip突破爬虫调度服务器访问限制,保持稳定、可持续、可扩展的数据抓取,具体包括以下步骤:

2.根据权利要求1所述的突破服务器接口访问限制的爬虫实现方法,其特征在于,在步骤s1中,爬虫调度服务器收集各个任务信息,包含目标链接、名称、周期性与一次性设置、每次请求最大时间、最大访问次数、是否切换客户端;对上述信息进行md5摘要算法,得到一个值,存入任务池中,依据集合特性,保证每个任务的唯一性;

3.根据权利要求1所述的突破服务器接口访问限制的爬虫实现方法,其特征在于,在步骤s2中,客户端在获取到任务后,依据各个任务信息构建完整的请求体;其中,任务信息包含ua、cookies基础信息,设备指纹、站点ip信息、以及app的标识信息;发给下载器并标记任务处于等待状态。

4.根据权利要求1所述的突破服务器接口访问限制的爬虫实现方法,其特征在于,在步骤s3中,下载器拿到请求体后,设置请求超时时间与最大尝试次数,为每一个任务设置异常回调方法,避免异常终止系统运行,发送请求并通过标准化接口返回数据给爬虫调度服务器,依据响应状态码标记任务执行状态,对于失败次数达到最大次数...

【专利技术属性】
技术研发人员:周伟中刘建文潘闯界周子文翁浩杰饶晓辉
申请(专利权)人:深圳市网联安瑞网络科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1