1.本发明涉及计算机应用设计领域,特别涉及一种确定可复用代理队列的方法、装置、终端及存储介质。
背景技术:2.任何网络在建设的时候,一般会采取保护性的措施,这些保护措施当中,最常见的一种保护措施,就是限制每个ip的访问频率,也就是说,单位时间内一个ip在目标网站上获取的信息是非常有限的。
3.但是在采集网络数据的时候,目标网络的这种保护机制就会导致信息的获取效率不高,难以将目标网站上的信息进行全面的采集。
4.为了解决这种采集网络数据过程中出现的问题,现有技术通常采用ip代理池的方法或随机隧道代理的方法。但是现有的方案中,往往存在管理效率较低、连接速度不理想、线程不安全等一系列问题。
技术实现要素:5.本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种确定可复用代理队列的方法,能够提供一种高并发可控性且处理迅速的方案。
6.本发明还提出一种确定可复用代理队列的设备、终端及存储介质。
7.根据本发明第一方面实施例的确定可复用代理队列的方法,其特征在于,包括以下步骤:
8.获取来自客户端的访问请求;
9.确定适用于所述访问请求的当前代理环境;
10.基于所述当前代理环境向目标网站发送所述访问请求,依据所述目标网站的响应消息判断所述当前代理环境是否适用于所述目标网站;
11.如果所述当前代理环境适用于所述目标网站,则将所述当前代理环境保存至所述目标网站对应的可复用代理环境队列。
12.根据本发明实施例的确定可复用代理队列的方法,至少具有如下有益效果:在给客户端分配好代理环境并访问请求之后,能够根据目标网站的响应消息给每个目标网站建立一个对应的可复用代理环境队列,从而确保后续访问目标网站的客户端,能够从可复用代理队列中选取已经处理好的,可以直接使用的代理环境,从而提高访问效率。
13.根据本发明的一些实施例,所述确定适用于所述访问请求的当前代理环境的步骤,包括:
14.确定所述访问请求将要访问的目标网站,获取所述目标网站对应的可复用代理环境队列;
15.若所述可复用代理环境队列中存在可用的代理环境,则从所述可复用代理环境队列选择代理环境作为当前代理环境;
16.若所述可复用代理环境队列中不存在可用的代理环境,则从可用代理队列中选择不在黑名单或灰名单当中的代理,作为当前代理环境,其中所述黑名单中记录有不适用于所述目标网站的代理,所述灰名单中记录有正在被使用的代理。
17.根据本发明的一些实施例,所述从可用代理队列中选择不在黑名单或灰名单当中的代理,作为当前代理环境的步骤,包括:
18.从可用代理队列中选择不在黑名单或灰名单当中的代理;
19.将所述代理与所述目标网站的网站信息进行组合,将组合结果作为对应于所述目标网站的当前代理环境。
20.根据本发明的一些实施例,确定所述可用代理队列的步骤,包括:
21.从第三方代理商获取来源代理并置入代理池;
22.确定代理池中每个所述来源代理的响应速度级别;
23.使用每个所述来源代理的响应速度级别作为存储优先级,将所述来源代理定时存储到可用代理队列当中。
24.根据本发明的一些实施例,所述依据所述目标网站的响应消息判断所述当前代理环境是否适用于所述目标网站的步骤,包括:
25.如果所述响应消息中的响应状态码是环境失效状态码,则判定所述当前代理环境不适用于所述目标网站;
26.如果无法通过所述当前代理环境与所述目标网站建立连接,则判定所述当前代理环境不适用于所述目标网站;
27.如果能够通过所述当前代理环境与所述目标网站建立连接,但接收所述目标网站的响应超时,则判定所述当前代理环境不适用于所述目标网站;
28.如果所述响应消息中的响应状态码是服务器异常状态码,则判定所述当前代理环境不适用于所述目标网站;
29.其余情况,则判断所述当前代理环境适用于所述目标网站。
30.根据本发明的一些实施例,所述依据所述目标网站的响应消息判断所述当前代理环境是否适用于所述目标网站后,还包括:
31.如果所述当前代理环境不适用于所述目标网站,则检测所述当前代理环境的自身状态并依据检测结果对应处理所述当前代理环境。
32.根据本发明的一些实施例,所述如果所述当前代理环境不适用于所述目标网站,则检测所述当前代理环境的自身状态并依据检测结果对应处理所述当前代理环境的步骤,具体包括:
33.通过所述当前代理环境访问公网服务器;
34.如果所述当前代理环境能够访问公网服务器,则不处理;
35.如果所述当前代理环境无法与公网服务器建立网络连接,则将所述当前代理环境从可用代理队列中删除并写入黑名单;
36.如果所述当前代理环境成功与公网服务器建立网络连接,但接收服务器响应超时,则将所述当前代理环境从可用代理队列中删除并写入黑名单;
37.如果所述当前代理环境与公网服务器建立网络连接后,响应状态码出现异常状态码,则将所述当前代理环境从可用代理队列中删除并写入黑名单。
38.根据本技术第二方面实施例的确定可复用代理队列的装置,其特征在于,包括:
39.访问请求获取模块,能够获取来自客户端的访问请求;
40.代理环境分配模块,能够确定适用于所述访问请求的当前代理环境;
41.响应处理模块,能够基于所述当前代理环境向目标网站发送所述访问请求,依据所述目标网站的响应消息判断所述当前代理环境是否适用于所述目标网站;
42.队列维护模块,如果所述当前代理环境适用于所述目标网站,则将所述当前代理环境保存至所述目标网站对应的可复用代理环境队列。
43.根据本发明实施例的确定可复用代理队列的装置,至少具有如下有益效果:所述装置能够在给客户端分配代理环境之后,基于网站的访问结果,确定当前代理环境是否适用于目标网站,然后利用队列维护模块将能够适用于目标网站的代理环境保存到可复用代理队列中,从而增加后续过程的访问效率。
44.进一步地,所述代理环境分配模块,还包括:
45.队列选择元件,能够确定所述访问请求将要访问的目标网站,获取所述目标网站对应的可复用代理环境队列;
46.第一代理环境选择元件,若所述可复用代理环境队列中存在可用的代理环境,则从所述可复用代理环境队列选择代理环境作为当前代理环境;
47.第二代理环境选择元件,若所述可复用代理环境队列中不存在可用的代理环境,则从可用代理队列中选择不在黑名单或灰名单当中的代理,作为当前代理环境,其中所述黑名单中记录有不适用于所述目标网站的代理,所述灰名单中记录有正在被使用的代理。
48.进一步地,所述第二代理环境选择元件,还包括:
49.名单筛查单元,能够从可用代理队列中选择不在黑名单或灰名单当中的代理;
50.环境构建单元,能够将所述代理与所述目标网站的网站信息进行组合,将组合结果作为对应于所述目标网站的当前代理环境。
51.进一步地,所述代理环境分配模块,还包括可用队列获取元件,所述可用队列获取元件包括:
52.代理收集单元,能够从第三方代理商获取来源代理并置入代理池;
53.速率检测单元,能够确定代理池中每个所述来源代理的响应速度级别;
54.可用代理队列构建单元,能够使用每个所述来源代理的响应速度级别作为存储优先级,将所述来源代理定时存储到可用代理队列当中。
55.根据本发明第三方面实施例的终端,其特征在于,所述终端包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时以实现上述确定可复用代理队列的方法。
56.根据本发明第四方面实施例的计算机可读存储介质,其特征在于,所述介质存储有计算机可执行指令,该计算机可执行指令用于以执行确定可复用代理队列的方法。
57.本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
58.本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得
明显和容易理解,其中:
59.图1为本发明实施例一的确定可复用代理队列的方法的步骤示意图;
60.图2为本发明实施例二的确定可复用代理队列的方法的步骤示意图;
61.图3为图2中,确定可用代理队列的步骤示意图;
62.图4为本发明实施例提供了一种确定可复用代理队列的装置的框图。
具体实施方式
63.下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的文字表示相同或类似的程序或具有相同或类似功能的程序。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
64.在使用爬虫程序获取公开网站的数据时,会因为网站本身的防御机制,限制单个ip进行使用,进而导致爬虫程序无法顺利获取数据。所以为了能够让爬虫程序顺利的运行,需要通过代理ip对目标网站进行爬取。
65.当使用大量代理的时候,由于每个代理本身的连接速度与状态不同,所以需要对代理进行统一管理。但是现有的方案中,管理大量代理ip的方式效率较低,且在多个请求同时发生的时候,可能会出现线程安全问题。
66.为了解决现有技术中存在的问题,现提出一种确定可复用代理队列的方法。
67.实施例一、
68.参照图1,该方法至少包括以下这些步骤:
69.步骤s100、获取来自客户端的访问请求。
70.步骤s200、确定适用于所述访问请求的当前代理环境。
71.从代理环境中,选取一个作为当前访问请求使用的代理环境。
72.步骤s300、基于所述当前代理环境向目标网站发送所述访问请求,依据所述目标网站的响应消息判断所述当前代理环境是否适用于所述目标网站。
73.根据访问得到的网站响应消息,判断当前代理环境是否适用于目标网站。
74.步骤s400、如果所述当前代理环境适用于所述目标网站,则将所述当前代理环境保存至所述目标网站对应的可复用代理环境队列。
75.如果当前代理环境适用于目标网站,则将当前代理环境保存至可复用代理环境队列中,进而保证后续访问目标网站的过程中,能够减少判断的步骤,加快访问效率。
76.实施例二、
77.参照图2,在实施例一的基础上,进行更加详细的说明,该方法包括以下步骤:
78.步骤s100、获取来自客户端的访问请求
79.步骤s200、确定适用于所述访问请求的当前代理环境。具体包括,
80.步骤s201、确定所述访问请求将要访问的目标网站,获取所述目标网站对应的可复用代理环境队列。
81.从来自客户端的访问请求中找到需要访问的目标网站,并找到该目标网站对应的可复用代理环境队列。可以想到的是,如果没有目标网站对应的可复用代理环境队列,则进行创建。
82.步骤s202、若所述可复用代理环境队列中存在可用的代理环境,则从所述可复用
代理环境队列选择代理环境作为当前代理环境。
83.当目标网站的可复用代理环境队列有可使用的代理环境,则直接从已经确定可以访问目标网站的可复用代理队列中选取代理环境,保证了访问的可靠程度,提高了整体访问效率。
84.步骤s203、若所述可复用代理环境队列中不存在可用的代理环境,则从可用代理队列中选择不在黑名单或灰名单当中的代理,作为当前代理环境,其中所述黑名单中记录有不适用于所述目标网站的代理,所述灰名单中记录有正在被使用的代理。
85.当无法从可复用代理环境队列中获取代理环境的时候,说明可复用代理环境被用光了,需要提供一种备用的方式,获得当前代理环境,此方式的过程包括:
86.a、从可用代理队列中选择不在黑名单或灰名单当中的代理;
87.b、将所述代理与所述目标网站的网站信息进行组合,将组合结果作为对应于所述目标网站的当前代理环境。
88.上述步骤通过选择空闲的代理,然后将其制作成目标网站能够使用的代理环境。能够在高并发的情况下,牺牲一定的准确度,换取较高的访问效率。
89.步骤s300、基于所述当前代理环境向目标网站发送所述访问请求,依据所述目标网站的响应消息判断所述当前代理环境是否适用于所述目标网站。
90.当访问完成之后,根据目标网站返回的响应消息,判断当前代理环境与目标网站的连接状态。
91.如果所述响应消息中的响应状态码是环境失效状态码,则判定所述当前代理环境不适用于所述目标网站;
92.如果无法通过所述当前代理环境与所述目标网站建立连接,则判定所述当前代理环境不适用于所述目标网站;
93.如果能够通过所述当前代理环境与所述目标网站建立连接,但接收所述目标网站的响应超时,则判定所述当前代理环境不适用于所述目标网站;
94.如果所述响应消息中的响应状态码是服务器异常状态码,则判定所述当前代理环境不适用于所述目标网站;
95.其余情况,则判断所述当前代理环境适用于所述目标网站。
96.根据本技术的一些实施例,在判断出当前代理环境不适用于本技术的时候,则需要判定不适用的原因,因为代理无法访问服务器的原因可以是多样的,既可以是被目标网站禁止了,也可以是代理本身出现了问题。
97.检测连接状况,通过所述当前代理环境访问公网服务器。
98.如果当前代理环境可以访问公网服务器,则说明该代理环境本身没问题,是被目标网站屏蔽了;
99.如果当前代理环境无法与公网服务器建立网络链接,则说明该代理死亡,将该代理从可用代理队列中删除,写入黑名单;
100.如果当前代理环境成功与公网服务器建立连接,但接收服务器响应超时,则判定该代理死亡,从可用代理队列中删除,写入黑名单;
101.如果当前代理环境与公网服务器建立网络连接后,响应状态码出现异常状态码,则判定该代理死亡,从可用代理队列中删除,写入黑名单。
102.可以理解到的是,所谓公网服务器,指的是绝大多数时间能够访问的权威服务器,例如百度(http://www.baidu.com)等知名搜索引擎。且在访问公网的时候,还可以同时访问多个公网服务器,减少误判的可能性。
103.步骤s400、如果所述当前代理环境适用于所述目标网站,则将所述当前代理环境保存至所述目标网站对应的可复用代理环境队列。
104.当判断当前代理环境适用于目标网站后,将当前代理环境保存至可复用代理环境队列中,方便后续再次调取的时候直接使用,减少判断过程,增加访问效率。
105.根据本技术一些较优的实施例,在实施例二的基础上,提供了一种对确定可用代理队列的步骤。
106.参照图3,由于在确定可用代理队列的时候,往往与其他步骤共同进行,所以不具有先后步骤。包括以下这些步骤:
107.步骤a100、从第三方代理商获取来源代理并置入代理池.
108.步骤a200、确定代理池中每个所述来源代理的响应速度级别。
109.将代理池中每个来源代理与公网服务器进行连接,确保代理是可用的。并且获取所述来源代理访问公网服务器的响应时间。
110.响应时间为小于1000毫秒,则判定所述来源代理为优质代理;
111.响应时间大于1000毫秒小于3000毫秒,则判定所述来源代理为中端代理;
112.响应时间大于3000毫秒,则判定所述来源代理为劣质代理。
113.此处设置的秒数是指按照经验设定的一个数值,通常来说,三秒内能够响应的代理,是连接速度较好的,大于三秒的往往质量较差。
114.步骤a300、使用每个所述来源代理的响应速度级别作为存储优先级,将所述来源代理定时存储到可用代理队列当中。
115.根据步骤a200中的响应速度级别,优先将优质代理和中端代理存储可用代理队列,这样能够将减少质量较差的代理的比例,进而让整体方法的处理效率能够进一步的增加。
116.参照图4,本技术又一实施例提供了一种确定可复用代理队列的装置,其特征在于,该装置20包括访问请求获取模块201、代理环境分配模块202、响应处理模块203、队列维护模块204。
117.访问请求获取模块201,能够获取来自客户端的访问请求;
118.代理环境分配模块202,能够确定适用于所述访问请求的当前代理环境;
119.响应处理模块203,能够基于所述当前代理环境向目标网站发送所述访问请求,依据所述目标网站的响应消息判断所述当前代理环境是否适用于所述目标网站;
120.队列维护模块204,如果所述当前代理环境适用于所述目标网站,则将所述当前代理环境保存至所述目标网站对应的可复用代理环境队列。
121.所述装置20能够在给客户端分配代理环境之后,基于网站的访问结果,确定当前代理环境是否适用于目标网站,然后利用队列维护模块将能够适用于目标网站的代理环境保存到可复用代理队列中,从而增加后续过程的访问效率。
122.进一步地,所述代理环境分配模块,还包括:
123.队列选择元件,能够确定所述访问请求将要访问的目标网站,获取所述目标网站
对应的可复用代理环境队列;
124.第一代理环境选择元件,若所述可复用代理环境队列中存在可用的代理环境,则从所述可复用代理环境队列选择代理环境作为当前代理环境;
125.第二代理环境选择元件,若所述可复用代理环境队列中不存在可用的代理环境,则从可用代理队列中选择不在黑名单或灰名单当中的代理,作为当前代理环境,其中所述黑名单中记录有不适用于所述目标网站的代理,所述灰名单中记录有正在被使用的代理。
126.进一步地,所述第二代理环境选择元件,还包括:
127.名单筛查单元,能够从可用代理队列中选择不在黑名单或灰名单当中的代理;
128.环境构建单元,能够将所述代理与所述目标网站的网站信息进行组合,将组合结果作为对应于所述目标网站的当前代理环境。
129.进一步地,所述代理环境分配模块,还包括可用队列获取元件,所述可用队列获取元件包括:
130.代理收集单元,能够从第三方代理商获取来源代理并置入代理池;
131.速率检测单元,能够确定代理池中每个所述来源代理的响应速度级别;
132.可用代理队列构建单元,能够使用每个所述来源代理的响应速度级别作为存储优先级,将所述来源代理定时存储到可用代理队列当中。
133.本技术又一实施例提供了一种终端,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行计算机程序时以实现上述确定可复用代理队列的方法。
134.具体地,处理器可以是cpu,通用处理器,dsp,asic,fpga或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。
135.具体地,处理器通过总线与存储器连接,总线可包括一通路,以用于传送信息。总线可以是pci总线或eisa总线等。总线可以分为地址总线、数据总线、控制总线等。
136.存储器可以是rom或可存储静态信息和指令的其他类型的静态存储设备,ram或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom、cd-rom或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
137.可选的,存储器用于存储执行本技术方案的计算机程序的代码,并由处理器来控制执行。处理器用于执行存储器中存储的应用程序代码,以实现图1~图4的方法的任意几种。
138.本技术又一实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,该计算机可执行指令用于执行上述图1所示的确定可复用代理队列的方法。
139.以上所描述的装置实施例仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
140.本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可
以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
141.以上是对本技术的较佳实施进行了具体说明,但本技术并不局限于上述实施方式,熟悉本领域的技术人员在不违背本技术精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本技术权利要求所限定的范围内。