CN111817845B - 反爬虫方法及计算机存储介质 - Google Patents
反爬虫方法及计算机存储介质 Download PDFInfo
- Publication number
- CN111817845B CN111817845B CN201910288669.8A CN201910288669A CN111817845B CN 111817845 B CN111817845 B CN 111817845B CN 201910288669 A CN201910288669 A CN 201910288669A CN 111817845 B CN111817845 B CN 111817845B
- Authority
- CN
- China
- Prior art keywords
- verification
- crawler
- parameters
- result
- remainder
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- 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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- 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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
- G06F21/6263—Protecting personal data, e.g. for financial or medical purposes during internet communication, e.g. revealing personal data from cookies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Theoretical Computer Science (AREA)
- Medical Informatics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
本发明实施例提供一种反爬虫方法及计算机存储介质。其中,所述方法包括:基于生成反爬虫验证参数的可验证随机函数以及当前时间戳,生成反爬虫验证参数;利用非对称加密方式生成的私钥,对反爬虫验证参数进行加密;将加密后的反爬虫验证参数和非对称加密方式生成的公钥,分别添加到生成的网页数据请求中,以获得新的网页数据请求;向服务端发送新的网页数据请求,使得服务端基于新的网页数据请求中的公钥,对加密后的反爬虫验证参数进行解密,并对解密后的反爬虫验证参数进行验证,及基于对解密后的反爬虫验证参数的验证结果,向客户端返回请求的网页内容数据。通过本发明实施例,能够可靠地实现网页内容数据的反爬虫功能。
Description
技术领域
本发明实施例涉及互联网技术领域,尤其涉及一种反爬虫方法及计算机存储介质。
背景技术
在当前商业竞争的环境中,通过网络爬虫爬取第三方的内容数据对外提供服务的恶意竞争事件时有发生,伤害了内容生产版权方的权益。因此,保护内容团队自行生产的具有核心竞争力的内容,不被竞争对手爬取显得非常重要。当前主要的反爬虫方法包括以下三种:基于IP地址的频率限制的反爬虫方法、基于UserAgent的频率限制的反爬虫方法、基于内容加密解析的反爬虫方法。
其中,基于IP地址的频率限制的反爬虫方法是通过IP地址限制访问频率,一般会通过负载均衡服务如Nginx或者通过后端代码结合redis即可实现,一般会结合实现名单功能以便开发或者测试不被阻塞。这种策略一般也比较容易实现,并且很高效。然而,很多内网对外IP地址只有一个,而通过这个IP地址请求的用户可能不止一个,容易造成频率控制的误伤。具体地,反爬虫方法会将普通用户识别为爬虫,这种情况多出现在封禁的IP地址中,例如,学校网络和小区网络同时共享一个公共的IP地址,如果这个公共的IP地址是封禁的IP地址就会导致很多正常访问的用户也无法获取到网页内容数据。此外,网络爬虫会配合使用第三方代理绕过IP地址的频率的限制。由此可见,基于IP的频率限制的反爬虫方法不能可靠地实现网页内容数据的反爬虫功能。
其中,基于UserAgent的频率限制的反爬虫方法主要针对常见的搜索引擎爬虫,一般会通过负载服务如Nginx即可实现通过UserAgent的关键字进行频率控制。该方法主要是针对搜索引擎的爬虫制定的策略,然而,对于不遵守规则的网络爬虫则无效,伪造一个可以正常请求数据的UserAgent的成本非常低,且UserAgent不太具有唯一性。由此可见,基于UserAgent的频率限制的反爬虫方法不能可靠地实现网页内容数据的反爬虫功能。
其中,基于内容加密解析的反爬虫方法是通过在服务端的接口,将数据进行加密,客户端在展示内容之前通过与服务端约定的加密方法,将数据进行解密再进行页面渲染。该方法的缺点是需要在服务端使用额外的计算资源进行数据的加密,由于无法直观看到数据,对开发调试过程不友好,会影响客户端的内容展示的性能。由此可见,基于内容加密解析的反爬虫方法不能可靠地实现网页内容数据的反爬虫功能。
发明内容
有鉴于此,本发明实施例所解决的技术问题之一在于提供一种反爬虫方法及计算机存储介质,用以解决上述问题至少之一。
本发明实施例提供一种反爬虫方法,所述方法包括:基于生成反爬虫验证参数的可验证随机函数以及当前时间戳,生成所述反爬虫验证参数;利用非对称加密方式生成的私钥,对所述反爬虫验证参数进行加密;将加密后的所述反爬虫验证参数和所述非对称加密方式生成的公钥,分别添加到生成的网页数据请求中,以获得新的网页数据请求;向服务端发送所述新的网页数据请求,使得所述服务端基于所述新的网页数据请求中的所述公钥,对加密后的所述反爬虫验证参数进行解密,并对解密后的所述反爬虫验证参数进行验证,及基于对解密后的所述反爬虫验证参数的验证结果,向客户端返回请求的网页内容数据。
本发明实施例还提供一种反爬虫方法,所述方法包括:基于接收到的网页数据请求中的公钥,对所述网页数据请求中的加密的反爬虫验证参数进行解密,以获得解密后的所述反爬虫验证参数;基于验证所述反爬虫验证参数的可验证随机函数,对解密后的所述反爬虫验证参数进行验证,以获得解密后的所述反爬虫验证参数的验证结果;基于所述验证结果,向客户端返回请求的网页内容数据。
本发明实施例还提供一种计算机可读介质,所述计算机存储介质存储有可读程序,所述可读程序包括:用于基于生成反爬虫验证参数的可验证随机函数以及当前时间戳,生成所述反爬虫验证参数的指令;用于利用非对称加密方式生成的私钥,对所述反爬虫验证参数进行加密的指令;用于将加密后的所述反爬虫验证参数和所述非对称加密方式生成的公钥,分别添加到生成的网页数据请求中,以获得新的网页数据请求的指令;用于向服务端发送所述新的网页数据请求,使得所述服务端基于所述新的网页数据请求中的所述公钥,对加密后的所述反爬虫验证参数进行解密,并对解密后的所述反爬虫验证参数进行验证,及基于对解密后的所述反爬虫验证参数的验证结果,向客户端返回请求的网页内容数据的指令。
本发明实施例还提供一种计算机可读介质,所述计算机存储介质存储有可读程序,所述可读程序包括:用于基于接收到的网页数据请求中的公钥,对所述网页数据请求中的加密的反爬虫验证参数进行解密,以获得解密后的所述反爬虫验证参数的指令;用于基于验证所述反爬虫验证参数的可验证随机函数,对解密后的所述反爬虫验证参数进行验证,以获得解密后的所述反爬虫验证参数的验证结果的指令;用于基于所述验证结果,向客户端返回请求的网页内容数据的指令。
根据本发明实施例提供的反爬虫方案,客户端基于生成反爬虫验证参数的可验证随机函数以及当前时间戳,生成反爬虫验证参数,并利用非对称加密方式生成的私钥,对反爬虫验证参数进行加密,再将加密后的反爬虫验证参数和非对称加密方式生成的公钥,分别添加到生成的网页数据请求中,以获得新的网页数据请求,再向服务端发送新的网页数据请求,使得服务端基于新的网页数据请求中的公钥,对加密后的反爬虫验证参数进行解密,并对解密后的反爬虫验证参数进行验证,及基于对解密后的反爬虫验证参数的验证结果,向客户端返回请求的网页内容数据,与现有的其它方式,客户端通过生成反爬虫验证参数的可验证随机函数,基于当前时间戳,生成反爬虫验证参数,并将反爬虫验证参数通过非对称加密的方式传递给服务端进行验证,能够可靠地实现网页内容数据的反爬虫功能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1示出了根据本发明实施例一的一种反爬虫方法的步骤流程图;
图2示出了根据本发明实施例二的一种反爬虫方法的步骤流程图;
图3示出了根据本发明实施例三的一种反爬虫方法的步骤流程图;
图4示出了根据本发明实施例三的一种反爬虫方法的示意图。
具体实施方式
为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明实施例一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明实施例保护的范围。
下面结合本发明实施例附图进一步说明本发明实施例具体实现。
实施例一
参照图1,示出了根据本发明实施例一的一种反爬虫方法的步骤流程图。
本实施例从客户端的角度,对本发明实施例提供的反爬虫方法进行说明。具体地,本实施例的反爬虫方法包括以下步骤:
在步骤S101中,基于生成反爬虫验证参数的可验证随机函数以及当前时间戳,生成所述反爬虫验证参数。
在本实施例中,所述可验证随机函数(Verifiable Random Function,VRF)是一种伪随机函数,它为输出的正确性提供了非交互式可验证的证明。给定输入值x,秘密密钥SK的知识允许计算y=FSK(x)以及正确性证明。该证明使每个验证者相信,相对于VRF的公钥,值y=FSK(x)确实是正确的。VRF是密钥加密散列的公钥版本。只有VRF密钥的持有者才能计算哈希值,但是具有公钥的任何人都可以验证哈希值的正确性。VRF可用于防止对基于散列的数据结构的字典攻击,并具有密钥透明度(CONIKS),DNSSEC(NSEC5)和加密货币(Algorand)的应用场景。所述反爬虫验证参数包括结果参数和用于证明所述结果参数的证明参数。所述当前时间戳可具体为生成反爬虫验证参数时的毫秒时间戳。可以理解的是,以上描述仅为示例性的,本实施例对此不做任何限定。
在一些可选实施例中,所述方法还包括:通过软件开发工具包的接口,判断所述客户端的当前运行环境是否为虚拟机或第三方运行框架;当判断所述客户端的当前运行环境不为虚拟机且不为第三方运行框架时,则执行所述基于生成反爬虫验证参数的可验证随机函数以及当前时间戳,生成所述反爬虫验证参数的步骤。在具体的实施方式中,运行客户端的Android系统或iOS系统有可能直接通过虚拟机或者借助第三方框架(如XposedFramework)运行客户端的程序进行网页内容数据的爬取。由于通过虚拟机或第三方运行框架运行的程序完全可以正常执行客户端与服务端结合的VRF证明者的爬虫策略,因此相当于反爬虫的策略失效。因此,在客户端生成反爬虫验证参数之前,会通过软件开发工具包的接口判断客户端的当前运行环境是否为虚拟机或者第三方运行框架,如果客户端的当前运行环境为虚拟机或者第三方运行框架,则不生成反爬虫验证参数,且不向服务端发送网页内容数据请求,以避免利用虚拟机或者第三方运行框架做为爬取网页内容数据的手段。可以理解的是,以上描述仅为示例性的,本实施例对此不做任何限定。
在一个具体的例子中,客户端通过软件开发工具包的接口,检测当前系统版本字符串里面是否包含“xposed”。如果当前系统版本字符串里面包含了“xposed”,则说明客户端的当前运行环境为第三方运行框架。如果当前系统版本字符串里面不包含“xposed”,则说明客户端的当前运行环境不为第三方运行框架。此外,客户端还通过软件开发工具包的接口,检测设备标识信息或者IMSI码。如果设备标识信息或者IMSI码不是默认的虚拟机设定的值,则说明客户端的当前运行环境不为虚拟机。如果设备标识信息或者IMSI码是默认的虚拟机设定的值,则说明客户端的当前运行环境为虚拟机。可以理解的是,以上描述仅为示例性的,本实施例对此不做任何限定。
在一些可选实施例中,在生成所述反爬虫验证参数时,通过生成反爬虫验证参数的可验证随机函数,基于当前时间戳,生成所述反爬虫验证参数。其中,所述可验证随机函数包括第一生成函数和第二生成函数。具体地,在通过生成反爬虫验证参数的可验证随机函数,基于当前时间戳,生成所述反爬虫验证参数时,基于所述第一生成函数以及所述当前时间戳,生成所述反爬虫验证参数中的结果参数;基于所述第二生成函数以及所述当前时间戳,生成所述反爬虫验证参数中用于证明所述结果参数的证明参数。更具体地,在基于所述第一生成函数以及所述当前时间戳,生成所述反爬虫验证参数中的结果参数时,对所述当前时间戳进行取余运算,以获得所述当前时间戳的余数;基于所述第一生成函数,查找乘积结果小于所述余数的一组从小到大排列的素数,并将所述一组从小到大排列的素数作为所述结果参数。在基于所述第二生成函数以及所述当前时间戳,生成所述反爬虫验证参数中用于证明所述结果参数的证明参数时,对所述当前时间戳进行取余运算,以获得所述当前时间戳的余数;基于所述第二生成函数,查找乘积结果小于所述余数的一组从小到大排列的素数,并将所述一组从小到大排列的素数的所述乘积结果作为所述证明参数。可以理解的是,以上描述仅为示例性的,本实施例对此不做任何限定。
在解决本方案的技术问题的过程中,本申请的发明人基于具体的VRF操作流程发现了VRF的核心特性。具体地,VRF操作流程包括:第一步,证明者生成一对秘钥,公钥PK和私钥SK,其中,私钥SK不对外公开自行秘密保存,与私钥SK配对的公钥PK,需要公开给验证者;第二步,证明者计算证明者函数result=VRF_Hash(SK,info);第三步,证明者计算证明者函数proof=VRF_Proof(SK,info);第四步,证明者把PK、result和proof递交给验证者,其中,result表示结果参数,proof表示证明结果参数的证明参数;第五步,验证者计算验证者函数result=VRF_P2H(proof)是否成立,若成立,继续,否则中止;第六步,证明者把PK,info递交给验证者,其中,info表示输入证明者函数的参数;第七步,验证者计算验证者函数True/False=VRF_Verify(PK,info,proof),True表示验证通过,False表示验证未通过,其中,验证通过指的是proof是通过info生成的,并且通过proof可以计算出result,从而推导出info和result是对应匹配的。本申请的发明人从上面的VRF操作流程看出,验证者并没有获得证明者的私钥SK,验证者同样可以推导出info和result是否对应匹配,这就是VRF的最核心特性。利用VRF的最核心特性,本申请的发明人可以简化VRF的证明者函数的设计流程,以适用于本实施例提供的发爬虫方案。具体地,在证明者函数中,都需要通过私钥SK参与结果的计算,如果完全按照VRF的设计原则设计一套具有较高安全性且能够跨平台的证明者函数难度会比较高。因此,在不降低安全性与方便跨平台的情况下简化了证明者函数的设计流程,主要利用素数相乘得到的合数可以得到唯一的一组质因数的性质进行证明者函数的设计。更具体地,忽略私钥SK,简化证明者函数的输入为info。证明者函数result=VRF_Hash(info)的设计为:查找乘积结果小于info的一组从小到大排列的素数,并返回以逗号隔开的的字符串result。例如,输入参数info为776,则返回的result为2,3,5,7。素数是指只能被1和自己本身整除的数。因此,素数从小到大就是2,3,5,7,11,13…,并且还需要满足这组素数的乘积结果小于776,满足条件是2*3*5*7=210,因为2*3*5*7*11=2310大于776不满足条件。证明者函数proof=VRF_Proof(info)的设计为:查找乘积结果小于info的一组从小到大排列的素数,并返回这一组从小到大排列的素数的乘积结果proof。例如,输入参数info为776,则返回的proof为210。素数是指只能被1和自己本身整除的数。因此,素数从小到大就是2,3,5,7,11,13…,并且还需要满足这组素数的乘积结果小于776,满足条件是2*3*5*7=210,因为2*3*5*7*11=2310大于776不满足条件。在具体的实施方式中,证明者函数result=VRF_Hash(info)(第一生成函数)和proof=VRF_Proof(info)(第二生成函数)的输入参数info可为生成反爬虫验证参数时的当前毫秒时间戳按10000取余的余数,其范围为1-9999之间。可以理解的是,以上描述仅为示例性的,本实施例对此不做任何限定。
在步骤S102中,利用非对称加密方式生成的私钥,对所述反爬虫验证参数进行加密。
在本实施例中,所述非对称加密方式可理解为加密和解密使用不同的密钥的加密方式,例如,RSA算法、DSA算法等。其中,RSA是最早的公钥密码系统之一,广泛用于安全数据传输。在RSA的密码系统中,加密密钥是公共的,并且它与私有的解密密钥不同。这种不对称性是基于两个大素数乘积因子分解的实际难度,即“因子分解问题”。在具体的实施方式中,在客户端启动时,通过RSA算法生成一对公私钥,将密钥存储于安全位置,例如,运行于ios系统上的客户端,将密钥存储于iOS系统的安全的钥匙链上。在对反爬虫验证参数进行加密时,可利用非对称加密方式生成的私钥,对反爬虫验证参数进行加密。可以理解的是,以上描述仅为示例性的,本实施例对此不做任何限定。
在一些可选实施例中,在利用非对称加密方式生成的私钥,对所述反爬虫验证参数进行加密时,利用所述私钥,对所述反爬虫验证参数和所述当前时间戳进行加密,以获得加密后的所述反爬虫验证参数和所述当前时间戳。具体地,利用所述私钥,对所述反爬虫验证参数和所述当前时间戳进行非对称加密,以获得加密后的所述反爬虫验证参数和所述当前时间戳。可以理解的是,以上描述仅为示例性的,本实施例对此不做任何限定。
在步骤S103中,将加密后的所述反爬虫验证参数和所述非对称加密方式生成的公钥,分别添加到生成的网页数据请求中,以获得新的网页数据请求。
在本实施例中,客户端将加密后的所述反爬虫验证参数和所述非对称加密方式生成的公钥,分别添加到生成的网页数据请求的header头字段中,以获得新的网页数据请求。在一些可选实施例中,所述将加密后的所述反爬虫验证参数和所述非对称加密方式生成的公钥,分别添加到生成的网页数据请求中,以获得新的网页数据请求,可包括:将加密后的所述反爬虫验证参数和所述当前时间戳,及所述公钥,分别添加到所述生成的网页数据请求中,以获得所述新的网页数据请求。具体地,可将加密后的所述反爬虫验证参数和所述当前时间戳,及所述公钥,分别添加到所述生成的网页数据请求的header头字段中,以获得所述新的网页数据请求。籍此,利用客户端传递的时间戳,服务端可对反爬虫验证参数进行进一步的验证。可以理解的是,以上描述仅为示例性的,本实施例对此不做任何限定。
在步骤S104中,向服务端发送所述新的网页数据请求,使得所述服务端基于所述新的网页数据请求中的所述公钥,对加密后的所述反爬虫验证参数进行解密,并对解密后的所述反爬虫验证参数进行验证,及基于对解密后的所述反爬虫验证参数的验证结果,向客户端返回请求的网页内容数据。
在本实施例中,客户端通过向服务端发送新的网页数据请求,将反爬虫验证参数传递给服务端,以进行反爬虫验证。在一些可选实施例中,客户端通过向服务端发送新的网页数据请求,将反爬虫验证参数和生成反爬虫验证参数的时间戳传递给服务端,以进行进一步地反爬虫验证。可以理解的是,以上描述仅为示例性的,本实施例对此不做任何限定。
通过本申请实施例提供的反爬虫方法,客户端基于生成反爬虫验证参数的可验证随机函数以及当前时间戳,生成反爬虫验证参数,并利用非对称加密方式生成的私钥,对反爬虫验证参数进行加密,再将加密后的反爬虫验证参数和非对称加密方式生成的公钥,分别添加到生成的网页数据请求中,以获得新的网页数据请求,再向服务端发送新的网页数据请求,使得服务端基于新的网页数据请求中的公钥,对加密后的反爬虫验证参数进行解密,并对解密后的反爬虫验证参数进行验证,及基于对解密后的反爬虫验证参数的验证结果,向客户端返回请求的网页内容数据,与现有的其它方式,客户端通过生成反爬虫验证参数的可验证随机函数,基于当前时间戳,生成反爬虫验证参数,并将反爬虫验证参数通过非对称加密的方式传递给服务端进行验证,能够可靠地实现网页内容数据的反爬虫功能。
本实施例的反爬虫方法可以由任意适当的具有数据处理能力的设备执行,包括但不限于:摄像头、终端、移动终端、PC机、服务器、车载设备、娱乐设备、广告设备、个人数码助理(PDA)、平板电脑、笔记本电脑、掌上游戏机、智能眼镜、智能手表、可穿戴设备、虚拟显示设备或显示增强设备(如Google Glass、Oculus Rift、Hololens、Gear VR)等。
实施例二
参照图2,示出了根据本发明实施例二的一种反爬虫方法的步骤流程图。
本实施例从服务端的角度,对本发明实施例提供的反爬虫方法进行说明。具体地,本实施例的反爬虫方法包括以下步骤:
在步骤S201中,基于接收到的网页数据请求中的公钥,对所述网页数据请求中的加密的反爬虫验证参数进行解密,以获得解密后的所述反爬虫验证参数。
在本实施例中,所述公钥可理解为客户端通过非对称加密方式生成的公钥。所述反爬虫验证参数可包括结果参数和用于证明结果参数的证明参数。在具体的实施方式中,首先从接收到的网页数据请求的header头字段中取出加密的反爬虫验证参数及公钥,然后再基于接收到的网页数据请求中的公钥,对所述网页数据请求中的加密的反爬虫验证参数进行非对称解密,以获得解密后的所述反爬虫验证参数。可以理解的是,以上描述仅为示例性的,本实施例对此不做任何限定。
在一些可选实施例中,在基于接收到的网页数据请求中的公钥,对所述网页数据请求中的加密的反爬虫验证参数进行解密,以获得解密后的所述反爬虫验证参数时,基于接收到的所述网页数据请求中的所述公钥,对所述网页数据请求中的加密的反爬虫验证参数和时间戳进行解密,以获得解密后的所述反爬虫验证参数和所述时间戳。籍此,利用客户端传递的时间戳,服务端可对反爬虫验证参数进行进一步的验证。可以理解的是,以上描述仅为示例性的,本实施例对此不做任何限定。
在步骤S202中,基于验证所述反爬虫验证参数的可验证随机函数,对解密后的所述反爬虫验证参数进行验证,以获得解密后的所述反爬虫验证参数的验证结果。
在本实施例中,所述可验证随机函数与上述实施例一中提及的可验证随机函数相互配合,分别用于验证反爬虫验证参数和生成反爬虫验证参数。可以理解的是,以上描述仅为示例性的,本实施例对此不做任何限定。
在一些可选实施例中,所述可验证随机函数包括第一验证函数和第二验证函数。具体地,在基于验证所述反爬虫验证参数的可验证随机函数,对解密后的所述反爬虫验证参数进行验证时,基于所述第一验证函数,对解密后的所述反爬虫验证参数中的结果参数和用于证明所述结果参数的证明参数进行验证,以获得所述结果参数与所述证明参数的第一验证结果;基于所述第二验证函数和解密后的所述时间戳,对所述证明参数进行验证,以获得所述证明参数的第二验证结果。更具体地,在基于所述第一验证函数,对解密后的所述反爬虫验证参数中的结果参数和用于证明所述结果参数的证明参数进行验证时,若基于所述第一验证函数,验证所述一组素数的乘积结果与所述另一组素数的乘积结果相等,则所述第一验证结果为验证通过;若基于所述第一验证函数,验证所述一组素数的乘积结果与所述另一组素数的乘积结果不相等,则所述第一验证结果为验证不通过,并拒绝客户端的网页数据请求。其中,所述结果参数包括与解密后的所述时间戳关联的一组素数,所述证明参数包括与解密后的所述时间戳关联的另一组素数的乘积结果。在基于所述第二验证函数和解密后的所述时间戳,对所述证明参数进行验证时,通过所述第二验证函数,基于解密后的所述时间戳,对所述证明参数进行验证,以获得所述证明参数的第二验证结果。具体地,在通过所述第二验证函数,基于解密后的所述时间戳,对所述证明参数进行验证时,对解密后的所述时间戳进行取余运算,以获得解密后的所述时间戳的余数;基于所述第二验证函数,验证所述证明参数的数值是否小于所述余数;若验证所述证明参数的数值小于所述余数,则基于所述第二验证函数,查找所述证明参数的数值与所述余数之间的素数,并验证所述素数中的最小素数与所述证明参数的数值的乘积结果是否大于所述余数;若验证所述素数中的最小素数与所述证明参数的数值的乘积结果大于所述余数,则所述第二验证结果为验证通过。更具体地,若验证所述证明参数的数值大于或等于所述余数,或者验证所述素数中的最小素数与所述证明参数的数值的乘积结果小于或等于所述余数,则所述第二验证结果为验证不通过,并拒绝客户端的网页数据请求。可以理解的是,以上描述仅为示例性的,本实施例对此不做任何限定。
在解决本方案的技术问题的过程中,本申请的发明人利用VRF的最核心特性(上述实施例一中已进行相关描述),简化了VRF的证明者函数的设计流程。类似地,同样需要简化VRF的验证者函数的设计流程,以与简化的VRF的证明者函数相互配合,进而适用于本实施例提供的发爬虫方案。具体地,忽略私钥PK,简化验证者函数的输入参数。验证者函数VRF_P2H(proof,result)(第一验证函数)设计为:将result的字符串解析还原成素数组成的数组,并循环用proof去整除result素数数组的每个元素,如果全部为true则表示验证通过。也就是说,如果验证结果参数包括的与解密后的所述时间戳关联的一组素数的乘积结果与证明参数包括的与解密后的所述时间戳关联的另一组素数的乘积结果相等,则表示验证通过。例如,输入参数result为"2,3,5,7",proof为"210"。验证者函数VRF_Verify(info,proof)(第二验证函数)设计为:输入参数首先满足proof小于info;并找出输入参数proof与输入参数info之间素数数组,且满足数组中最小素数乘以proof会大于输入参数info。例如,输入参数info为776,proof为210,很显然,proof小于info,并且输入参数proof与输入参数info之间的最小素数211与输入参数proof(210)的乘积大于info(776)。在具体的实施方式中,第二验证函数的输入参数info可为生成反爬虫验证参数时的当前毫秒时间戳按10000取余的余数,其范围为1-9999之间。可以理解的是,以上描述仅为示例性的,本实施例对此不做任何限定。
在步骤S203中,基于所述验证结果,向客户端返回请求的网页内容数据。
在本实施例中,当所述验证结果为验证通过时,服务端将客户端发送的网页数据请求转发至相应的控制器,以获取客户端请求的网页内容数据,并向客户端返回请求的网页内容数据。当所述验证结果为验证不通过时,服务端不将客户端发送的网页数据请求转发至相应的控制器,从而不向客户端返回请求的网页内容数据。可以理解的是,以上描述仅为示例性的,本实施例对此不做任何限定。
在一些可选实施例中,在基于所述验证结果,向客户端返回请求的网页内容数据时,若所述验证结果包括的所述第一验证结果和所述第二验证结果均为验证通过,则服务端向所述客户端返回请求的所述网页内容数据;若所述验证结果包括的所述第一验证结果为验证不通过,或者所述验证结果包括的所述第二验证结果为验证不通过,则服务端拒绝向所述客户端返回请求的所述网页内容数据。可以理解的是,以上描述仅为示例性的,本实施例对此不做任何限定。
在一些可选实施例中,所述向所述客户端返回请求的所述网页内容数据之前,所述方法还包括:计算所述当前时间戳与解密后的所述时间戳的差值;若所述差值小于预设的时间阈值,则向所述客户端返回请求的所述网页内容数据;若所述差值大于或等于所述预设的时间阈值,则说明客户端发送的网页数据请求超时,拒绝向所述客户端返回请求的所述网页内容数据。其中,所述预设的时间阈值可由本领域技术人员根据实际需要进行设定,本实施例对此不做任何限定。籍此,能够防止网页数据请求被截取造成的多次请求数据的情况的发生。可以理解的是,以上描述仅为示例性的,本实施例对此不做任何限定。
在一些可选实施例中,所述向所述客户端返回请求的所述网页内容数据之前,所述方法还包括:若基于所述网页数据请求中的当前用户的身份验证信息,验证所述当前用户为有效的登录用户,则向所述客户端返回请求的所述网页内容数据;若基于所述网页数据请求中的当前用户的身份验证信息,验证所述当前用户为非法的登录用户,则拒绝向所述客户端返回请求的所述网页内容数据。具体地,从所述网页数据请求中的header头字段中的authorization字段或cookie字段中获取当前用户的身份验证信息,并将当前用户的身份验证信息与服务端的数据库中存储的用户的身份验证信息进行比对,若当前用户的身份验证信息与服务端的数据库中存储的用户的身份验证信息相同,则判断所述当前用户为有效的登录用户;若当前用户的身份验证信息与服务端的数据库中存储的用户的身份验证信息不相同,则判断所述当前用户为非法的登录用户。其中,所述身份验证信息可为用户的标识信息、用户的登录账号、用户的昵称,或者用户的手机号等。籍此,能够防止非法的登录用户爬取网页内容数据。可以理解的是,以上描述仅为示例性的,本实施例对此不做任何限定。
在一些可选实施例中,所述向所述客户端返回请求的所述网页内容数据之前,所述方法还包括:基于所述网页数据请求中的当前用户的身份验证信息,确定所述当前用户的网页数据请求的频率;若所述频率小于或等于预设的频率阈值,则向所述客户端返回请求的所述网页内容数据;若所述频率大于所述预设的频率阈值,则拒绝向所述客户端返回请求的所述网页内容数据。具体地,若基于所述网页数据请求中的当前用户的身份验证信息,验证所述当前用户为有效的登录用户,则确定所述当前用户的网页数据请求的频率;判断所述频率是否小于所述预设的频率阈值,若所述频率小于或等于所述预设的频率阈值,则向所述客户端返回请求的所述网页内容数据;若所述频率大于所述预设的频率阈值,则拒绝向所述客户端返回请求的所述网页内容数据。其中,所述预设的频率阈值可由本领域技术人员根据实际需要进行设定,本实施例对此不做任何限定。籍此,能够防止爬虫高频率恶意地爬取网页内容数据。可以理解的是,以上描述仅为示例性的,本实施例对此不做任何限定。
综上所述,基于VRFs协议实现客户端与服务端之间相互配合的安全验证机制,通过质数与合数的性质实现VRFs协议在不同平台上的高效的可验证函数功能,并结合RSA非对称加密技术、请求时间戳的有效性、基于Cookie的频率控制等技术,实现了网页数据的可靠反爬虫功能。可以理解的是,以上描述仅为示例性的,本实施例对此不做任何限定。
通过本申请实施例提供的反爬虫方法,服务端基于接收到的网页数据请求中的公钥,对网页数据请求中的加密的反爬虫验证参数进行解密,以获得解密后的反爬虫验证参数,并基于验证反爬虫验证参数的可验证随机函数,对解密后的反爬虫验证参数进行验证,以获得解密后的反爬虫验证参数的验证结果,再基于验证结果,向客户端返回请求的网页内容数据,与现有的其它方式相比,服务端基于验证反爬虫验证参数的可验证随机函数,对采用非对称加密方式生成的公钥解密的反爬虫验证参数进行验证,能够可靠地实现网页内容数据的反爬虫功能。
本实施例的反爬虫方法可以由任意适当的具有数据处理能力的设备执行,包括但不限于:摄像头、终端、移动终端、PC机、服务器、车载设备、娱乐设备、广告设备、个人数码助理(PDA)、平板电脑、笔记本电脑、掌上游戏机、智能眼镜、智能手表、可穿戴设备、虚拟显示设备或显示增强设备(如Google Glass、Oculus Rift、Hololens、Gear VR)等。
实施例三
参照图3,示出了根据本发明实施例三的一种反爬虫方法的步骤流程图。
本实施例从客户端与服务端的交互的角度,对本发明实施例的反爬虫方法进行说明。具体地,本实施例的反爬虫方法包括以下步骤:
在步骤S301中,基于生成反爬虫验证参数的可验证随机函数以及当前时间戳,生成所述反爬虫验证参数。
由于该步骤S301与上述步骤S101类似,在此不再赘述。
在步骤S302中,利用非对称加密方式生成的私钥,对所述反爬虫验证参数进行加密。
由于该步骤S302与上述步骤S102类似,在此不再赘述。
在步骤S303中,将加密后的所述反爬虫验证参数和所述非对称加密方式生成的公钥,分别添加到生成的网页数据请求中,以获得新的网页数据请求。
由于该步骤S303与上述步骤S103类似,在此不再赘述。
在步骤S304中,向服务端发送所述新的网页数据请求。
由于该步骤S304与上述步骤S104类似,在此不再赘述。
在步骤S305中,基于接收到的所述新的网页数据请求中的公钥,对所述新的网页数据请求中的加密的反爬虫验证参数进行解密,以获得解密后的所述反爬虫验证参数。
由于该步骤S305与上述步骤S201类似,在此不再赘述。
在步骤S306中,基于验证所述反爬虫验证参数的可验证随机函数,对解密后的所述反爬虫验证参数进行验证,以获得解密后的所述反爬虫验证参数的验证结果。
由于该步骤S306与上述步骤S202类似,在此不再赘述。
在步骤S307中,基于所述验证结果,向客户端返回请求的网页内容数据。
由于该步骤S307与上述步骤S203类似,在此不再赘述。
在一个具体的例子中,如图4所示,展现了从客户端的网页数据请求到服务端返回客户端请求的网页内容数据的整个过程中的反爬虫策略的处理流程。其中,图4中的虚线框包含了客户端的反爬虫策略和与服务端关联的VRF反爬虫验证策略的客户端工作。客户端在发起网页数据请求前会先判断其当前运行环境是否为虚拟机或第三方运行框架,如果是,则直接不发起网页数据请求。如果不为虚拟机且不为第三方运行框架,则基于VRF的两个证明者函数及当前时间戳生成反爬虫验证参数中的结果参数result和用于证明结果参数的证明参数proof,并通过非对称加密方式将结果参数result和用于证明结果参数的证明参数proof传递至服务端,使得服务端进行反爬虫验证。在服务端会首先进行VRF的两个验证者函数的验证,作为核心的第一层反爬虫验证策略可以抵挡大部分恶意的爬虫请求,如果核心的第一层反爬虫验证策略能够发现是恶意的爬虫请求,就不需要进行后面一系列防爬虫计算及接口数据计算,从而能够较小服务端的系统计算资源的损耗。接下来的三个反爬虫策略从多个维度上加强反爬虫力度,主要包括网页数据请求的时间间隔验证,把请求发起的时间控制在5秒以内,防止截取数据包多次请求网页内容数据;Cookie身份验证,主要验证当前请求的用户是否来自于业务的有效登录用户;用户请求频率验证,主要根据用户通常行为操作,设定网页数据请求的频率的上限,以控制爬虫高频率恶意爬取网页内容数据。在服务器端执行的四个反爬虫策略既可以使用串行方式执行,也可以使用并行的方式执行。如果通过多线程并行执行四个反爬虫策略,可以有效降低服务端针对网页数据请求的响应时间,从而提高用户体验。此外,如果有一个反爬虫策略验证不通过,则可以直接拒绝网页数据请求,以便提高爬虫策略的检测效率。如果通过串行方式执行四个反爬虫策略,能够有效地节省服务端的系统计算资源,但是相对于并行执行方式,服务端针对网页数据请求的响应时间会变长。本实施例的反爬虫方案是通过客户端与服务端的配合、多个维度进行反爬虫策略的应用。在保证反爬虫验证的效率与性能的基础上,最大程度上提高反爬虫的成功率,其跨平台可移植性可根据需求应用到不同的场景上,大大地提高了开发的效率。可以理解的是,以上描述仅为示例性的,本实施例对此不做任何限定。
通过本申请实施例提供的反爬虫方法,客户端基于生成反爬虫验证参数的可验证随机函数以及当前时间戳,生成反爬虫验证参数,并利用非对称加密方式生成的私钥,对反爬虫验证参数进行加密,再将加密后的反爬虫验证参数和非对称加密方式生成的公钥,分别添加到生成的网页数据请求中,以获得新的网页数据请求,再向服务端发送新的网页数据请求,服务端基于接收到的新的网页数据请求中的公钥,对新的网页数据请求中的加密的反爬虫验证参数进行解密,以获得解密后的反爬虫验证参数,并基于验证反爬虫验证参数的可验证随机函数,对解密后的反爬虫验证参数进行验证,以获得解密后的反爬虫验证参数的验证结果,再基于验证结果,向客户端返回请求的网页内容数据,与现有的其它方式,客户端通过生成反爬虫验证参数的可验证随机函数,基于当前时间戳,生成反爬虫验证参数,并将反爬虫验证参数通过非对称加密的方式传递给服务端进行验证,服务端基于验证反爬虫验证参数的可验证随机函数,对采用非对称加密方式生成的公钥解密的反爬虫验证参数进行验证,能够可靠地实现网页内容数据的反爬虫功能。
本实施例的反爬虫方法可以由任意适当的具有数据处理能力的设备执行,包括但不限于:摄像头、终端、移动终端、PC机、服务器、车载设备、娱乐设备、广告设备、个人数码助理(PDA)、平板电脑、笔记本电脑、掌上游戏机、智能眼镜、智能手表、可穿戴设备、虚拟显示设备或显示增强设备(如Google Glass、Oculus Rift、Hololens、Gear VR)等。
实施例四
本发明实施例还提供一种计算机可读介质,所述计算机存储介质存储有可读程序,所述可读程序包括:用于基于生成反爬虫验证参数的可验证随机函数以及当前时间戳,生成所述反爬虫验证参数的指令;用于利用非对称加密方式生成的私钥,对所述反爬虫验证参数进行加密的指令;用于将加密后的所述反爬虫验证参数和所述非对称加密方式生成的公钥,分别添加到生成的网页数据请求中,以获得新的网页数据请求的指令;用于向服务端发送所述新的网页数据请求,使得所述服务端基于所述新的网页数据请求中的所述公钥,对加密后的所述反爬虫验证参数进行解密,并对解密后的所述反爬虫验证参数进行验证,及基于对解密后的所述反爬虫验证参数的验证结果,向客户端返回请求的网页内容数据的指令。
可选地,所述可读程序还包括:用于通过软件开发工具包的接口,判断所述客户端的当前运行环境是否为虚拟机或第三方运行框架的指令;用于当判断所述客户端的当前运行环境不为虚拟机且不为第三方运行框架时,则执行所述基于生成反爬虫验证参数的可验证随机函数以及当前时间戳,生成所述反爬虫验证参数的步骤的指令。
可选地,所述可验证随机函数包括第一生成函数和第二生成函数,所述用于基于生成反爬虫验证参数的可验证随机函数以及当前时间戳,生成所述反爬虫验证参数的指令,包括:用于基于所述第一生成函数以及所述当前时间戳,生成所述反爬虫验证参数中的结果参数的指令;用于基于所述第二生成函数以及所述当前时间戳,生成所述反爬虫验证参数中用于证明所述结果参数的证明参数的指令。
可选地,所述用于基于所述第一生成函数以及所述当前时间戳,生成所述反爬虫验证参数中的结果参数的指令,包括:用于对所述当前时间戳进行取余运算,以获得所述当前时间戳的余数的指令;用于基于所述第一生成函数,查找乘积结果小于所述余数的一组从小到大排列的素数,并将所述一组从小到大排列的素数作为所述结果参数的指令。
可选地,所述用于基于所述第二生成函数以及所述当前时间戳,生成所述反爬虫验证参数中用于证明所述结果参数的证明参数的指令,包括:用于对所述当前时间戳进行取余运算,以获得所述当前时间戳的余数的指令;用于基于所述第二生成函数,查找乘积结果小于所述余数的一组从小到大排列的素数,并将所述一组从小到大排列的素数的所述乘积结果作为所述证明参数的指令。
可选地,所述用于利用非对称加密方式生成的私钥,对所述反爬虫验证参数进行加密的指令,包括:用于利用所述私钥,对所述反爬虫验证参数和所述当前时间戳进行加密,以获得加密后的所述反爬虫验证参数和所述当前时间戳的指令;对应地,所述用于将加密后的所述反爬虫验证参数和所述非对称加密方式生成的公钥,分别添加到生成的网页数据请求中,以获得新的网页数据请求的指令,包括:用于将加密后的所述反爬虫验证参数和所述当前时间戳,及所述公钥,分别添加到所述生成的网页数据请求中,以获得所述新的网页数据请求的指令。
根据本申请实施例提供的计算机可读介质,客户端基于生成反爬虫验证参数的可验证随机函数以及当前时间戳,生成反爬虫验证参数,并利用非对称加密方式生成的私钥,对反爬虫验证参数进行加密,再将加密后的反爬虫验证参数和非对称加密方式生成的公钥,分别添加到生成的网页数据请求中,以获得新的网页数据请求,再向服务端发送新的网页数据请求,使得服务端基于新的网页数据请求中的公钥,对加密后的反爬虫验证参数进行解密,并对解密后的反爬虫验证参数进行验证,及基于对解密后的反爬虫验证参数的验证结果,向客户端返回请求的网页内容数据,与现有的其它方式,客户端通过生成反爬虫验证参数的可验证随机函数,基于当前时间戳,生成反爬虫验证参数,并将反爬虫验证参数通过非对称加密的方式传递给服务端进行验证,能够可靠地实现网页内容数据的反爬虫功能。
实施例五
本发明实施例还提供一种计算机可读介质,所述计算机存储介质存储有可读程序,所述可读程序包括:用于基于接收到的网页数据请求中的公钥,对所述网页数据请求中的加密的反爬虫验证参数进行解密,以获得解密后的所述反爬虫验证参数的指令;用于基于验证所述反爬虫验证参数的可验证随机函数,对解密后的所述反爬虫验证参数进行验证,以获得解密后的所述反爬虫验证参数的验证结果的指令;用于基于所述验证结果,向客户端返回请求的网页内容数据的指令。
可选地,所述用于基于接收到的网页数据请求中的公钥,对所述网页数据请求中的加密的反爬虫验证参数进行解密,以获得解密后的所述反爬虫验证参数的指令,包括:用于基于接收到的所述网页数据请求中的所述公钥,对所述网页数据请求中的加密的反爬虫验证参数和时间戳进行解密,以获得解密后的所述反爬虫验证参数和所述时间戳的指令。
可选地,所述可验证随机函数包括第一验证函数和第二验证函数,对应地,所述用于基于验证所述反爬虫验证参数的可验证随机函数,对解密后的所述反爬虫验证参数进行验证,以获得解密后的所述反爬虫验证参数的验证结果的指令,包括:用于基于所述第一验证函数,对解密后的所述反爬虫验证参数中的结果参数和用于证明所述结果参数的证明参数进行验证,以获得所述结果参数与所述证明参数的第一验证结果的指令;用于基于所述第二验证函数和解密后的所述时间戳,对所述证明参数进行验证,以获得所述证明参数的第二验证结果的指令。
可选地,所述结果参数包括与解密后的所述时间戳关联的一组素数,所述证明参数包括与解密后的所述时间戳关联的另一组素数的乘积结果,对应地,所述用于基于所述第一验证函数,对解密后的所述反爬虫验证参数中的结果参数和用于证明所述结果参数的证明参数进行验证,以获得所述结果参数与所述证明参数的第一验证结果的指令,包括:用于若基于所述第一验证函数,验证所述一组素数的乘积结果与所述另一组素数的乘积结果相等,则所述第一验证结果为验证通过的指令。
可选地,所述用于基于所述第二验证函数和解密后的所述时间戳,对所述证明参数进行验证,以获得所述证明参数的第二验证结果的指令,包括:用于对解密后的所述时间戳进行取余运算,以获得解密后的所述时间戳的余数的指令;用于基于所述第二验证函数,验证所述证明参数的数值是否小于所述余数的指令;用于若验证所述证明参数的数值小于所述余数,则基于所述第二验证函数,查找所述证明参数的数值与所述余数之间的素数,并验证所述素数中的最小素数与所述证明参数的数值的乘积结果是否大于所述余数的指令;用于若验证所述素数中的最小素数与所述证明参数的数值的乘积结果大于所述余数,则所述第二验证结果为验证通过的指令。
可选地,所述用于基于所述验证结果,向客户端返回请求的网页内容数据的指令,包括:用于若所述验证结果包括的所述第一验证结果和所述第二验证结果均为验证通过,则向所述客户端返回请求的所述网页内容数据的指令。
可选地,所述用于向所述客户端返回请求的所述网页内容数据的指令之前,所述可读程序还包括:用于计算所述当前时间戳与解密后的所述时间戳的差值的指令;用于若所述差值小于预设的时间阈值,则向所述客户端返回请求的所述网页内容数据的指令。
可选地,所述用于向所述客户端返回请求的所述网页内容数据的指令之前,所述可读程序还包括:用于若基于所述网页数据请求中的当前用户的身份验证信息,验证所述当前用户为有效的登录用户,则向所述客户端返回请求的所述网页内容数据的指令。
可选地,所述用于向所述客户端返回请求的所述网页内容数据的指令之前,所述可读程序还包括:用于基于所述网页数据请求中的当前用户的身份验证信息,确定所述当前用户的网页数据请求的频率的指令;用于若所述频率小于或等于所述预设的频率阈值,则向所述客户端返回请求的所述网页内容数据的指令。
通过本申请实施例提供的计算机可读介质,服务端基于接收到的网页数据请求中的公钥,对网页数据请求中的加密的反爬虫验证参数进行解密,以获得解密后的反爬虫验证参数,并基于验证反爬虫验证参数的可验证随机函数,对解密后的反爬虫验证参数进行验证,以获得解密后的反爬虫验证参数的验证结果,再基于验证结果,向客户端返回请求的网页内容数据,与现有的其它方式相比,服务端基于验证反爬虫验证参数的可验证随机函数,对采用非对称加密方式生成的公钥解密的反爬虫验证参数进行验证,能够可靠地实现网页内容数据的反爬虫功能。
需要指出,根据实施的需要,可将本发明实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本发明实施例的目的。
上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的文件上传方法。此外,当通用计算机访问用于实现在此示出的文件上传方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的文件上传方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。
以上实施方式仅用于说明本发明实施例,而并非对本发明实施例的限制,有关技术领域的普通技术人员,在不脱离本发明实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明实施例的范畴,本发明实施例的专利保护范围应由权利要求限定。
Claims (12)
1.一种反爬虫方法,其特征在于,所述方法包括:
基于生成反爬虫验证参数的可验证随机函数以及当前时间戳,生成所述反爬虫验证参数,其中,所述可验证随机函数包括第一生成函数和第二生成函数;
对所述当前时间戳进行取余运算,以获得所述当前时间戳的余数;
基于所述第一生成函数,查找乘积结果小于所述余数的一组素数,并将所述一组素数作为所述反爬虫验证参数中的结果参数;
基于所述第二生成函数,查找乘积结果小于所述余数的另一组素数,并将所述另一组素数的所述乘积结果作为所述反爬虫验证参数中用于证明所述结果参数的证明参数;
利用非对称加密方式生成的私钥,对所述反爬虫验证参数进行加密;
将加密后的所述反爬虫验证参数和所述非对称加密方式生成的公钥,分别添加到生成的网页数据请求中,以获得新的网页数据请求;
向服务端发送所述新的网页数据请求,使得所述服务端基于所述新的网页数据请求中的所述公钥,对加密后的所述反爬虫验证参数进行解密,得到所述反爬虫验证参数和所述时间戳,基于验证所述反爬虫验证参数的可验证随机函数,对解密后的所述反爬虫验证参数进行验证;
基于对解密后的所述反爬虫验证参数的验证结果,向客户端返回请求的网页内容数据,所述验证结果包括第一验证结果和第二验证结果,
其中,所述可验证随机函数包括第一验证函数和第二验证函数,
其中,所述服务端基于所述第一验证函数,验证所述一组素数的乘积结果与所述另一组素数的乘积结果相等,则所述第一验证结果为验证通过;
所述服务端对所述时间戳进行取余运算,以获得所述时间戳的余数,基于所述第二验证函数,查找所述证明参数的数值与所述余数之间的素数,并验证所述素数中的最小素数与所述证明参数的数值的乘积结果是否大于所述余数,所述证明参数的数值小于所述余数;
若验证所述素数中的最小素数与所述证明参数的数值的乘积结果大于所述余数,则所述第二验证结果为验证通过。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过软件开发工具包的接口,判断所述客户端的当前运行环境是否为虚拟机或第三方运行框架;
当判断所述客户端的当前运行环境不为虚拟机且不为第三方运行框架时,则执行所述基于生成反爬虫验证参数的可验证随机函数以及当前时间戳,生成所述反爬虫验证参数的步骤。
3.根据权利要求1所述的方法,其特征在于,所述基于所述第一生成函数,查找乘积结果小于所述余数的一组素数,并将所述一组素数作为结果参数,包括:
基于所述第一生成函数,查找乘积结果小于所述余数的一组从小到大排列的素数,并将所述一组从小到大排列的素数作为所述结果参数。
4.根据权利要求1所述的方法,其特征在于,所述基于所述第二生成函数,查找乘积结果小于所述余数的另一组素数,并将所述另一组素数的所述乘积结果作为证明参数,包括:
基于所述第二生成函数,查找乘积结果小于所述余数的一组从小到大排列的素数,并将所述一组从小到大排列的素数的所述乘积结果作为所述证明参数。
5.根据权利要求1所述的方法,其特征在于,所述利用非对称加密方式生成的私钥,对所述反爬虫验证参数进行加密,包括:
利用所述私钥,对所述反爬虫验证参数和所述当前时间戳进行加密,以获得加密后的所述反爬虫验证参数和所述当前时间戳;
对应地,所述将加密后的所述反爬虫验证参数和所述非对称加密方式生成的公钥,分别添加到生成的网页数据请求中,以获得新的网页数据请求,包括:
将加密后的所述反爬虫验证参数和所述当前时间戳,及所述公钥,分别添加到所述生成的网页数据请求中,以获得所述新的网页数据请求。
6.一种反爬虫方法,其特征在于,所述方法包括:
基于接收到的网页数据请求中的公钥,对所述网页数据请求中的加密的反爬虫验证参数和时间戳进行解密,以获得所述反爬虫验证参数和所述时间戳,所述反爬虫验证参数包括结果参数和用于证明所述结果参数的证明参数,乘积结果小于所述时间戳的余数的一组素数作为所述结果参数,乘积结果小于所述余数的另一组素数的所述乘积结果作为所述证明参数,所述反爬虫验证参数和所述时间戳利用非对称加密方式生成的私钥进行加密,所述公钥利用所述非对称加密方式生成;
基于验证所述反爬虫验证参数的可验证随机函数,对解密后的所述反爬虫验证参数进行验证,以获得所述反爬虫验证参数的验证结果,其中,所述可验证随机函数包括第一验证函数和第二验证函数,所述验证结果包括第一验证结果和第二验证结果;
基于所述第一验证函数,验证所述结果参数的乘积和所述证明参数的乘积结果相等,则所述第一验证结果为验证通过;
对所述时间戳进行取余运算,以获得所述时间戳的余数;
基于所述第二验证函数,验证所述证明参数的数值是否小于所述余数;
若验证所述证明参数的数值小于所述余数,则基于所述第二验证函数,查找所述证明参数的数值与所述余数之间的素数,并验证所述素数中的最小素数与所述证明参数的数值的乘积结果是否大于所述余数;
若验证所述素数中的最小素数与所述证明参数的数值的乘积结果大于所述余数,则所述第二验证结果为验证通过;
基于所述验证结果,向客户端返回请求的网页内容数据。
7.根据权利要求6所述的方法,其特征在于,所述基于所述验证结果,向客户端返回请求的网页内容数据,包括:
若所述验证结果包括的所述第一验证结果和所述第二验证结果均为验证通过,则向所述客户端返回请求的所述网页内容数据。
8.根据权利要求7所述的方法,其特征在于,所述向所述客户端返回请求的所述网页内容数据之前,所述方法还包括:
计算当前时间戳与解密后的所述时间戳的差值;
若所述差值小于预设的时间阈值,则向所述客户端返回请求的所述网页内容数据。
9.根据权利要求7所述的方法,其特征在于,所述向所述客户端返回请求的所述网页内容数据之前,所述方法还包括:
若基于所述网页数据请求中的当前用户的身份验证信息,验证所述当前用户为有效的登录用户,则向所述客户端返回请求的所述网页内容数据。
10.根据权利要求7所述的方法,其特征在于,所述向所述客户端返回请求的所述网页内容数据之前,所述方法还包括:
基于所述网页数据请求中的当前用户的身份验证信息,确定所述当前用户的网页数据请求的频率;
若所述频率小于或等于预设的频率阈值,则向所述客户端返回请求的所述网页内容数据。
11.一种计算机存储介质,其特征在于,所述计算机存储介质存储有可读程序,所述可读程序被计算机执行以实现以下步骤:
基于生成反爬虫验证参数的可验证随机函数以及当前时间戳,生成所述反爬虫验证参数,其中,所述可验证随机函数包括第一生成函数和第二生成函数;
对所述当前时间戳进行取余运算,以获得所述当前时间戳的余数;
基于所述第一生成函数,查找乘积结果小于所述余数的一组素数,并将所述一组素数作为所述反爬虫验证参数中的结果参数;
基于所述第二生成函数,查找乘积结果小于所述余数的另一组素数,并将所述另一组素数的所述乘积结果作为所述反爬虫验证参数中用于证明所述结果参数的证明参数;
利用非对称加密方式生成的私钥,对所述反爬虫验证参数进行加密;
将加密后的所述反爬虫验证参数和所述非对称加密方式生成的公钥,分别添加到生成的网页数据请求中,以获得新的网页数据请求;
向服务端发送所述新的网页数据请求,使得所述服务端基于所述新的网页数据请求中的所述公钥,对加密后的所述反爬虫验证参数进行解密,得到所述反爬虫验证参数和所述时间戳,基于验证所述反爬虫验证参数的可验证随机函数,对解密后的所述反爬虫验证参数进行验证;
基于对解密后的所述反爬虫验证参数的验证结果,向客户端返回请求的网页内容数据,所述验证结果包括第一验证结果和第二验证结果,
其中,所述可验证随机函数包括第一验证函数和第二验证函数;
其中,所述服务端基于所述第一验证函数,验证所述一组素数的乘积结果与所述另一组素数的乘积结果相等,则所述第一验证结果为验证通过;
所述服务端对所述时间戳进行取余运算,以获得所述时间戳的余数,基于所述第二验证函数,查找所述证明参数的数值与所述余数之间的素数,并验证所述素数中的最小素数与所述证明参数的数值的乘积结果是否大于所述余数,所述证明参数的数值小于所述余数;
若验证所述素数中的最小素数与所述证明参数的数值的乘积结果大于所述余数,则所述第二验证结果为验证通过。
12.一种计算机存储介质,其特征在于,所述计算机存储介质存储有可读程序,所述可读程序被计算机执行以实现以下步骤:
基于接收到的网页数据请求中的公钥,对所述网页数据请求中的加密的反爬虫验证参数和时间戳进行解密,以获得所述反爬虫验证参数和所述时间戳,所述反爬虫验证参数包括结果参数和用于证明所述结果参数的证明参数,乘积结果小于所述时间戳的余数的一组素数作为所述结果参数,乘积结果小于所述余数的另一组素数的所述乘积结果作为所述证明参数,所述反爬虫验证参数和所述时间戳利用非对称加密方式生成的私钥进行加密,所述公钥利用所述非对称加密方式生成;
基于验证所述反爬虫验证参数的可验证随机函数,对解密后的所述反爬虫验证参数进行验证,以获得所述反爬虫验证参数的验证结果,其中,所述可验证随机函数包括第一验证函数和第二验证函数,所述验证结果包括第一验证结果和第二验证结果;
基于所述第一验证函数,验证所述结果参数的乘积和所述证明参数的乘积结果相等,则所述第一验证结果为验证通过;
对所述时间戳进行取余运算,以获得所述时间戳的余数;
基于所述第二验证函数,验证所述证明参数的数值是否小于所述余数;
若验证所述证明参数的数值小于所述余数,则基于所述第二验证函数,查找所述证明参数的数值与所述余数之间的素数,并验证所述素数中的最小素数与所述证明参数的数值的乘积结果是否大于所述余数;
若验证所述素数中的最小素数与所述证明参数的数值的乘积结果大于所述余数,则所述第二验证结果为验证通过;
基于所述验证结果,向客户端返回请求的网页内容数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910288669.8A CN111817845B (zh) | 2019-04-11 | 2019-04-11 | 反爬虫方法及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910288669.8A CN111817845B (zh) | 2019-04-11 | 2019-04-11 | 反爬虫方法及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111817845A CN111817845A (zh) | 2020-10-23 |
CN111817845B true CN111817845B (zh) | 2022-07-22 |
Family
ID=72843760
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910288669.8A Active CN111817845B (zh) | 2019-04-11 | 2019-04-11 | 反爬虫方法及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111817845B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112653695A (zh) * | 2020-12-21 | 2021-04-13 | 浪潮卓数大数据产业发展有限公司 | 一种实现反爬虫的方法及系统 |
CN112948862B (zh) * | 2021-03-10 | 2021-10-29 | 山西云媒体发展有限公司 | 一种企业信息服务系统 |
CN112804269B (zh) * | 2021-04-14 | 2021-07-06 | 中建电子商务有限责任公司 | 一种实现网站接口反爬虫的方法 |
CN113364753B (zh) * | 2021-05-31 | 2022-10-14 | 深圳赛安特技术服务有限公司 | 反爬虫方法、装置、电子设备及计算机可读存储介质 |
CN113609366A (zh) * | 2021-08-04 | 2021-11-05 | 深圳市元征科技股份有限公司 | 数据获取方法、装置、终端设备及可读存储介质 |
CN113609501B (zh) * | 2021-08-05 | 2024-07-02 | 广州南洋理工职业学院 | 一种基于非对称二次加密的反爬虫方法及系统 |
CN115118455B (zh) * | 2022-05-27 | 2023-08-29 | 东北大学 | 面向网页安全的基于属性加密访问控制反爬虫系统及方法 |
CN115632817B (zh) * | 2022-09-22 | 2023-09-05 | 浪潮卓数大数据产业发展有限公司 | 一种安卓端反爬方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103618649A (zh) * | 2013-12-03 | 2014-03-05 | 北京人民在线网络有限公司 | 网站数据采集方法及装置 |
CN106453448A (zh) * | 2015-08-06 | 2017-02-22 | 北京奇虎科技有限公司 | 用于下载目标文件的方法及装置 |
CN105812366B (zh) * | 2016-03-14 | 2019-09-24 | 携程计算机技术(上海)有限公司 | 服务器、反爬虫系统和反爬虫验证方法 |
CN105847008B (zh) * | 2016-03-18 | 2019-03-05 | 北京理工大学 | 一种匿名订购方法 |
US20180041338A1 (en) * | 2016-08-03 | 2018-02-08 | Oxford-Downing, LLC | Methods and Apparatuses to Facilitate Protection of Sensitive Data Online and Reduce Exposure in the Event of a Data Breach |
CN107770171B (zh) * | 2017-10-18 | 2020-01-24 | 厦门集微科技有限公司 | 服务器反爬虫的验证方法及系统 |
-
2019
- 2019-04-11 CN CN201910288669.8A patent/CN111817845B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111817845A (zh) | 2020-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111817845B (zh) | 反爬虫方法及计算机存储介质 | |
Davidson et al. | Privacy pass: Bypassing internet challenges anonymously | |
Wazid et al. | AKM-IoV: Authenticated key management protocol in fog computing-based Internet of vehicles deployment | |
Iqbal et al. | ALAM: Anonymous lightweight authentication mechanism for SDN-enabled smart homes | |
Arora et al. | Cloud security ecosystem for data security and privacy | |
Jangirala et al. | A multi-server environment with secure and efficient remote user authentication scheme based on dynamic ID using smart cards | |
EP3808049B1 (en) | Systems and methods for authenticated control of content delivery | |
US10116693B1 (en) | Server using proof-of-work technique for hardening against denial of service attacks | |
Wu et al. | A provably secure authentication and key exchange protocol in vehicular ad hoc networks | |
EP3694243A1 (en) | Method and device for network connection authentication | |
Safkhani et al. | RSEAP2: An enhanced version of RSEAP, an RFID based authentication protocol for vehicular cloud computing | |
US20150358167A1 (en) | Certificateless Multi-Proxy Signature Method and Apparatus | |
CN103944900A (zh) | 一种基于加密的跨站请求攻击防范方法及其装置 | |
CN112989426B (zh) | 授权认证方法及装置、资源访问令牌的获取方法 | |
CN105516208A (zh) | 一种有效防止网络攻击的web网站链接动态隐藏方法及装置 | |
Xie et al. | Improvement of a chaotic maps-based three-party password-authenticated key exchange protocol without using server’s public key and smart card | |
Andola et al. | A secure searchable encryption scheme for cloud using hash-based indexing | |
Odelu et al. | A secure anonymity preserving authentication scheme for roaming service in global mobility networks | |
CN112037870B (zh) | 支持数据分区的双服务器轻量化可搜索加密方法及系统 | |
KR20210112359A (ko) | 브라우저 쿠키 보안 | |
Zhang et al. | A privacy preserving authentication scheme for roaming services in global mobility networks | |
Meng et al. | Fast secure and anonymous key agreement against bad randomness for cloud computing | |
Dey et al. | An integrated model to make cloud authentication and multi-tenancy more secure | |
US8954728B1 (en) | Generation of exfiltration-resilient cryptographic keys | |
Philippaerts et al. | OAuch: Exploring security compliance in the OAuth 2.0 ecosystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 |