CN105827619B - 高访问情况下的爬虫封禁方法 - Google Patents
高访问情况下的爬虫封禁方法 Download PDFInfo
- Publication number
- CN105827619B CN105827619B CN201610259811.2A CN201610259811A CN105827619B CN 105827619 B CN105827619 B CN 105827619B CN 201610259811 A CN201610259811 A CN 201610259811A CN 105827619 B CN105827619 B CN 105827619B
- Authority
- CN
- China
- Prior art keywords
- list
- library
- server
- request
- service module
- 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.)
- Active
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/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/101—Access control lists [ACL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Virology (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种高访问情况下的爬虫封禁方法,用于在高访问量情况下快速的判断一个访问者是否在访问黑名单中并且实施封禁,并且有效地维护名单库的正确性。本发明涉及以下步骤:提取请求的ip或者id信息;名单库预先导入到内存中,在高访问量的情况下只有通过内存查找才能满足低响应时间的要求,通过在内存的名单库中查找判断id是否在黑名单中;对于是黑名单的拒绝访问;考虑到名单库会不断变动,而且在访问量太大的时候应用会部署到不同服务器中,对于怎样保证不同服务器中名单库的一致性,增加了服务模块定时进行名单一致性维护。本发明结合了共享内存使用名单库和增加服务附件模块的方法,减少了爬取判定的响应时间。
Description
技术领域
本发明涉及互联网领域,具体涉及服务器端高并发压力下实现对爬虫封禁,并不影响用户的使用体验的解决策略。
背景技术
随着网络技术的发展和网络数据、网络用户的急速增加,网络服务器所承担的压力也越来越大。随着网络信息的增加,用于获取、收集信息的网络爬虫也随着急剧增多。网络爬虫极大地提高了信息获取的速度,这一方面给人们到来了极大的方便。包括现在的搜索引擎google、baidu为人们提供了功能强大的信息搜索,人们可以方便快速的获取想要的信息。这些都是建立在网络爬虫对互联网信息收集的基础上,在这一方面网络爬虫发挥了极重要的作用。
但是爬虫的大量增加也有一些不利的影响。存在一些设计不合理的爬虫对网站的爬取强度特别大,对服务器造成了巨大的负担,会影响到正常用户的使用体验。此外恶意爬虫还会造成数据泄露,一些公司不希望具有竞争关系的对手公司爬取自己的数据,如果数据被轻易的爬取公司是没有竞争力的。基于以上的原因对爬虫进行适当的封禁是非常必要的。
发明内容
本发明的目的在于克服现有技术中存在的不足,提供一种高访问情况下的爬虫封禁方法,实现有效的封禁爬虫,降低封禁爬虫时对系统响应的影响。封禁爬虫对于降低服务器压力和保护数据具有极大的价值。但是爬虫的封禁不应该占用太多服务器时间,否则在降低服务器压力方面就得不偿失了。本发明通过在内存中维护名单库,并通过共享内存实现在不同进程之间共享,降低了判断爬虫的时间。同时添加服务模块实现不同服务器中名单库的一致性维护,并使名单操作更灵活。本发明采用的技术方案是:
一种高访问情况下的爬虫封禁方法,包括:
在服务器上建立和维护名单库,将所有要封禁的爬虫加入到名单库的黑名单中,对正规爬虫和服务器内部使用的爬虫加入到名单库的白名单中;
将名单库中的名单存储在内存中并建立hash表索引;
将建立好hash索引的名单库映射到同一服务器不同进程的地址空间中;
当一个请求到达服务器时,提取请求中的用户id或者IP地址,一个进程查询内存中名单库中名单(包括黑名单和白名单),当用户id或IP地址在名单库的黑名单中时,拒绝访问或延迟返回数据或返回劣质数据。
进一步地,同一台服务器中,不同进程之间使用共享内存来维护多个进程之间名单库的一致性;一个进程在查询名单时首先对名单库上读锁,以防止该进程在查询名单时,其它进程对名单库进行增加、删除、修改操作。
进一步地,为了维护多台服务器中名单库的一致性,单独设立一个服务模块,所有服务器对名单库进行更新操作时,操作不直接发送给服务器上的名单库,而是发送到服务模块,通过服务模块转发该操作到服务模块中注册的所有服务器中;
服务模块还定时对所有注册至服务模块的服务器中的名单进行定时的全量更新。
更进一步地,
服务模块包括名单请求处理逻辑模块,名单库本地数据库备份;服务模块具体进行下述操作:
1)当名单操作请求到达名单请求处理逻辑模块时,名单请求处理逻辑模块判断请求类型;
2)如果是删除名单条目的请求,首先到名单库本地数据库中查看该名单条目是否存在;如果存在则删除名单库本地数据库中本条名单条目,同时根据名单请求处理逻辑模块中记录的远程服务器列表给全部远程服务器发送删除该条名单条目的请求;如果不在名单库本地数据库中,不做任何操作;
3)如果是添加名单条目的请求,同样首先到名单库本地数据库中查看该名单条目是否存在;如果不存在则在名单库本地数据库中添加该条名单条目,同时根据名单请求处理逻辑模块中记录的远程服务器列表给全部远程服务器发送添加该名单条目的请求;如果存在不做任何操作。
更进一步地,
所述服务模块还定时对所有注册至服务模块的服务器中的名单进行定时的全量更新,具体包括:
定期地,
1)服务模块读取远程服务器中的全部名单库到本地;
2)遍历读取到名单库中所有的名单条目,对于每一个名单条目查看本地数据库,如果不在本地数据库中向远程服务器发送删除该名单条目的请求;
3)遍历本地数据库的所有名单条目,对于每一个名单条目查看是否在远程服务器上名单库中,如果不存在向远程服务器发送添加该名单条目的请求。
本发明的优点在于:本发明通过在内存中设置名单库,并通过共享内存实现进程间名单库共享,实现了名单的快速查询。在封禁策略必不可少的情况下有效地实现了封禁并且占用服务器响应时间极少。通过设置服务模块将应该是服务器中处理的逻辑分离出来,处理上更灵活并且有效的解决了多台服务器部署中各台服务器名单库一致性的问题。
附图说明
图1为本发明的总体结构框图。
图2为本发明远程服务器的执行流程。
图3为本发明服务模块的结构框图。
图4为本发明服务模块的执行流程图。
具体实施方式
下面结合具体附图和实施例对本发明作进一步说明。
为了封禁爬虫必须建立名单库,将所有要封禁的爬虫加入到名单库的黑名单中,对某些正规爬虫如百度、google或者公司内部使用的爬虫加入到名单库的白名单中;
为了快速查询请求的用户id(账号)或IP地址是否在名单中,采用了将名单库中名单存储在内存中并建立hash(哈希)表索引。一般情况下将名单存储到数据库中,但是当访问量特别大的时候数据库的查询会严重拖累服务器的响应时间。对于数据查询最快的就是将数据存储到内存中。不过对于存储到内存中有一点需要解决的是同一服务器中不同进程之间维护名单一致性的问题,本策略使用了在不同进程之间共享内存的方案,将建立好hash索引的名单库映射到不同进程中的地址空间中,解决了不同进程之间名单库共享并减少了数据拷贝的开销。
当并发访问量高的时候,维持快速的响应对于用户体验尤为重要。爬虫封禁策略必须尽量小的降低对响应时间的影响,所以对爬虫库的检索必须要快。本策略将名单库常驻内存,将名单库用hash表的形式存储到内存中,实现快速查询。
对于查询结果在黑名单中的访问可以直接拒绝访问,也可以延迟本请求响应时间或者返回劣质的数据以延迟爬取者发现被封禁的时间。
对于不同服务器中名单库一致性的维护问题,单独建立一个服务模块。所有名单库的更新操作都发送到服务模块,通过服务模块转发到服务模块中注册的不同服务器中。这样处理的好处是对名单的处理更加灵活同时服务模块分担了服务器中进程的压力。理论上通过服务器模块对不同服务器中的名单库更新会使名单库保持一致,但是考虑网络传输等因素的影响不同名单库中还是会存在稍微不一致的情况。服务模块另一个作用就在本地做一个名单库副本,定期用副本全量同步远程不同服务器中的名单库。
如图1所示,具体实施分为两大部分,远程服务器和本地服务模块;当并发请求很高的时候,应用需要布置到多台服务器上,并且一台服务器上需要多个进程处理,所以本发明要考虑多台服务器和同一服务器不同进程之间的名单库一致性;
(一),远程服务器部分;远程服务器上包括信息抽取模块(Access Module)、查询模块(Search Module)、封禁模块、名单存储模块(List Storage);如图2所示,
1)当一个请求到达服务器之后,首先进入信息抽取模块,由信息抽取模块负责提取用户id信息,本封禁策略对于登陆用户使用用户的登陆id账号,对于非登陆用户使用用户的IP地址代替;
2)提取出用户id或IP地址后,交给 查询模块判断该用户id或IP地址是不是应该封禁,首先查询服务器内存中的白名单,如果在白名单中跳过封禁模块允许正常访问;如果在黑名单中拒绝访问;如果不在名单中任然放行,但是会有进一步的识别判断是不是爬虫;
3),名单存储模块(List Storage)用于名单的增加、删除和修改操作;对于名单查询,List Storage是存储在内存中的,对于爬虫名单数量一般不会大于100万量级,用hash表存储需要的内存大小小于100M。 因为是采用共享内存的方式,在进程查询名单的时候首先要对名单库上读锁,以防止该进程在查询名单时,其它进程对名单库进行增加、删除、修改操作。
对于维护多台服务器中的名单库的一致性,采用了一个附件模块:服务模块。对名单库进行操作(包括增删)不直接发送给名单库,而是发送到服务模块,由服务模块转发该操作到服务模块中注册的所有服务器中。由于网络上的原因或者服务器端的错误操作每台服务器中的名单库还是会存在差异,服务模块要定时对所有服务器中的名单进行定时的全量更新。服务模块主要为了分担服务器端的压力,提高灵活性,通过对名单库的备份提高安全性。
服务模块的作用是维护不同远程服务器中名单库的一致性,对名单库进行备份当远程名单库损坏的时候用于恢复,并且分担远程服务器的部分压力,提供更灵活的名单操作。
在服务模块中包含两部分:名单请求处理逻辑模块(Service模块),名单库本地数据库备份List DB,如图3所示;
具体过程如下,如图4所示,服务模块具体进行下述操作:
1)当名单操作请求到达Service模块时,Service模块判断请求类型;
2)如果是删除名单条目的请求,首先到名单库本地数据库中查看该名单条目是否存在;如果存在则删除名单库本地数据库中本条名单条目,同时根据Service模块中记录的远程服务器列表给全部远程服务器发送删除该条名单条目的请求;如果不在名单库本地数据库中,不做任何操作;
3)如果是添加名单条目的请求,同样首先到名单库本地数据库中查看该名单条目是否存在;如果不存在则在名单库本地数据库中添加该条名单条目,同时根据Service模块中记录的远程服务器列表给全部远程服务器发送添加该名单条目的请求;如果存在不做任何操作。
服务模块需要定时检查远程服务器上名单库与名单库本地数据库的一致性,对于每台服务器执行以下操作:
1)服务模块读取远程服务器中的全部名单库到本地;
2)遍历读取到名单库中所有的名单条目,对于每一个名单条目查看本地数据库,如果不在本地数据库中向远程服务器发送删除该名单条目的请求;
3)遍历本地数据库的所有名单条目,对于每一个名单条目查看是否在远程服务器上名单库中,如果不存在向远程服务器发送添加该名单条目的请求。
Claims (3)
1.一种高访问情况下的爬虫封禁方法,其特征在于,包括:
在服务器上建立和维护名单库,将所有要封禁的爬虫加入到名单库的黑名单中,对正规爬虫和服务器内部使用的爬虫加入到名单库的白名单中;
将名单库中的名单存储在内存中并建立hash表索引;
将建立好hash索引的名单库映射到同一服务器不同进程的地址空间中;
当一个请求到达服务器时,提取请求中的用户id或者IP地址,一个进程查询内存中名单库中名单,当用户id或IP地址在名单库的黑名单中时,拒绝访问或延迟返回数据或返回劣质数据;
为了维护多台服务器中名单库的一致性,单独设立一个服务模块,所有服务器对名单库进行更新操作时,操作不直接发送给服务器上的名单库,而是发送到服务模块,通过服务模块转发该操作到服务模块中注册的所有服务器中;
服务模块还定时对所有注册至服务模块的服务器中的名单进行定时的全量更新;
服务模块包括名单请求处理逻辑模块,名单库本地数据库备份;服务模块具体进行下述操作:
1)当名单操作请求到达名单请求处理逻辑模块时,名单请求处理逻辑模块判断请求类型;
2)如果是删除名单条目的请求,首先到名单库本地数据库中查看该名单条目是否存在;如果存在则删除名单库本地数据库中本条名单条目,同时根据名单请求处理逻辑模块中记录的远程服务器列表给全部远程服务器发送删除该条名单条目的请求;如果不在名单库本地数据库中,不做任何操作;
3)如果是添加名单条目的请求,同样首先到名单库本地数据库中查看该名单条目是否存在;如果不存在则在名单库本地数据库中添加该条名单条目,同时根据名单请求处理逻辑模块中记录的远程服务器列表给全部远程服务器发送添加该名单条目的请求;如果存在不做任何操作。
2.如权利要求1所述的高访问情况下的爬虫封禁方法,其特征在于,同一台服务器中,不同进程之间使用共享内存来维护多个进程之间名单库的一致性;一个进程在查询名单时首先对名单库上读锁,以防止该进程在查询名单时,其它进程对名单库进行增加、删除、修改操作。
3.如权利要求1所述的高访问情况下的爬虫封禁方法,其特征在于:
所述服务模块还定时对所有注册至服务模块的服务器中的名单进行定时的全量更新,具体包括:
定期地,
1)服务模块读取远程服务器中的全部名单库到本地;
2)遍历读取到名单库中所有的名单条目,对于每一个名单条目查看本地数据库,如果不在本地数据库中向远程服务器发送删除该名单条目的请求;
3)遍历本地数据库的所有名单条目,对于每一个名单条目查看是否在远程服务器上名单库中,如果不存在向远程服务器发送添加该名单条目的请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610259811.2A CN105827619B (zh) | 2016-04-25 | 2016-04-25 | 高访问情况下的爬虫封禁方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610259811.2A CN105827619B (zh) | 2016-04-25 | 2016-04-25 | 高访问情况下的爬虫封禁方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105827619A CN105827619A (zh) | 2016-08-03 |
CN105827619B true CN105827619B (zh) | 2019-02-15 |
Family
ID=56527375
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610259811.2A Active CN105827619B (zh) | 2016-04-25 | 2016-04-25 | 高访问情况下的爬虫封禁方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105827619B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108551452B (zh) * | 2018-04-18 | 2021-01-08 | 平安科技(深圳)有限公司 | 网络爬虫方法、终端及存储介质 |
CN109714313A (zh) * | 2018-11-20 | 2019-05-03 | 远江盛邦(北京)网络安全科技股份有限公司 | 防爬虫的方法 |
CN111797352B (zh) * | 2020-06-30 | 2024-07-16 | 广州市百果园信息技术有限公司 | 封禁账号的方法、装置及封禁系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102916935A (zh) * | 2011-08-04 | 2013-02-06 | 深圳华强电子交易网络有限公司 | 一种网站内容防抓取的方法 |
CN103107948A (zh) * | 2011-11-15 | 2013-05-15 | 阿里巴巴集团控股有限公司 | 一种流量控制方法和装置 |
CN104601601A (zh) * | 2015-02-25 | 2015-05-06 | 小米科技有限责任公司 | 网络爬虫的检测方法及装置 |
CN104902008A (zh) * | 2015-04-26 | 2015-09-09 | 成都创行信息科技有限公司 | 一种针对爬虫的数据处理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7895651B2 (en) * | 2005-07-29 | 2011-02-22 | Bit 9, Inc. | Content tracking in a network security system |
-
2016
- 2016-04-25 CN CN201610259811.2A patent/CN105827619B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102916935A (zh) * | 2011-08-04 | 2013-02-06 | 深圳华强电子交易网络有限公司 | 一种网站内容防抓取的方法 |
CN103107948A (zh) * | 2011-11-15 | 2013-05-15 | 阿里巴巴集团控股有限公司 | 一种流量控制方法和装置 |
CN104601601A (zh) * | 2015-02-25 | 2015-05-06 | 小米科技有限责任公司 | 网络爬虫的检测方法及装置 |
CN104902008A (zh) * | 2015-04-26 | 2015-09-09 | 成都创行信息科技有限公司 | 一种针对爬虫的数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105827619A (zh) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109688097A (zh) | 网站防护方法、网站防护装置、网站防护设备及存储介质 | |
CN100458776C (zh) | 网络缓存管理的系统和方法 | |
CN102916935B (zh) | 一种网站内容防抓取的方法 | |
CN101442558B (zh) | 一种为p2sp网络提供索引服务的方法和系统 | |
CN103559231B (zh) | 一种文件系统配额管理方法、装置及系统 | |
CN104063448B (zh) | 一种视频领域相关的分布式微博数据抓取系统 | |
CN105827619B (zh) | 高访问情况下的爬虫封禁方法 | |
BRPI0113882B1 (pt) | método para buscar e analisar o conteúdo de tráfego em pontos de acesso em redes de dados | |
CN103957282B (zh) | 一种域内终端用户域名解析加速系统及其方法 | |
CN103118007A (zh) | 一种用户访问行为的获取方法和系统 | |
CN106503557A (zh) | 基于动态变换的sql注入攻击防御系统及防御方法 | |
US11777983B2 (en) | Systems and methods for rapidly generating security ratings | |
US20050216845A1 (en) | Utilizing cookies by a search engine robot for document retrieval | |
CN104239353B (zh) | 一种web分类控制和日志审计的方法 | |
CN110430188A (zh) | 一种快速url过滤方法及装置 | |
CN106372266A (zh) | 一种基于切面和配置文件的云操作系统缓存及访问方法 | |
CN106470208B (zh) | 对域名黑名单的无锁更新 | |
US8965879B2 (en) | Unique join data caching method | |
CN103198361A (zh) | 基于多种优化机制的xacml策略评估引擎系统 | |
CN110365810A (zh) | 基于网络爬虫的域名缓存方法、装置、设备及存储介质 | |
JP4422742B2 (ja) | 全文検索システム | |
CN112367340B (zh) | 一种内网资产风险评估方法、装置、设备及介质 | |
CN103077196A (zh) | 一种从公网web网站到内网数据库的访问方法 | |
CN108334549A (zh) | 一种设备数据存储方法、提取方法、存储平台及提取平台 | |
CN1609826A (zh) | 遍历访问控制列表中许可权方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |