反爬虫系统及方法与流程

文档序号:11156607阅读:452来源:国知局

本发明涉及反爬虫技术领域。更具体地说,本发明涉及能够自学习的反爬虫系统和方法。



背景技术:

爬数据是指未经服务器主允许,通过软件程序模拟人的操作,抓取页面上的数据。常见的反爬数据的方法有两个:1)通过给页面设置验证码进行验证,因为这些验证码计算机难以识别。但是有的计算机还是能够识别,而有的会通过雇人识别的方式进行识别,因此不能根本解决问题;2)通过监测IP地址的异常行为,比如某个IP地址的客户端不是用浏览器调用,或者说调用速度过快,调用量过大等。设置规则,封这些IP。但是这样会导致反应速度比较慢,在发现异常之后,需要人为设定规则,才能实现反爬。而用户往往会通过IP代理的方式,调用各种伪IP来爬数据。因此,必须设计一种能够自己学习反爬规则的系统和方法。



技术实现要素:

本发明的一个目的是提供一种能够从不正常访问行为的访问日志提取出新的黑名单规则,以不断更新黑名单规则库,进而来进行反爬的系统和方法。

为了实现根据本发明的这些目的和其它优点,提供了一种反爬虫系统,包括:

分析模块,其判断访问行为是否正常;

获取模块,其获取经所述分析模块判断为不正常访问行为的访问日志;

学习模块,其具有可更新的黑名单规则库,所述学习模块根据不正常访问行为的访问日志提取出新的黑名单规则,以更新所述黑名单规则库;

过滤模块,其禁止所述黑名单规则库所囊括的访问行为。

优选的是,所述的反爬虫系统,所述过滤模块存储可更新的IP黑名单,所述过滤模块将所述黑名单规则库所囊括的访问行为对应的IP地址加入所述IP黑名单,并禁止该IP地址的访问行为。

优选的是,所述的反爬虫系统,若一访问行为不被所述黑名单规则库囊括,则调用所述分析模块对该访问行为进行分析,如果该访问行为为不正常,则所述过滤模块禁止该访问行为;若一访问行为被所述黑名单规则库囊括,则不调用所述分析模块继续对该访问行为进行分析。

优选的是,所述的反爬虫系统,所述分析模块判断访问行为是否正常的方法包括:

获取访问行为在第一预设时间段内的访问次数,并且检测是否存在鼠标行为;

若在第一预设时间内的访问次数超过预设阈值,且未检测到鼠标行为,则判断该访问行为为不正常。

优选的是,所述的反爬虫系统,所述学习模块根据不正常访问行为的访问日志提取出新的黑名单规则的方法包括:

计算不正常访问行为在第一预设时间段内的单位时间访问次数和单位时间预设阈值;提取的新的黑名单规则为:访问行为的单位时间访问次数高于单位时间预设阈值。

优选的是,所述的反爬虫系统,所述分析模块判断访问行为是否正常的方法包括:

获取访问行为在各第二预设时间段内的访问次数以及各访问次数对应的时间点,然后将第二预设时间段划分为N个分时间段,分别计算各个分时间段的访问频率;

若N个分时间段的访问频率均低于第一阈值,则将下一个第二预设时间段划分为N/2个分时间段,然后分别计算各个分时间段的访问频率;

若N个分时间段的访问频率均高于第二阈值,则将下一个第二预设时间段划分为2N个分时间段,然后分别计算各个分时间段的访问频率;

若N个分时间段的访问频率均高于第一阈值并低于第二阈值,则将下一个第二预设时间段划分为N个分时间段,然后分别计算各个分时间段的访问频率;

其中,若访问行为在任一分时间段内的访问频率高于频率阈值,则访问行为为不正常;

其中,N≥10;

其中,第一阈值为频率阈值的1/4,第二阈值为频率阈值的3/4。

一种反爬虫方法,包括:

判断访问行为是否正常;

获取经判断为不正常访问行为的访问日志;

根据不正常访问行为的访问日志提取出新的黑名单规则,以更新黑名单规则库;

禁止所述黑名单规则库所囊括的访问行为。

优选的是,所述的反爬虫方法,还包括:

将所述黑名单规则库所囊括的访问行为对应的IP地址加入所述IP黑名单,并禁止该IP地址的访问行为。

优选的是,所述的反爬虫方法,还包括:

若一访问行为不被所述黑名单规则库囊括,则对该访问行为进行分析,如果该访问行为为不正常,则禁止该访问行为;若一访问行为被所述黑名单规则库囊括,则不继续对该访问行为进行分析。

优选的是,所述的反爬虫方法,判断访问行为是否正常的方法包括:

获取访问行为在第一预设时间段内的访问次数,并且检测是否存在鼠标行为;

若在第一预设时间内的访问次数超过预设阈值,且未检测到鼠标行为,则判断该访问行为为不正常。

本发明至少包括以下有益效果:

本发明一方面可以根据分析模块的分析进行反爬,另一方面学习模块能够从不正常访问行为的访问日志提取出新的黑名单规则,不断更新黑名单规则库,进而可以直接根据黑名单规则库对访问行为进行封禁,两者结合兼具反爬速度和反爬准确度,相比于只用分析模块,反爬速度明显提升。

本发明的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本发明的研究和实践而为本领域的技术人员所理解。

具体实施方式

下面结合实例对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。

本发明提供一种反爬虫系统,包括:

分析模块,其判断访问行为是否正常;

获取模块,其获取经所述分析模块判断为不正常访问行为的访问日志;

学习模块,其具有可更新的黑名单规则库,所述学习模块根据不正常访问行为的访问日志提取出新的黑名单规则,以更新所述黑名单规则库;

过滤模块,其禁止所述黑名单规则库所囊括的访问行为。

在上述技术方案中,分析模块、获取模块、学习模块和过滤模块均为独立的服务器群,所以在硬件上具有很高的分析性能和效率。分析模块对访问行为的分析方法与现有技术中的分析方法相同,比如根据访问行为的IP、访问时间和访问次数来判断是否为正常访问行为,例如,一个IP在三个小时以上的时间内访问页面次数超过3000次,且检测不到鼠标,就认为是非正常访问。获取模块用于获取客户端的访问日志。学习模块根据分析模块得出的非正常访问,提取出新的黑名单规则,该新的黑名单规则可以直接与分析模块对该非正常访问的判断规则相同,也可以是该非正常访问的判断规则的改进。这样,分析模块、获取模块和学习模块重复工作,不断更新黑名单规则库。过滤模块将下一个访问行为与黑名单规则库中的黑名单规则进行比较,若访问行为符合其中一个黑名单规则,则禁止该访问行为。

在另一种实例中,所述的反爬虫系统,所述过滤模块存储可更新的IP黑名单,所述过滤模块将所述黑名单规则库所囊括的访问行为对应的IP地址加入所述IP黑名单,并禁止该IP地址的访问行为。这里,也可以根据黑名单规则库不断充实IP黑名单,使系统根据IP黑名单直接封禁已经出现过非正常访问的IP,不用再比较访问行为与黑名单规则库。

在另一种实例中,所述的反爬虫系统,若一访问行为不被所述黑名单规则库囊括,则调用所述分析模块对该访问行为进行分析,如果该访问行为为不正常,则所述过滤模块禁止该访问行为;若一访问行为被所述黑名单规则库囊括,则不调用所述分析模块继续对该访问行为进行分析。这里,对分析模块的调用作了优化,如果一访问行为符合一种黑名单规则,则封禁该访问行为,而不再调用分析模块进行分析,如果一访问行为不符合任何一种黑名单规则,则调用分析模块进行分析其是否应该封禁。

在另一种实例中,所述的反爬虫系统,所述分析模块判断访问行为是否正常的方法包括:

获取访问行为在第一预设时间段内的访问次数,并且检测是否存在鼠标行为;

若在第一预设时间内的访问次数超过预设阈值,且未检测到鼠标行为,则判断该访问行为为不正常。

上述技术方案提供了一种判断访问行为是否正常的可行方法,即判断访问行为在一定时间段内的访问次数是否超过预设阈值,若超过,且未检测到鼠标行为,则判定该访问行为不正常。例如,分析模块的判断规则是一个IP在三个小时以上的时间内访问页面次数超过3000次,且检测不到鼠标,认为是非正常访问。

在另一种实例中,所述的反爬虫系统,所述学习模块根据不正常访问行为的访问日志提取出新的黑名单规则的方法包括:

计算不正常访问行为在第一预设时间段内的单位时间访问次数和单位时间预设阈值;提取的新的黑名单规则为:访问行为的单位时间访问次数高于单位时间预设阈值。

上述技术方案提供了从不正常访问行为中提取新的黑名单规则的方法,即用访问次数和预设阈值分别除以第一预设时间,得到单位时间访问次数和单位时间预设阈值,新的黑名单规则为:访问行为的单位时间访问次数高于单位时间预设阈值,且未检测到鼠标行为。即提取的黑名单规则相比与分析模块的判断规则更加灵活、简便。例如,某次分析模块检测到了鼠标,但这个IP在三个小时以上的时间内访问页面次数也超过3000次,最终分析模块认定这个访问也属于非正常访问,则分析模块会将这些访问日志发给学习模块作为负样本(之前学习模块也会得到一些正样本和负样本供学习)。学习模块会根据这些负样本,提取出新的黑名单规则,供下次使用。例如在第二天,另一个IP的访问频率也达到了每小时一千次,虽然还没有达到三个小时,分析模块还没有认定这个访问属于非正常访问,而学习模块的黑名单规则库已经囊括了这种非正常访问。

在另一种实例中,所述的反爬虫系统,所述分析模块判断访问行为是否正常的方法包括:

获取访问行为在各第二预设时间段内的访问次数以及各访问次数对应的时间点,然后将第二预设时间段划分为N个分时间段,分别计算各个分时间段的访问频率;

若N个分时间段的访问频率均低于第一阈值,则将下一个第二预设时间段划分为N/2个分时间段,然后分别计算各个分时间段的访问频率;

若N个分时间段的访问频率均高于第二阈值,则将下一个第二预设时间段划分为2N个分时间段,然后分别计算各个分时间段的访问频率;

若N个分时间段的访问频率均高于第一阈值并低于第二阈值,则将下一个第二预设时间段划分为N个分时间段,然后分别计算各个分时间段的访问频率;

其中,若访问行为在任一分时间段内的访问频率高于频率阈值,则访问行为为不正常;

其中,N≥10;

其中,第一阈值为频率阈值的1/4,第二阈值为频率阈值的3/4。

上述技术方案提供了一种分析模块判断访问行为是否正常的方法,即将第二预设时间段分为若干分时间段,分别用各分时间段的访问次数除以分时间段的时间长度计算得到各分时间段的访问频率,然后将各分时间段的访问频率与频率阈值比对,若其中一个访问频率高于频率阈值,则判断该访问行为不正常;这样可以更准确地识别爬虫,避免爬虫利用系统漏动时而提高访问频率时而降低访问频率。为了减少计算量,本发明还在各分时间段的访问频率低于第一阈值时,减少访问频率技术次数,在访问频率高于第二阈值时,提高访问频率计算次数,防止漏报爬虫。本发明还提供了第一阈值和第二阈值的优选值以及减少计算访问频率次数的优选值。

本发明还提供一种反爬虫方法,包括:

判断访问行为是否正常;

获取经判断为不正常访问行为的访问日志;

根据不正常访问行为的访问日志提取出新的黑名单规则,以更新黑名单规则库;

禁止所述黑名单规则库所囊括的访问行为。

在上述技术方案中,首先对访问行为的分析方法与现有技术中的分析方法相同,比如根据访问行为的IP、访问时间和访问次数来判断是否为正常访问行为,例如,一个IP在三个小时以上的时间内访问页面次数超过3000次,且检测不到鼠标,就认为是非正常访问。然后获取客户端的访问日志。随后根据非正常访问提取出新的黑名单规则,该新的黑名单规则可以直接与该非正常访问的判断规则相同,也可以是该非正常访问的判断规则的改进。这样,就可以不断更新黑名单规则库,并将下一个访问行为与黑名单规则库中的黑名单规则进行比较,若访问行为符合其中一个黑名单规则,则禁止该访问行为。

在另一种实例中,所述的反爬虫方法,还包括:

将所述黑名单规则库所囊括的访问行为对应的IP地址加入所述IP黑名单,并禁止该IP地址的访问行为。这里,也可以根据黑名单规则库不断充实IP黑名单,使系统根据IP黑名单直接封禁已经出现过非正常访问的IP,不用再比较访问行为与黑名单规则库。

在另一种实例中,所述的反爬虫方法,还包括:

若一访问行为不被所述黑名单规则库囊括,则对该访问行为进行分析,如果该访问行为为不正常,则禁止该访问行为;若一访问行为被所述黑名单规则库囊括,则不继续对该访问行为进行分析。这里,对分析的调用作了优化,如果一访问行为符合一种黑名单规则,则封禁该访问行为,而不再进行分析,如果一访问行为不符合任何一种黑名单规则,则继续进行分析其是否应该封禁。

在另一种实例中,所述的反爬虫方法,判断访问行为是否正常的方法包括:

获取访问行为在第一预设时间段内的访问次数,并且检测是否存在鼠标行为;

若在第一预设时间内的访问次数超过预设阈值,且未检测到鼠标行为,则判断该访问行为为不正常。上述技术方案提供了一种判断访问行为是否正常的可行方法,即判断访问行为在一定时间段内的访问次数是否超过预设阈值,若超过,且未检测到鼠标行为,则判定该访问行为不正常。例如,判断规则是一个IP在三个小时以上的时间内访问页面次数超过3000次,且检测不到鼠标,符合该规则就认为是非正常访问。

尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的实例。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1