CN106534062A - 一种防爬虫的方法 - Google Patents
一种防爬虫的方法 Download PDFInfo
- Publication number
- CN106534062A CN106534062A CN201610847434.4A CN201610847434A CN106534062A CN 106534062 A CN106534062 A CN 106534062A CN 201610847434 A CN201610847434 A CN 201610847434A CN 106534062 A CN106534062 A CN 106534062A
- Authority
- CN
- China
- Prior art keywords
- request
- reptile
- threshold value
- marked
- set threshold
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1466—Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
Abstract
本发明公开了一种防爬虫的方法,包括以下步骤:S1:对接收到的请求进行判断:如果在白名单内,则直接进行步骤S6;如果不在白名单内,则判断是否已被标记为爬虫,如果已被标记为爬虫则进行步骤S5,如果没有被标记为爬虫则进行步骤S2;S2:对第一预设时间内的请求总数进行检验;S3:对第二预设时间内的子请求和父请求次数比例进行检验;S4:判断步骤S2和S3的两次检验是否均通过:如果均通过,则进行步骤S6;否则,进行步骤S5;S5:拦截所述请求,并返回步骤S1进行继续判断;S6:允许所述请求,并返回步骤S1进行继续判断。本发明从多个维度判断请求的合法性,有效提高了拦截爬虫的力度和准确性。
Description
技术领域
本发明涉及软件技术,特别是涉及一种防爬虫的方法。
背景技术
现有技术中存在通用的、维护整个网站安全的防爬虫方法,主要是根据用户的访问频率(一段时间内的访问总数)来判断请求是否合法,一旦频率超过制定的阀值,就会通过输入验证码或者直接拒绝访问的方式来防止恶意爬虫。现有技术中的防爬虫方法往往设置的访问频率上限太高,防爬力度不够。恶意爬虫在该上限的安全范围内持续访问网站,依然可以导致服务器瘫痪。所以需要制定新的防爬虫方法,以便更有效地打击恶意爬虫。
发明内容
发明目的:本发明的目的是提供一种能够解决现有技术中存在的缺陷的防爬虫方法。
技术方案:为达到此目的,本发明采用以下技术方案:
本发明所述的防爬虫的方法,包括以下步骤:
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缓存中的记录设定自动过期时间,超过自动过期时间后,记录被删除。例如,设定自动过期时间为4小时,也就是说,如果本次请求间隔上次请求超过4小时的话,上次的记录已被删除,将要重新对这个ip进行监控。同样的,如果ip被标记为爬虫,那么它在4个小时内无法访问网站,一旦超过了4个小时,该ip又变成合法的,可以继续访问网站。这样能够防止错误封掉了合法的ip。
Claims (7)
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。
3.根据权利要求2所述的防爬虫的方法,其特征在于:所述MemCache缓存对请求的以下信息进行存储:1分钟计时、1分钟之内父请求总次数、5分钟计时、5分钟之内父请求总次数、5分钟之内子请求总次数、是否是爬虫。
4.根据权利要求2所述的防爬虫的方法,其特征在于:对所述MemCache缓存中的记录设定自动过期时间,超过自动过期时间后,记录被删除。
5.根据权利要求1所述的防爬虫的方法,其特征在于:所述步骤S1中对接收到的请求进行判断之前,可以直接将接收到的请求拦截,并封掉所述请求对应的ip。
6.根据权利要求2所述的防爬虫的方法,其特征在于:存储在Memcache中的数组均采用索引数组。
7.根据权利要求1所述的防爬虫的方法,其特征在于:所述步骤S2中,对第一预设时间内的请求总数进行检验采用第一预设阀值来判断是否通过检验,请求来自搜索引擎对应的第一预设阀值大于请求来自其他用户对应的第一预设阀值;所述步骤S3中,对第二预设时间内的子请求和父请求次数比例进行检验采用第二预设阀值来判断是否通过检验,请求来自搜索引擎对应的第二预设阀值大于请求来自其他用户对应的第二预设阀值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610847434.4A CN106534062B (zh) | 2016-09-23 | 2016-09-23 | 一种防爬虫的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610847434.4A CN106534062B (zh) | 2016-09-23 | 2016-09-23 | 一种防爬虫的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106534062A true CN106534062A (zh) | 2017-03-22 |
CN106534062B CN106534062B (zh) | 2019-05-10 |
Family
ID=58344109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610847434.4A Active CN106534062B (zh) | 2016-09-23 | 2016-09-23 | 一种防爬虫的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106534062B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107426148A (zh) * | 2017-03-30 | 2017-12-01 | 成都优易数据有限公司 | 一种基于运行环境特征识别的反爬虫方法及系统 |
CN107547548A (zh) * | 2017-09-05 | 2018-01-05 | 北京京东尚科信息技术有限公司 | 数据处理方法及系统 |
CN107635026A (zh) * | 2017-09-26 | 2018-01-26 | 马上消费金融股份有限公司 | 一种获取ip的方法及装置 |
CN108965207A (zh) * | 2017-05-19 | 2018-12-07 | 北京京东尚科信息技术有限公司 | 机器行为识别方法与装置 |
CN109150875A (zh) * | 2018-08-20 | 2019-01-04 | 广东优世联合控股集团股份有限公司 | 反爬虫方法、装置、电子设备及计算机可读存储介质 |
CN109756528A (zh) * | 2017-11-01 | 2019-05-14 | 广州腾讯科技有限公司 | 频率控制方法及装置、设备、存储介质、服务器 |
CN109951457A (zh) * | 2019-03-04 | 2019-06-28 | 广州博士信息技术研究院有限公司 | 一种基于html5特性的防爬虫系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100269168A1 (en) * | 2009-04-21 | 2010-10-21 | Brightcloud Inc. | System And Method For Developing A Risk Profile For An Internet Service |
CN102495861A (zh) * | 2011-11-24 | 2012-06-13 | 中国科学院计算技术研究所 | 一种网络爬虫识别系统及方法 |
CN102790700A (zh) * | 2011-05-19 | 2012-11-21 | 北京启明星辰信息技术股份有限公司 | 一种识别网页爬虫的方法和装置 |
CN105187396A (zh) * | 2015-08-11 | 2015-12-23 | 小米科技有限责任公司 | 识别网络爬虫的方法及装置 |
-
2016
- 2016-09-23 CN CN201610847434.4A patent/CN106534062B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100269168A1 (en) * | 2009-04-21 | 2010-10-21 | Brightcloud Inc. | System And Method For Developing A Risk Profile For An Internet Service |
CN102790700A (zh) * | 2011-05-19 | 2012-11-21 | 北京启明星辰信息技术股份有限公司 | 一种识别网页爬虫的方法和装置 |
CN102495861A (zh) * | 2011-11-24 | 2012-06-13 | 中国科学院计算技术研究所 | 一种网络爬虫识别系统及方法 |
CN105187396A (zh) * | 2015-08-11 | 2015-12-23 | 小米科技有限责任公司 | 识别网络爬虫的方法及装置 |
Non-Patent Citations (1)
Title |
---|
唐华栋: "网页防抓取系统的设计与实现", 《中国优秀硕士论文全文数据库》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107426148A (zh) * | 2017-03-30 | 2017-12-01 | 成都优易数据有限公司 | 一种基于运行环境特征识别的反爬虫方法及系统 |
CN108965207A (zh) * | 2017-05-19 | 2018-12-07 | 北京京东尚科信息技术有限公司 | 机器行为识别方法与装置 |
CN108965207B (zh) * | 2017-05-19 | 2021-02-26 | 北京京东尚科信息技术有限公司 | 机器行为识别方法与装置 |
CN107547548A (zh) * | 2017-09-05 | 2018-01-05 | 北京京东尚科信息技术有限公司 | 数据处理方法及系统 |
CN107547548B (zh) * | 2017-09-05 | 2020-06-30 | 北京京东尚科信息技术有限公司 | 数据处理方法及系统 |
CN107635026A (zh) * | 2017-09-26 | 2018-01-26 | 马上消费金融股份有限公司 | 一种获取ip的方法及装置 |
CN107635026B (zh) * | 2017-09-26 | 2019-01-22 | 马上消费金融股份有限公司 | 一种获取ip的方法及装置 |
CN109756528A (zh) * | 2017-11-01 | 2019-05-14 | 广州腾讯科技有限公司 | 频率控制方法及装置、设备、存储介质、服务器 |
CN109756528B (zh) * | 2017-11-01 | 2022-03-11 | 广州腾讯科技有限公司 | 频率控制方法及装置、设备、存储介质、服务器 |
CN109150875A (zh) * | 2018-08-20 | 2019-01-04 | 广东优世联合控股集团股份有限公司 | 反爬虫方法、装置、电子设备及计算机可读存储介质 |
CN109951457A (zh) * | 2019-03-04 | 2019-06-28 | 广州博士信息技术研究院有限公司 | 一种基于html5特性的防爬虫系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106534062B (zh) | 2019-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106534062A (zh) | 一种防爬虫的方法 | |
CN100461132C (zh) | 基于源代码静态分析的软件安全代码分析器及其检测方法 | |
US10057280B2 (en) | Methods and systems of detecting and analyzing correlated operations in a common storage | |
CN102546576B (zh) | 一种网页挂马检测和防护方法、系统及相应代码提取方法 | |
Halkidis et al. | Architectural risk analysis of software systems based on security patterns | |
CN103701795B (zh) | 拒绝服务攻击的攻击源的识别方法和装置 | |
CN106953832B (zh) | 处理网游可疑账号的方法及系统 | |
CN109660502A (zh) | 异常行为的检测方法、装置、设备及存储介质 | |
CN102739675B (zh) | 网站安全检测方法与装置 | |
CN105930727A (zh) | 基于Web的爬虫识别算法 | |
CN103984900A (zh) | Android应用漏洞检测方法及系统 | |
CN109039987A (zh) | 一种用户账户登录方法、装置、电子设备和存储介质 | |
CN102567546B (zh) | 一种sql注入检测方法及装置 | |
CN102045319A (zh) | Sql注入攻击检测方法及其装置 | |
CN105991511A (zh) | 一种检测cc攻击的方法及设备 | |
CN109660556A (zh) | 基于信息安全的用户登陆方法、装置、设备和存储介质 | |
CN107888604A (zh) | 一种互联网数据获取方法及获取装置 | |
CN113158197B (zh) | 一种基于主动iast的sql注入漏洞检测方法、系统 | |
CN108989294A (zh) | 一种准确识别网站访问的恶意用户的方法及系统 | |
Hwang et al. | Selection of regression system tests for security policy evolution | |
Zhang et al. | An empirical study of web resource manipulation in real-world mobile applications | |
CN110213293A (zh) | Vpn登录方法、装置、设备及计算机存储介质 | |
CN113961930A (zh) | Sql注入漏洞检测方法、装置及电子设备 | |
CN107819758A (zh) | 一种网络摄像头漏洞远程检测方法及装置 | |
CN109246113A (zh) | 一种rest api的sql注入漏洞检测方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |