服务器反爬虫的验证方法及系统技术方案

技术编号:23183443 阅读:36 留言:0更新日期:2020-01-24 13:36
本公开提供了一种服务器反爬虫的验证方法,包括:服务器端接收登陆请求,并从服务器中取出加密函数,发送给客户端;服务器接收加密的客户端硬件信息,以及通过SESSION对象携带发送的用户账户名,密码和当前访问IP数据后,将数据向缓存中存入SESSION对象携带的各项信息,同时并正常返回网页数据;服务器对访问信息进行判断,每个的定时任务将缓存中的信息同步到访问统计模块,即存入数据库,并将缓存中生命周期设置单位时间内销毁。本公开的方法防止了服务端数据被非法获取,减轻了服务器压力,阻止了爬虫机器人的访问。

Verification method and system of server anti crawler

【技术实现步骤摘要】
服务器反爬虫的验证方法及系统
本公开涉及网络安全领域,尤其涉及一种反爬虫的验证方法和服务器反爬虫的系统。
技术介绍
最新互联网安全公司Imperva对全球10万个域名的网站访问进行分析,发布了一份《2016年机器流量报告》。称全球范围内约52%的互联网流量来自“机器人”,自2012年Imperva公司监测网络流量以来,机器产生的网络流量就连续三年超过人类产生的流量,仅在2015年以微弱优势反超过一次,数据也很快被反扑。也就是说现有的网站大部分访问者不是人类而是自动化程序的执行。机器人又分为善意机器人和恶意机器人。其中善意机器人指的是只是爬取有用的信息为己所用,如展示或都统计等。恶意机器人主要分为模拟人类的机器人,通常用于分布式拒绝服务(DDos)攻击以及刷票等、垃圾邮件机器人、黑客工具,其中最可恶的机器人是那些模拟正常用户活动的恶意机器人(DDos机器人就属于这一类),去年此类机器人占到了整体互联网流量的约24%。其中,最臭名昭著的包括Nitol恶意软件、Cyclone机器人和Mirai恶意软件。报告分析,之所以DDos机器人带来的网络流量如此之高,主要原因有两点,其一是目前模拟人类活动提交请求的实现成本非常低,但是收益非常高。比如一个春运的刷票机器人,不断模拟正常用户提交买票请求,很难找到有效方法来彻底规避这种行为,但是刷票提供者往往能从中获取不菲收益。其二是目前DDos的攻击手法对于黑客来说相当好用,用僵尸网络中的成千上万个机器来对一个目标发起看似合法的请求,造成服务器端私有信息资源被获取,间接造成经济损失,同时由于多数爬虫机器人夜以继日的访问,拖慢服务器的速度。然而现在有技术主要在于服务器端对客户端通过JS进行一个验证,保证是同一台客户端请求,此种可以有效的阻止普通机器人爬取,现在然而对于Selenium+PhantomJS+代理IP的形式确无有效的阻止方法。现在很多机器人使用Selenium和PhantomJS框架。Selenium是一个强大的网络数据采集工具,最初是为网站自动化测试而开发的。近些它还被广泛用于获取精确的网站快照,由于它们可以直接运行在浏览器上。Selenium可以让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生等等功能。但是Selenium自己不带浏览器,它需要与第三方浏览器结合在一起使用。所以服务器对于这种请求往往无法判断是正常人为访问还是机器人。而另一种PhantomJS也代替真实的浏览器。同时PhantomJS是一个“无头”(headless)浏览器。它会把网站加载到内存并执行页面上的JavaScript,但不会向用户展示网页的图形界面。因此,结合了Selenium和PhantomJS的强大的网络爬虫,可以处理cookie、JavaScript、header,以及任何你需要做的事情。因此为了保护服务端数据被非法获取,以及减轻服务器压力,需要解决如何识别此客户端是否部署机器人自动化程序,同时也需要识别代理IP,从而通过技术手段来阻止爬虫机器人的访问。
技术实现思路
(一)要解决的技术问题本公开提供了一种服务器的反爬虫的验证方法和反爬虫系统,以至少部分解决以上所提出的技术问题。(二)技术方案根据本公开的一个方面,提供了一种服务器反爬虫的验证方法,包括:服务器端接收登陆请求,并从服务器中取出加密函数,发送给客户端;服务器接收加密的客户端硬件信息,以及通过SESSION对象携带发送的用户账户名,密码和当前访问IP数据后,将数据向缓存中存入SESSION对象携带的各项信息,同时并正常返回网页数据;服务器对访问信息进行判断,每个的定时任务将缓存中的信息同步到访问统计模块,也就是存入数据库,并将缓存中生命周期设置单位时间内销毁。在本公开一些实施例中,所述的验证方法还包括:客户端登录后发送请求信息到服务器端,当请求的时候客户端会共享一个SESSION对象进行访问,通过函数设定不可直接通过子模块地址进行数据访问。在本公开一些实施例中,所述的验证方法还包括:客户端将根据服务端回传的加密函数进行加密的硬件信息,连同用户账户名,密码和当前访问IP这三要素一起通过SESSION对象携带发送到服务器,所述硬件信息包括由CPU、显卡、硬盘、内存和MAC地址通过函数模块中的加密函数计算得出的硬件信息。在本公开一些实施例中,进行加密数据处理的步骤包括:客户端在账号登录以后会从服务端获取到一个密钥A,将用户名和密码进行一次加密得到一个密钥B;密钥B和硬件信息转为JSON后再通过AES加密后得到加密的数据,然后将数据上传至服务器;服务器通过AES解密即可获取硬件信息数据和密钥B,再根据访问所带参数,到访问统计模块去查询,得到一个值,依据该值可以从函数模块中提取解密密钥C,密钥C是当前服务端响应数据所需要的;将响应数据和密钥C通过密钥B进行加密,再把其也封装成JSON后通过AES加密后发送给客户端,客户端可以根据AES解密后再经过密钥B解析得到最终的响应数据。在本公开一些实施例中,所述服务器对访问信息进行判断的步骤包括:如果从缓存统计模块中统计得到同一硬件信息发出的请求在单位时间内超出阈值,则可以认定此客户端服务器存在爬虫行为,同时再从访问统计模块随机抽取一段时间进行统计是否超过阈值,如果缓存模块超过阈值,但是访问统计模块未超过阈值,则给出验证码进行验证,通过后可继续访问;如果给出验证码后并未得到处理,仍然进行请求,或者访问统计模块中也超过阈值则认定为爬虫机器人,转到结果处理模块提供虚假数据;同时判断请求IP是否变化,如果IP在变可认为该爬虫机器人使用了代理IP,将此IP在访问统计模块中标记为代理IP;后来如果有代理IP过来访问随机次数给出验证码进行验证后方可访问。在本公开一些实施例中,所述服务器对访问信息进行判断的步骤包括:如果单位时间内同一账户在缓存统计模块中访问超过阈值,则认为此账户存在爬虫机器人行为,再判断随机时间内访问统计模块中该账户访问是否超过阈值,如果缓存模块超过阈值,但访问统计模块未超过则给出验证码进行验证,通过后可继续访问;如果给出验证码后并未得到处理,仍然进行请求,或者访问统计模块中也超过阈值,则认为是爬虫机器人,将转到结果处理模块提供虚假数据;同时判断硬件编码信息是否一致,如不一致则认为有多台爬虫机器人使用同一账户进行爬虫行为,获取其硬件编号信息进行记录,标记为爬虫服务器;如果为同一硬件服务器发出请求,则随机的给出验证码进行验证后方可正常访问。根据本公开的另一个方面,提供了一种服务器反爬虫的系统,包括:函数模块,用于存储多个加密函数和算法,所述函数模块包含加密客户端请求时共享的SESSION对象携带的数据,所述SESSION对象携带的数据作为唯一识别标识供服务端统计;缓存统计模块,用于把单位时间内访问的数据存入缓存模块,同时设置同一个缓存可访问服务端的过期时间为可调状态,通过函数模块中的统计模块处理后将最终的统计结果存入访问统计模块;访问统计模块用于统计随机时间内客户端请求服务端本文档来自技高网
...

【技术保护点】
1.一种服务器反爬虫的验证方法,包括:/n服务器端接收登陆请求,并从服务器中取出加密函数,发送给客户端;/n服务器接收加密的客户端硬件信息,以及通过SESSION对象携带发送的用户账户名,密码和当前访问IP数据后,将数据向缓存中存入SESSION对象携带的各项信息,同时并正常返回网页数据;/n服务器对访问信息进行判断,每个的定时任务将缓存中的信息同步到访问统计模块,即存入数据库,并将缓存中生命周期设置单位时间内销毁;/n所述的验证方法还包括:/n客户端登录后发送请求信息到服务器端,当请求的时候客户端会共享一个SESSION对象进行访问,通过函数设定不可直接通过子模块地址进行数据访问,所述SESSION对象存储特定用户会话所需的属性及配置信息;/n客户端将根据服务端回传的加密函数进行加密的硬件信息,连同用户账户名,密码和当前访问IP这三要素一起通过SESSION对象携带发送到服务器,所述硬件信息包括由CPU、显卡、硬盘、内存和MAC地址通过函数模块中的加密函数计算得出的硬件信息;/n其中,进行加密数据处理的步骤包括:/n客户端在账号登录以后会从服务端获取到一个密钥A,将用户名和密码进行一次加密得到一个密钥B;/n密钥B和硬件信息转为JSON后再通过AES加密后得到加密的数据,然后将数据上传至服务器;/n服务器通过AES解密获取硬件信息数据和密钥B,再根据访问所带参数,到访问统计模块去查询,得到一个值,依据该值从函数模块中提取解密密钥C,密钥C是当前服务端响应数据所需要的;/n将响应数据和密钥C通过密钥B进行加密,再把其也封装成JSON后通过AES加密后发送给客户端,客户端根据AES解密后再经过密钥B解析得到最终的响应数据。/n...

【技术特征摘要】
1.一种服务器反爬虫的验证方法,包括:
服务器端接收登陆请求,并从服务器中取出加密函数,发送给客户端;
服务器接收加密的客户端硬件信息,以及通过SESSION对象携带发送的用户账户名,密码和当前访问IP数据后,将数据向缓存中存入SESSION对象携带的各项信息,同时并正常返回网页数据;
服务器对访问信息进行判断,每个的定时任务将缓存中的信息同步到访问统计模块,即存入数据库,并将缓存中生命周期设置单位时间内销毁;
所述的验证方法还包括:
客户端登录后发送请求信息到服务器端,当请求的时候客户端会共享一个SESSION对象进行访问,通过函数设定不可直接通过子模块地址进行数据访问,所述SESSION对象存储特定用户会话所需的属性及配置信息;
客户端将根据服务端回传的加密函数进行加密的硬件信息,连同用户账户名,密码和当前访问IP这三要素一起通过SESSION对象携带发送到服务器,所述硬件信息包括由CPU、显卡、硬盘、内存和MAC地址通过函数模块中的加密函数计算得出的硬件信息;
其中,进行加密数据处理的步骤包括:
客户端在账号登录以后会从服务端获取到一个密钥A,将用户名和密码进行一次加密得到一个密钥B;
密钥B和硬件信息转为JSON后再通过AES加密后得到加密的数据,然后将数据上传至服务器;
服务器通过AES解密获取硬件信息数据和密钥B,再根据访问所带参数,到访问统计模块去查询,得到一个值,依据该值从函数模块中提取解密密钥C,密钥C是当前服务端响应数据所需要的;
将响应数据和密钥C通过密钥B进行加密,再把其也封装成JSON后通过AES加密后发送给客户端,客户端根据AES解密后再经过密钥B解析得到最终的响应数据。


2.根据权利要求1所述的验证方法,所述服务器对访问信息进行判断的步骤包括:
如果从缓存统计模块中统计得到同一硬件信息发出的请求在单位时间内超出阈值,则认定此客户端服务器存在爬虫行为,同时再从访问统计模块随机抽取一段时间进行统计是否超过阈值,如果缓存模块超过阈值,但是访问统计模块未超过阈值,则给出验证码进行验证,通过后继续访问;如果给出验证码后并未得到处理,仍然进行请求,或者访问统计模块中请求也超过阈值,则认定为爬虫机器人,转到结果处理模块提供虚假数据;
同时判断请求IP是否变化,如果IP变化则认为该爬虫机器人使用了代理IP,将此IP在访问统计模块中标记为代理IP;后来如果有代理IP过来访问随机次数,给出验证码进行验证后方能访问。


3.根据权利要求1所述的验证方法,所述服务器对访问信息进行判断的步骤包括:
如果单位时间内同一账户在缓存统计模块中访问超过阈值,则认为此账户存在爬虫机器人行为...

【专利技术属性】
技术研发人员:吴其杨谢少波程云霞沈雅洁
申请(专利权)人:厦门集微科技有限公司
类型:发明
国别省市:福建;35

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

1