一种防爬虫的方法技术

技术编号:14951383 阅读:115 留言:0更新日期:2017-04-02 03:54
本发明专利技术公开了一种防爬虫的方法,包括以下步骤:S1:对接收到的请求进行判断:如果在白名单内,则直接进行步骤S6;如果不在白名单内,则判断是否已被标记为爬虫,如果已被标记为爬虫则进行步骤S5,如果没有被标记为爬虫则进行步骤S2;S2:对第一预设时间内的请求总数进行检验;S3:对第二预设时间内的子请求和父请求次数比例进行检验;S4:判断步骤S2和S3的两次检验是否均通过:如果均通过,则进行步骤S6;否则,进行步骤S5;S5:拦截所述请求,并返回步骤S1进行继续判断;S6:允许所述请求,并返回步骤S1进行继续判断。本发明专利技术从多个维度判断请求的合法性,有效提高了拦截爬虫的力度和准确性。

【技术实现步骤摘要】

本专利技术涉及软件技术,特别是涉及一种防爬虫的方法
技术介绍
现有技术中存在通用的、维护整个网站安全的防爬虫方法,主要是根据用户的访问频率(一段时间内的访问总数)来判断请求是否合法,一旦频率超过制定的阀值,就会通过输入验证码或者直接拒绝访问的方式来防止恶意爬虫。现有技术中的防爬虫方法往往设置的访问频率上限太高,防爬力度不够。恶意爬虫在该上限的安全范围内持续访问网站,依然可以导致服务器瘫痪。所以需要制定新的防爬虫方法,以便更有效地打击恶意爬虫。
技术实现思路
专利技术目的:本专利技术的目的是提供一种能够解决现有技术中存在的缺陷的防爬虫方法。技术方案:为达到此目的,本专利技术采用以下技术方案:本专利技术所述的防爬虫的方法,包括以下步骤:S1:对接收到的请求进行判断:如果在白名单内,则直接进行步骤S6;如果不在白名单内,则判断是否已被标记为爬虫,如果已被标记为爬虫则进行步骤S5,如果没有被标记为爬虫则进行步骤S2;S2:对第一预设时间内的请求总数进行检验;S3:对第二预设时间内的子请求和父请求次数比例进行检验;S4:判断步骤S2和S3的两次检验是否均通过:如果均通过,则进行步骤S6;否则,进行步骤S5;S5:拦截所述请求,并返回步骤S1进行继续判断;S6:允许所述请求,并返回步骤S1进行继续判断。进一步,所述步骤S1包括以下子步骤:S1.1:判断所述请求的ip是否为内部ip:如果是,则直接进行步骤S6;如果不是,则继续步骤S1.2的判断;S1.2:用所述请求的ip作为密钥,从MemCache缓存中查找有关所述ip的信息:如果查到相关信息,则检查所述请求是否已被标记为爬虫,如果已被标记为爬虫,则进行步骤S5,如果没有被标记为爬虫,则进行步骤S2;如果没有查到相关信息,则插入一条新记录,并进行步骤S2。进一步,所述MemCache缓存对请求的以下信息进行存储:1分钟计时、1分钟之内父请求总次数、5分钟计时、5分钟之内父请求总次数、5分钟之内子请求总次数、是否是爬虫。进一步,对所述MemCache缓存中的记录设定自动过期时间,超过自动过期时间后,记录被删除。这样能够防止错误封掉了合法的ip。进一步,所述步骤S1中对接收到的请求进行判断之前,可以直接将接收到的请求拦截,并封掉所述请求对应的ip。这样能够直接将恶意请求拦截并封掉ip,提高了方法的安全性。进一步,为了节约缓存资源,存储在Memcache中的数组均采用索引数组。进一步,所述步骤S2中,对第一预设时间内的请求总数进行检验采用第一预设阀值来判断是否通过检验,请求来自搜索引擎对应的第一预设阀值大于请求来自其他用户对应的第一预设阀值;所述步骤S3中,对第二预设时间内有益效果:本专利技术从多个维度判断请求的合法性,有效提高了拦截爬虫的力度和准确性,解决了现有技术中单一通过访问频率来拦截爬虫所带来的问题。附图说明图1为本专利技术的对一次请求进行处理的方法流程图。具体实施方式下面结合具体实施方式对本专利技术的技术方案作进一步的介绍。本专利技术公开了一种防爬虫的方法,包括以下步骤:S1:对接收到的请求进行判断:S1.1:判断所述请求的ip是否为内部ip:如果是,则直接进行步骤S6;如果不是,则继续步骤S1.2的判断;S1.2:用所述请求的ip作为密钥,从MemCache缓存中查找有关所述ip的信息:如果查到相关信息,则检查所述请求是否已被标记为爬虫,如果已被标记为爬虫,则进行步骤S5,如果没有被标记为爬虫,则进行步骤S2;如果没有查到相关信息,则插入一条新记录,并进行步骤S2;S2:对第一预设时间内的请求总数进行检验;S3:对第二预设时间内的子请求和父请求次数比例进行检验;S4:判断步骤S2和S3的两次检验是否均通过:如果均通过,则进行步骤S6;否则,判断进行步骤S5;S5:拦截所述请求,并返回步骤S1进行继续判断;S6:允许所述请求,并返回步骤S1进行继续判断。图1给出了采用本专利技术方法对一次请求进行处理的流程。下面以酒店网站为例,介绍一下本专利技术的技术方案:当酒店列表页接口接收到请求的时候,会执行如下的方法:S1:对接收到的请求进行判断:S1.1:如果请求对应的ip为内部ip,则直接进行步骤S6;如果不是,则继续步骤S1.2的判断;S1.2:用请求对应的ip作为密钥,从MemCache缓存中查找有关所述ip的信息:如果查到相关信息,则检查所述请求是否已被标记为爬虫,如果已被标记为爬虫,则进行步骤S5,如果没有被标记为爬虫,则进行步骤S2;如果没有查到相关信息,则插入一条新记录,并进行步骤S2;其中,MemCache缓存中记录的信息有:1)Timestamp:1分钟计时(初始化为当前时间);2)Count:1分钟之内父请求总次数(初始化为1);3)Timestamp2:5分钟计时(初始化为当前时间);4)Count2:5分钟之内父请求总次数(初始化为1);5)SonCount:5分钟之内子请求总次数(初始化为0);6)Isrobot:是否是爬虫(初始化为false);S2:进行1分钟访问频次的检查:取第一预设时间为1分钟:计算本次1分钟检查的开始时间Timestamp与当前时间time的差值TimeDiff,如果TimeDiff小于30秒,则令TimeDiff等于30秒,因为30秒内计算频次没有意义;如果TimeDiff小于60秒并且该段时间内的请求总数小于15,则认为该请求合法,Count数加1;然后用新的Count除以TimeDiff得出当前1分钟的访问频次,如果大于预设值,则认为1分钟检查不通过,设定1分钟检查的标记符flag1为false,否则,flag1设为true;S3:取第二预设时间为5分钟:计算本次5分钟检查的开始时间Timestamp2与当前时间time的差值TimeDiff2,将本次5分钟内的请求总数Count2加1,用SonCount除以新的Count2得出当前5分钟内子请求和父请求的访问次数比:如果TimeDiff2小于5分钟或者子请求与父请求的访问次数比大于设定的阀值,则认为本次5分钟检查通过,设定5分钟检查的标记符flag2为true;否则,flag2设为false;S4:判断步骤S2和S3的两次检验是否均通过:如果均通过,则更新MemCache里的记录,然后进行步骤S6;否则,再次检查该ip是否在白名单内,如果在白名单内则将Isrobot标记为false,更新MemCache的记录,然后进行步骤S6,如果不在白名单内,则进行步骤S5;S5:拦截所述请求,并返回步骤S1进行继续判断;S6:允许所述请求,并返回步骤S1进行继续判断。步骤S2中,对第一预设时间内的请求总数进行检验采用第一预设阀值来判断是否通过检验,请求来自搜索引擎对应的第一预设阀值大于请求来自其他用户对应的第一预设阀值;步骤S3中,对第二预设时间内的子请求和父请求次数比例进行检验采用第二预设阀值来判断是否通过检验,请求来自搜索引擎对应的第二预设阀值大于请求来自其他用户对应的第二预设阀值。例如,步骤S2中,判断请求是否来自搜索引擎,为搜索引擎的爬虫制定不一样的阀值,比如普通用户限制一分钟最多访问100次,而搜索引擎一分钟最多可以访问200次。此外,还可以对MemCache缓存中的记录设定自动过期时间,超过本文档来自技高网...
一种防爬虫的方法

【技术保护点】
一种防爬虫的方法,其特征在于:包括以下步骤:S1:对接收到的请求进行判断:如果在白名单内,则直接进行步骤S6;如果不在白名单内,则判断是否已被标记为爬虫,如果已被标记为爬虫则进行步骤S5,如果没有被标记为爬虫则进行步骤S2;S2:对第一预设时间内的请求总数进行检验;S3:对第二预设时间内的子请求和父请求次数比例进行检验;S4:判断步骤S2和S3的两次检验是否均通过:如果均通过,则进行步骤S6;否则,进行步骤S5;S5:拦截所述请求,并返回步骤S1进行继续判断;S6:允许所述请求,并返回步骤S1进行继续判断。

【技术特征摘要】
1.一种防爬虫的方法,其特征在于:包括以下步骤:S1:对接收到的请求进行判断:如果在白名单内,则直接进行步骤S6;如果不在白名单内,则判断是否已被标记为爬虫,如果已被标记为爬虫则进行步骤S5,如果没有被标记为爬虫则进行步骤S2;S2:对第一预设时间内的请求总数进行检验;S3:对第二预设时间内的子请求和父请求次数比例进行检验;S4:判断步骤S2和S3的两次检验是否均通过:如果均通过,则进行步骤S6;否则,进行步骤S5;S5:拦截所述请求,并返回步骤S1进行继续判断;S6:允许所述请求,并返回步骤S1进行继续判断。2.根据权利要求1所述的防爬虫的方法,其特征在于:所述步骤S1包括以下子步骤:S1.1:判断所述请求的ip是否为内部ip:如果是,则直接进行步骤S6;如果不是,则继续步骤S1.2的判断;S1.2:用所述请求的ip作为密钥,从MemCache缓存中查找有关所述ip的信息:如果查到相关信息,则检查所述请求是否已被标记为爬虫,如果已被标记为爬虫,则进行步骤S5,如果没有被标记为爬虫,则进行步骤S2;如果没有查到相关信息,则插入一条新记录,并进行步骤S2。...

【专利技术属性】
技术研发人员:俞玲燕
申请(专利权)人:南京途牛科技有限公司
类型:发明
国别省市:江苏;32

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

1