CN112422543A - 反爬虫方法和装置 - Google Patents

反爬虫方法和装置 Download PDF

Info

Publication number
CN112422543A
CN112422543A CN202011240370.4A CN202011240370A CN112422543A CN 112422543 A CN112422543 A CN 112422543A CN 202011240370 A CN202011240370 A CN 202011240370A CN 112422543 A CN112422543 A CN 112422543A
Authority
CN
China
Prior art keywords
character
sprite
data text
map
attribute value
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.)
Pending
Application number
CN202011240370.4A
Other languages
English (en)
Inventor
张驰
简志枰
张舜华
李娟�
任文涛
谭汉坚
林社亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Construction Bank Corp
Original Assignee
CCB Finetech Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by CCB Finetech Co Ltd filed Critical CCB Finetech Co Ltd
Priority to CN202011240370.4A priority Critical patent/CN112422543A/zh
Publication of CN112422543A publication Critical patent/CN112422543A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Bioethics (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本发明公开了一种反爬虫方法和装置,涉及计算机技术领域。该反爬虫方法的一具体实施方式包括:将数据文本进行加密,并根据加密后的数据文本生成雪碧图;将所述雪碧图中每个字符对应的背景图像起始位置的属性值进行加密;将所述数据文本的雪碧图以及所述雪碧图中每个字符对应的属性值发送给前端,通过所述前端根据所述数据文本的雪碧图以及所述雪碧图中每个字符对应的属性值显示正确顺序的数据文本。该实施方式提高了反爬虫的破解难度。

Description

反爬虫方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种反爬虫方法和装置。
背景技术
随着数据挖掘和大数据技术的发展,数据蕴藏着的价值逐渐得到了广泛的重视,从数据中挖掘出对企业有价值的信息正在成为众多企业的关键性战略之一。而网络爬虫是获取海量数据的重要技术手段之一,出于利益的目的,大量违反REP(REP是一种创新协议)的爬虫程序非法获取大量的网页内容来获取大量数据。大量的爬虫请求即消耗了网络应用的服务器性能和网络带宽,又影响了用户体验。并且现有的反爬虫技术手段往往通过单一方式实施,容易破解,又容易造成对正常用户访问的误伤。
发明内容
有鉴于此,本发明实施例提供一种反爬虫方法和装置,能够解决现有的反爬虫方式容易被破解的问题。
为实现上述目的,根据本发明实施例的一个方面,提供了一种反爬虫方法。
本发明实施例的反爬虫方法包括:
将数据文本进行加密,并根据加密后的数据文本生成雪碧图;
将所述雪碧图中每个字符对应的背景图像起始位置的属性值进行加密;
将所述数据文本的雪碧图以及所述雪碧图中每个字符对应的属性值发送给前端,通过所述前端根据所述数据文本的雪碧图以及所述雪碧图中每个字符对应的属性值显示正确顺序的数据文本。
可选地,将数据文本进行加密包括:
基于洗牌算法,采用随机的密钥信息将数据文本进行加密。
可选地,根据加密后的数据文本生成雪碧图包括:
将加密后的数据文本处理得到统一码,并从所述数据文本中截取包括统一码的字符;
将截取得到的统一码的字符转换成图像,并将所述图像拆分得到每个字符对应的字符文件;
将每个字符对应的字符文件合并成雪碧图。
可选地,将加密后的数据文本处理得到统一码包括:
基于escape函数,将加密后的数据文本处理得到统一码。
可选地,所述雪碧图的格式为SVG或PNG格式。
可选地,当所述雪碧图的格式为PNG格式时,将截取得到的统一码的字符转换成图像,并将所述图像拆分得到每个字符对应的字符文件包括:
将截取得到的统一码的字符转换成SVG格式的图像,将所述SVG格式的图像拆分得到每个字符对应的字符文件;
将所述字符文件由SVG格式转换为PNG格式,并采用所述字符文件对应的字符的统一码命名所述字符文件。
可选地,将所述雪碧图中每个字符对应的背景图像起始位置的属性值进行加密包括:
将用于加密所述数据文本的密钥信息颠倒顺序;
基于逆向洗牌算法,根据颠倒顺序后的密钥信息,将所述雪碧图中每个字符对应的背景图像起始位置的属性值进行加密。
为实现上述目的,根据本发明实施例的另一个方面,提供了一种反爬虫方法。
本发明实施例的反爬虫方法包括:
获取待显示数据文本的雪碧图的路径以及所述雪碧图中每个字符对应的属性值;
根据所述数据文本的雪碧图的路径以及所述雪碧图中每个字符对应的属性值显示正确顺序的数据文本。
可选地,根据所述数据文本的雪碧图的路径以及所述雪碧图中每个字符对应的属性值显示正确顺序的数据文本包括:
根据所述数据文本的雪碧图的路径获取所述雪碧图;
将所述雪碧图作为网页元素的背景样式的属性值,并根据所述雪碧图中每个字符对应的属性值,显示正确顺序的数据文本。
为实现上述目的,根据本发明实施例的再一个方面,提供了一种反爬虫装置。
本发明实施例的反爬虫装置包括:
生成模块,用于将数据文本进行加密,并根据加密后的数据文本生成雪碧图;
加密模块,用于将所述雪碧图中每个字符对应的背景图像起始位置的属性值进行加密;
发送模块,用于将所述数据文本的雪碧图以及所述雪碧图中每个字符对应的属性值发送给前端,通过所述前端根据所述数据文本的雪碧图以及所述雪碧图中每个字符对应的属性值显示正确顺序的数据文本。
可选地,所述生成模块进一步用于:
根据加密后的数据文本生成雪碧图包括:
将加密后的数据文本处理得到统一码,并从所述数据文本中截取包括统一码的字符;
将截取得到的统一码的字符转换成图像,并将所述图像拆分得到每个字符对应的字符文件;
将每个字符对应的字符文件合并成雪碧图。
为实现上述目的,根据本发明实施例的再一个方面,提供了一种反爬虫装置。
本发明实施例的反爬虫装置包括:
获取模块,用于获取待显示数据文本的雪碧图的路径以及所述雪碧图中每个字符对应的属性值;
显示模块,用于根据所述数据文本的雪碧图的路径以及所述雪碧图中每个字符对应的属性值显示正确顺序的数据文本。
为实现上述目的,根据本发明实施例的再一个方面,提供了一种服务器。
本发明实施例的服务器包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的方法。
为实现上述目的,根据本发明实施例的再一个方面,提供了一种终端。
本发明实施例的终端包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的方法。
为实现上述目的,根据本发明实施例的再一个方面,提供了一种计算机可读介质。
本发明实施例的计算机可读介质,所述程序被处理器执行时实现如上所述的方法。
上述发明中的一个实施例具有如下优点或有益效果:
在本发明实施例中,该方法能够实现前后端结合双向洗牌加密的反爬虫效果,让爬虫程序更难破解网页中的关键信息。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是本发明第一实施例的反爬虫方法的流程示意图;
图2是本发明第二实施例的反爬虫方法的流程示意图;
图3是本发明第三实施例的反爬虫方法的流程示意图;
图4是本发明第一实施例的反爬虫装置的模块示意图;
图5是本发明第二实施例的反爬虫装置的模块示意图;
图6是本发明实施例可以应用于其中的示例性***架构图;
图7是适于用来实现本发明实施例的终端设备或服务器的计算机***的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
如何从整体出发,通过前后端技术共同防御爬虫,提高破解难度是本发明实施例所要解决的技术问题。为此,本发明实施例提供了一种反爬虫方法,该方法的执行主体为服务端,例如:后台服务器。图1是本发明实施例的反爬虫方法的流程示意图,如图1所示,该反爬虫方法可以包括如下的步骤S101至步骤S103。
步骤S101:将数据文本进行加密,并根据加密后的数据文本生成雪碧图。
在步骤S101中,在接收到前端发送的API请求后,后端将待返回给前端的数据文本进行加密,所述数据文本可以为网页中的文本信息。其中,可以基于洗牌算法,采用随机的密钥信息将数据文本进行加密。由于每次API请求都经过了加密,且每次洗牌算法的加密都是随机的,使同样的请求返回的雪碧图几乎都是不同的,更难以被爬虫程序破解。
需要说明的是,所述雪碧图或称为CSS sprite图像或CSS精灵。所述雪碧图是一种网页图像应用处理方式。CSS sprite图像其实就是把网页中一些背景图像整合到一张图像文件中。再利用CSS的"background-image(背景图像)","background-repeat(背景图像的重复特性)","background-position(背景图像的位置)"的组合进行背景定位,background-position可以用数字精确的定位出背景图像的位置。
可以理解的是,先使用Knuth-Durstenfeld洗牌算法加密API接口要返回给前端的数据文本,然后再将该文本内容中的字符使用CSS sprite图像展示,最后将文本字符在CSSsprite图像中的background-position的值经过Knuth-Durstenfeld逆向加密后返回给前端使用,正好可以把文本内容用CSS sprite图像展示出正确顺序的结果。
例如:在对所述数据文本进行加密时,可以基于Knuth-Durstenfeld洗牌算法(经典洗牌算法),Knuth-Durstenfeld洗牌算法是Knuth和Durstenfeld在Fisher–Yates洗牌算法基础上改进而来的。Fisher–Yates洗牌算法的思想是从原数组中随机抽取一个新的数组元素到新数组中,然后再剩下的数组中重复上一步抽取新的数组元素到新的数组中,直到原数组清空,得到的新数组即为打乱顺序的。Fisher–Yates洗牌算法的实现代码如下:
Figure BDA0002768165270000061
为了生成雪碧图,可以首先将加密后的数据文本处理得到统一码,并从所述数据文本中截取包括统一码的字符。然后再将截取得到的统一码的字符转换成图像,并将所述图像拆分得到每个字符对应的字符文件。最后将每个字符对应的字符文件合并成雪碧图。为了处理得到所述数据文本的统一码,可以基于escape函数,将加密后的数据文本处理得到统一码,escape函数是一种编码函数。
在本发明实施例中,所述雪碧图的格式为SVG(Scalable Vector Graphics,可缩放的矢量图形)或PNG(Portable Network Graphic Format,可移植网络图形格式)格式。当所述雪碧图的格式为PNG格式时,将所述图像拆分得到每个字符对应的字符文件的过程大致为:可以首先将截取得到的统一码的字符转换成SVG格式的图像,将所述SVG格式的图像拆分得到每个字符对应的字符文件。然后再将所述字符文件由SVG格式转换为PNG格式,并采用所述字符文件对应的字符的统一码命名所述字符文件。
可以理解的是,将SVG图像分别拆成单个SVG文件后可以通过SVG2PNG工具库将SVG图像转为PNG图像。之所以做这种转换,是为了更好的兼容IE等传统浏览器,SVG图像在IE9以下版本的浏览器中不能正确的显示出来。然后再将单个PNG图像合成CSS sprite图像,使用spritesmith工具库可以很方便地将多个PNG图像合成完整的CSS sprite图像,并计算出各个单元图形位置的background-position属性。
在接收到前端发送的API请求后,后端将待返回给前端的数据文本转换为unicode(统一码)编码,以方便后续合成CSS sprite图像。为了在前端使用CSS sprite图像来展示数据文本,需要组成CSS sprite图像的字符PNG图像以及各个字符文件在CSS sprite图像中的位置以确定background-position的属性值。所以,首先要获取返回给前端的数据文本转换为unicode编码,用来根据unicode编码来从字符文件中截取相应字符的图形并转化为PNG图像。
将字符文件解析为xml格式,可以知道每个字符对应unicode编码。在字符xml文件中,cmap标签下面的map子标签就是字符编码与字符名称的信息,map子标签code属性为unicode编码,name属性即字符名称。
可以使用python(Python是一种计算机程序设计语言)的fonttools库随意地编辑字符文件。通过fonttools中的ttLib的TTFont方法解析字符文件。代码如下:
from fontTools.ttLib import TTFont
import os
print(os.getcwd())
basePath=os.path.abspath(__file__)
folder=os.path.dirname(basePath)
dataPath=os.path.join(folder,'segoeui_semibold.woff')
print(dataPath)
font=TTFont(dataPath)
font.saveXML('segoeui.xml')
在字符xml文件中,cmap标签下面的map子标签就是字符编码与字符名称的信息,map子标签code属性为unicode编码,name属性即字符名称。glyf标签下面的TTGlyph标签则是字符名称对应的字形的信息,同样有name属性和map标签对应。
<map code="0x33"name="two"/><!--DIGIT THREE-->
使用fonttools工具库将API接口待处理的文本中所包含的字符从字符文件中截取出来,可以大大缩小后面合成CSS sprite图像的大小,从而节省大量网络带宽,从而使用户获得更好的使用体验。
步骤S102:将所述雪碧图中每个字符对应的背景图像起始位置的属性值进行加密。
在步骤S102中,可以首先将用于加密所述数据文本的密钥信息颠倒顺序。然后再基于逆向洗牌算法,根据颠倒顺序后的密钥信息,将所述雪碧图中每个字符对应的背景图像起始位置的属性值进行加密。
步骤S103:将所述数据文本的雪碧图以及所述雪碧图中每个字符对应的属性值发送给前端,通过所述前端根据所述数据文本的雪碧图以及所述雪碧图中每个字符对应的属性值显示正确顺序的数据文本。
在本发明实施例中,能够为实现前后端结合双向洗牌加密的反爬虫效果,让爬虫程序更难破解网页中的关键信息。
为了解决以上技术问题,本发明实施例提供了一种反爬虫方法,该方法的执行主体为终端。图2是本发明实施例的反爬虫方法的流程示意图,如图2所示,该反爬虫方法可以包括如下的步骤S201至步骤S202。
步骤S201:获取待显示数据文本的雪碧图的路径以及所述雪碧图中每个字符对应的属性值。
步骤S202:根据所述数据文本的雪碧图的路径以及所述雪碧图中每个字符对应的属性值显示正确顺序的数据文本。
在步骤S202中,根据所述数据文本的雪碧图的路径获取所述雪碧图,将所述雪碧图作为网页元素的背景样式的属性值,并根据所述雪碧图中每个字符对应的属性值,显示正确顺序的数据文本。
在本发明实施例中,该方法能够实现前后端结合双向洗牌加密的反爬虫效果,让爬虫程序更难破解网页中的关键信息。
参见图3,本发明实施例还提供了一种反爬虫方法,该反爬虫方法包括如下的步骤S301至步骤S308。
步骤S301:在接收到前端发送的API请求后,将要返回给前端的数据文本先使用随机密钥的Knuth-Durstenfeld洗牌算法进行加密,以打乱数据文本的顺序。
Knuth-Durstenfeld洗牌算法是Knuth和Durstenfeld在Fisher–Yates洗牌算法基础上改进而来的。Fisher–Yates洗牌算法的算法思想是从原数组中随机抽取一个新的数组元素到新的数组中,然后再剩下的数组中重复上一步抽取新的数组元素到新的数组中,直到原数组清空,得到的新数组即为打乱顺序的。Fisher–Yates洗牌算法的实现代码如下:
Figure BDA0002768165270000091
Knuth-Durstenfeld洗牌算法在Fisher–Yates洗牌算法基础上做出了改进,算法的时间复杂度从O(n2)提升到了O(n),其核心思想是将数组中最后一个元素与前面n-1个元素中的随机抽取一个元素交换,然后倒数第二个元素和前面n-2个元素中的随机抽取一个元素交换,依次重复此操作直至结束。Knuth-Durstenfeld洗牌算法不仅提升了时间复杂度,还节省了空间,不用新的数组来保存打乱顺序的新数组,其代码实现如下:
Figure BDA0002768165270000101
利用Knuth-Durstenfeld洗牌算法可以高效地将字符文件的map标签中的name属性打乱掉,但是为了显示出正常的文本内容,还需要将后台API传给前端的数据逆向变换之后使用逆向密钥加密,才能在前端显示还原出正常的内容。
在上面代码中,可以将随机抽取的数组下标索引由random.randrange(0,i+1)产生的,将Fisher–Yates洗牌算法执行过程中产生的随机数保存下来进行逆序操作作为后台API接口进行逆向Knuth-Durstenfeld洗牌算法操作的密钥。举个例子,“world”作为原文,使用Fisher–Yates洗牌算法执行中会执行4次交换元素的过程,random.randrange方法或者其他伪随机数生成器产生的随机数以此为0,3,1,0,以这4个数字为下表索引的元素分别和以4,3,2,1为下标索引的元素互换位置,执行步骤如下:
(4,0):"world"->"dorlw"
(3,3):"dorlw"->"dorlw"
(2,1):"dorlw"->"drolw"
(1,0):"drolw"->"rdolw"
经过Knuth-Durstenfeld洗牌算法加密后的密文为“rdolw”。然后将上一步产生的随机数“0,3,1,0”颠倒顺序,变为“0,1,3,1”作为逆向Knuth-Durstenfeld洗牌算法执行过程中的随机数来操作密文“rdolw”可以得到还原的文本“world”,逆向Knuth-Durstenfeld洗牌算法就是执行方向与原本Knuth-Durstenfeld洗牌算法执行方向相反,例如原本Knuth-Durstenfeld洗牌算法是从数组的最后面开始的元素与前面的元素中随机选取元素进行交换,逆向Knuth-Durstenfeld则从最前面开始的元素与后面的元素中随机选择元素进行交换。在上面的例子中继续进行逆向Knuth-Durstenfeld洗牌算法操作步骤如下:
(1,0):"rdolw"->"drolw"
(2,1):"drolw"->"dorlw"
(3,3):"dorlw"->"dorlw"
(4,0):"dorlw"->"world"
所以,经过以Knuth-Durstenfeld洗牌算法中随机数颠倒顺序为逆向Knuth-Durstenfeld洗牌算法随机数的操作后,密文“rdolw”又还原为原文“world”了。
步骤S302:将加密的数据文本所使用的unicode编码取出。
在接收到前端发送的API请求后,后端将待返回给前端的数据文本转换为unicode(统一码)编码,以方便后续合成CSS sprite图像。为了在前端使用CSS sprite图像来展示数据文本,需要组成CSS sprite图像的字符PNG图像以及各个字符文件在CSS sprite图像中的位置以确定background-position的属性值。所以,首先要获取返回给前端的数据文本转换为unicode编码,用来根据unicode编码来从字符文件中截取相应字符的图形并转化为PNG图像。
Unicode是一个编码方案,Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。它前128个字符就是ASCII码,之后是扩展码。在Unicode码中,各个字符块基于同样的标准。其中有希腊字母,西里尔文,亚美尼亚文,希伯来文等。而汉文,韩语,日语的象形文字占用从0X3000到0X9FFF的代码。最杰出的地方是,它只有一个字符集,有效的避免了双字节字符集的二义性。使用escape函数即可将中文等超出ASCII码范围的字符转换为unicode编码。使用JavaScript的escape函数即可将字符转换unicode编码,其结果的%u开头标记为unicode编码的标记字符,后面4位16进制编码为unicode的编码值。
//JavaScript
escape('建信金科')
//"%u5EFA%u4FE1%u91D1%u79D1"
步骤S303:依照加密后的数据文本的unicode截取出仅包含加密文本的字符;然后将截取后的字符的unicode顺序记录下来。
通过解析字符文件为xml格式,可以知道每个字符对应unicode编码。在字符xml文件中,cmap标签下面的map子标签就是字符编码与字符名称的信息,map子标签code属性为unicode编码,name属性即字符名称。
使用python的fonttools库可以随意地编辑字符文件。通过fonttools中的ttLib的TTFont方法解析字符文件。代码如下:
from fontTools.ttLib import TTFont
import os
print(os.getcwd())
basePath=os.path.abspath(__file__)
folder=os.path.dirname(basePath)
dataPath=os.path.join(folder,'segoeui_semibold.woff')
print(dataPath)
font=TTFont(dataPath)
font.saveXML('segoeui.xml')
在字符xml文件中,cmap标签下面的map子标签就是字符编码与字符名称的信息,map子标签code属性为unicode编码,name属性即字符名称。glyf标签下面的TTGlyph标签则是字符名称对应的字形的信息,同样有name属性和map标签对应。
<map code="0x33"name="two"/><!--DIGIT THREE-->
使用fonttools工具库将API接口待处理的文本中所包含的字符从字符文件中截取出来,可以大大缩小后面合成CSS sprite图像的大小,从而节省大量网络带宽,从而使用户获得更好的使用体验。
步骤S304:将该字符转换成SVG格式的图像,然后再将SVG格式的图像按照一个一个字符拆分成单个SVG格式的字符文件。
将截取到的字符文件转化为SVG格式的图像。SVG是一种用XML定义的语言,用来描述二维矢量及矢量/栅格图形。SVG提供了3种类型的图形对象:矢量图形(vectorgraphicshape例如:由直线和曲线组成的路径)、图象(image)、文本(text)。还可以对图形对象进行分组、添加样式、变换、组合等操作,特征集包括嵌套变换(nestedtransformations)、剪切路径(clippingpaths)、alpha蒙板(alphamasks)、滤镜效果(filtereffects)、模板对象(templateobjects)和其它扩展(extensibility)。SVG格式容易编辑,字符中的一个个字符将成为SVG文件中的单个单元,以方便将其拆分出来。可以使用ttf2SVG工具将ttf字符文件转换成SVG文件,如果使用的其他字符可以先转换为ttf字符然后再转换为SVG文件,如下面代码所示,可以将woff格式字符文件转为ttf格式然后再转为SVG文件。
Figure BDA0002768165270000131
步骤S305:然后再将SVG格式的字符文件转化为PNG图像并使用该字符的unicode编码命名该图像。
将SVG图像分别拆成单个SVG文件后可以通过SVG2PNG工具库将SVG图像转为PNG图像。之所以做这种转换,是为了更好的兼容IE等传统浏览器,SVG图像在IE9以下版本的浏览器中不能正确的显示出来。然后再将单个PNG图像合成CSS sprite图像,使用spritesmith工具库可以很方便地将多个PNG图像合成完整的CSS sprite图像,并计算出各个单元图形位置的background-position属性。
Figure BDA0002768165270000141
步骤S306:使用node-sprite将一个个PNG格式的字符文件合成CSS sprite图像的完整的PNG图像,并记录下每个unicode编码对应的background-position属性的值。
步骤S307:使用Knu3th-Durstenfeld洗牌算法的逆向密钥加密unicode对应background-position属性的值,将加密混排的background-position属性值与CSS sprite图像在服务器的路径返回给前端。
步骤S308:在前端使用CSS sprite图像来展示接口返回的数据文本内容,这就使浏览网页内容的客户能看到关键文本信息是使用CSS sprite图像所展示的,而爬虫程序想要知道真实文本内容必须同时爬取CSS sprite图像以及每个文本图像的background-position属性值,然后根据人工识别图像以及计算background-position属性值去获取内容,或者使用OCR(Optical Character Recognition,光学字符识别)工具去识别CSSsprite图像中的文本,大大增加爬虫的成本。
将数据文本的字符所在的单元图形位置的background-position属性值记录下来,然后使用Knuth-Durstenfeld算法逆向加密,将这些background-position属性值数组的顺序混淆掉。将合成的CSS sprite图像在服务器的地址路径和加密混淆后的background-position属性值数组返回给前端,前端使用CSS sprite图像和background-position属性值展示出该文本内容,即可还原出正确顺序的结果。
在本发明实施例中,该方法能够实现前后端结合双向洗牌加密的反爬虫效果,让爬虫程序更难破解网页中的关键信息。
除此之外,本发明实施例的方法还具有以下优点:
1)后台API接口中的数据经过逆向Knuth-Durstenfeld洗牌算法加密后更加安全,接口数据得到了一定程度的保护;
2)由于每次API请求都经过了加密,且每次Knuth-Durstenfeld洗牌算法的加密都是随机的,使同样的请求返回的CSS sprite图像几乎都是不同的,更难以被爬虫程序破解;
3)CSS sprite图像使用了png格式,相比于自定义字体反爬虫或者svg图片的反爬虫有更好的浏览器兼容性,能在低版本的IE浏览器中使用。
图4是本发明第一实施例的反爬虫装置的模块示意图,参见图4,该反爬虫装置400包括:
生成模块401,用于将数据文本进行加密,并根据加密后的数据文本生成雪碧图;
加密模块402,用于将所述雪碧图中每个字符对应的背景图像起始位置的属性值进行加密;
发送模块403,用于将所述数据文本的雪碧图以及所述雪碧图中每个字符对应的属性值发送给前端,通过所述前端根据所述数据文本的雪碧图以及所述雪碧图中每个字符对应的属性值显示正确顺序的数据文本。
可选地,所述生成模块401进一步用于:
基于洗牌算法,采用随机的密钥信息将数据文本进行加密。
可选地,所述生成模块401进一步用于:
将加密后的数据文本处理得到统一码,并从所述数据文本中截取包括统一码的字符;
将截取得到的统一码的字符转换成图像,并将所述图像拆分得到每个字符对应的字符文件;
将每个字符对应的字符文件合并成雪碧图。
可选地,所述生成模块401进一步用于:基于escape函数,将加密后的数据文本处理得到统一码。
可选地,所述雪碧图的格式为SVG或PNG格式。
可选地,当所述雪碧图的格式为PNG格式时,所述生成模块401进一步用于:
将截取得到的统一码的字符转换成SVG格式的图像,将所述SVG格式的图像拆分得到每个字符对应的字符文件;
将所述字符文件由SVG格式转换为PNG格式,并采用所述字符文件对应的字符的统一码命名所述字符文件。
可选地,所述加密模块402进一步用于:
将用于加密所述数据文本的密钥信息颠倒顺序;
基于逆向洗牌算法,根据颠倒顺序后的密钥信息,将所述雪碧图中每个字符对应的背景图像起始位置的属性值进行加密。
根据本发明实施例的技术方案,能够实现前后端结合双向洗牌加密的反爬虫效果,让爬虫程序更难破解网页中的关键信息。
图5是本发明第二实施例的反爬虫装置的模块示意图,参见图5,该反爬虫装置500可以包括:
获取模块501,用于获取待显示数据文本的雪碧图的路径以及所述雪碧图中每个字符对应的属性值;
显示模块502,用于根据所述数据文本的雪碧图的路径以及所述雪碧图中每个字符对应的属性值显示正确顺序的数据文本。
可选地,所述显示模块502进一步用于:
根据所述数据文本的雪碧图的路径获取所述雪碧图;
将所述雪碧图作为网页元素的背景样式的属性值,并根据所述雪碧图中每个字符对应的属性值,显示正确顺序的数据文本。
根据本发明实施例的技术方案,能够实现前后端结合双向洗牌加密的反爬虫效果,让爬虫程序更难破解网页中的关键信息。
图6示出了可以应用本发明实施例的反爬虫方法或反爬虫装置的示例性***架构600。
如图6所示,***架构600可以包括终端设备601、602、603,网络604和服务器605。网络604用以在终端设备601、602、603和服务器605之间提供通信链路的介质。网络604可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备601、602、603通过网络604与服务器605交互,以接收或发送消息等。终端设备601、602、603上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备601、602、603可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器605可以是提供各种服务的服务器,例如对用户利用终端设备601、602、603所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
应该理解,图6中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图7,其示出了适于用来实现本发明实施例的终端设备的计算机***700的结构示意图。图7示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,计算机***700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有***700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本发明的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:将数据文本进行加密,并根据加密后的数据文本生成雪碧图;将所述雪碧图中每个字符对应的背景图像起始位置的属性值进行加密;将所述数据文本的雪碧图以及所述雪碧图中每个字符对应的属性值发送给前端,通过所述前端根据所述数据文本的雪碧图以及所述雪碧图中每个字符对应的属性值显示正确顺序的数据文本。
根据本发明实施例的技术方案,能够实现前后端结合双向洗牌加密的反爬虫效果,让爬虫程序更难破解网页中的关键信息。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (15)

1.一种反爬虫方法,其特征在于,包括:
将数据文本进行加密,并根据加密后的数据文本生成雪碧图;
将所述雪碧图中每个字符对应的背景图像起始位置的属性值进行加密;
将所述数据文本的雪碧图以及所述雪碧图中每个字符对应的属性值发送给前端,通过所述前端根据所述数据文本的雪碧图以及所述雪碧图中每个字符对应的属性值显示正确顺序的数据文本。
2.根据权利要求1所述的方法,其特征在于,将数据文本进行加密包括:
基于洗牌算法,采用随机的密钥信息将数据文本进行加密。
3.根据权利要求1所述的方法,其特征在于,根据加密后的数据文本生成雪碧图包括:
将加密后的数据文本处理得到统一码,并从所述数据文本中截取包括统一码的字符;
将截取得到的统一码的字符转换成图像,并将所述图像拆分得到每个字符对应的字符文件;
将每个字符对应的字符文件合并成雪碧图。
4.根据权利要求3所述的方法,其特征在于,将加密后的数据文本处理得到统一码包括:
基于escape函数,将加密后的数据文本处理得到统一码。
5.根据权利要求3所述的方法,其特征在于,所述雪碧图的格式为SVG或PNG格式。
6.根据权利要求5所述的方法,其特征在于,当所述雪碧图的格式为PNG格式时,将截取得到的统一码的字符转换成图像,并将所述图像拆分得到每个字符对应的字符文件包括:
将截取得到的统一码的字符转换成SVG格式的图像,将所述SVG格式的图像拆分得到每个字符对应的字符文件;
将所述字符文件由SVG格式转换为PNG格式,并采用所述字符文件对应的字符的统一码命名所述字符文件。
7.根据权利要求1所述的方法,其特征在于,将所述雪碧图中每个字符对应的背景图像起始位置的属性值进行加密包括:
将用于加密所述数据文本的密钥信息颠倒顺序;
基于逆向洗牌算法,根据颠倒顺序后的密钥信息,将所述雪碧图中每个字符对应的背景图像起始位置的属性值进行加密。
8.一种反爬虫方法,其特征在于,包括:
获取待显示数据文本的雪碧图的路径以及所述雪碧图中每个字符对应的属性值;
根据所述数据文本的雪碧图的路径以及所述雪碧图中每个字符对应的属性值显示正确顺序的数据文本。
9.根据权利要求8所述的方法,其特征在于,根据所述数据文本的雪碧图的路径以及所述雪碧图中每个字符对应的属性值显示正确顺序的数据文本包括:
根据所述数据文本的雪碧图的路径获取所述雪碧图;
将所述雪碧图作为网页元素的背景样式的属性值,并根据所述雪碧图中每个字符对应的属性值,显示正确顺序的数据文本。
10.一种反爬虫装置,其特征在于,包括:
生成模块,用于将数据文本进行加密,并根据加密后的数据文本生成雪碧图;
加密模块,用于将所述雪碧图中每个字符对应的背景图像起始位置的属性值进行加密;
发送模块,用于将所述数据文本的雪碧图以及所述雪碧图中每个字符对应的属性值发送给前端,通过所述前端根据所述数据文本的雪碧图以及所述雪碧图中每个字符对应的属性值显示正确顺序的数据文本。
11.根据权利要求10所述的反爬虫装置,其特征在于,所述生成模块进一步用于:
根据加密后的数据文本生成雪碧图包括:
将加密后的数据文本处理得到统一码,并从所述数据文本中截取包括统一码的字符;
将截取得到的统一码的字符转换成图像,并将所述图像拆分得到每个字符对应的字符文件;
将每个字符对应的字符文件合并成雪碧图。
12.一种反爬虫装置,其特征在于,包括:
获取模块,用于获取待显示数据文本的雪碧图的路径以及所述雪碧图中每个字符对应的属性值;
显示模块,用于根据所述数据文本的雪碧图的路径以及所述雪碧图中每个字符对应的属性值显示正确顺序的数据文本。
13.一种服务器,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
14.一种终端,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求8-9中任一所述的方法。
15.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-9中任一所述的方法。
CN202011240370.4A 2020-11-09 2020-11-09 反爬虫方法和装置 Pending CN112422543A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011240370.4A CN112422543A (zh) 2020-11-09 2020-11-09 反爬虫方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011240370.4A CN112422543A (zh) 2020-11-09 2020-11-09 反爬虫方法和装置

Publications (1)

Publication Number Publication Date
CN112422543A true CN112422543A (zh) 2021-02-26

Family

ID=74780773

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011240370.4A Pending CN112422543A (zh) 2020-11-09 2020-11-09 反爬虫方法和装置

Country Status (1)

Country Link
CN (1) CN112422543A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112989242A (zh) * 2021-03-30 2021-06-18 多点(深圳)数字科技有限公司 一种生成并上传svg雪碧图的方法
CN113360930A (zh) * 2021-06-28 2021-09-07 广州市保伦电子有限公司 一种实现前后端字符相异加密方法及处理终端
CN114896531A (zh) * 2022-04-27 2022-08-12 北京聚通达科技股份有限公司 图像处理的方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180041530A1 (en) * 2015-04-30 2018-02-08 Iyuntian Co., Ltd. Method and system for detecting malicious web addresses
US20190166104A1 (en) * 2015-02-16 2019-05-30 Arebus, LLC System, method and application for transcoding data into media files
CN110851682A (zh) * 2019-10-17 2020-02-28 上海易点时空网络有限公司 文本反爬虫方法、服务器、显示终端
CN111414107A (zh) * 2020-03-17 2020-07-14 中国银行股份有限公司 可缩放矢量图形处理方法及***
CN111683098A (zh) * 2020-06-10 2020-09-18 创新奇智(成都)科技有限公司 反爬虫方法、装置、电子设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190166104A1 (en) * 2015-02-16 2019-05-30 Arebus, LLC System, method and application for transcoding data into media files
US20180041530A1 (en) * 2015-04-30 2018-02-08 Iyuntian Co., Ltd. Method and system for detecting malicious web addresses
CN110851682A (zh) * 2019-10-17 2020-02-28 上海易点时空网络有限公司 文本反爬虫方法、服务器、显示终端
CN111414107A (zh) * 2020-03-17 2020-07-14 中国银行股份有限公司 可缩放矢量图形处理方法及***
CN111683098A (zh) * 2020-06-10 2020-09-18 创新奇智(成都)科技有限公司 反爬虫方法、装置、电子设备及存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112989242A (zh) * 2021-03-30 2021-06-18 多点(深圳)数字科技有限公司 一种生成并上传svg雪碧图的方法
CN112989242B (zh) * 2021-03-30 2023-06-13 多点(深圳)数字科技有限公司 一种生成并上传svg雪碧图的方法
CN113360930A (zh) * 2021-06-28 2021-09-07 广州市保伦电子有限公司 一种实现前后端字符相异加密方法及处理终端
CN114896531A (zh) * 2022-04-27 2022-08-12 北京聚通达科技股份有限公司 图像处理的方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN112422543A (zh) 反爬虫方法和装置
US8042036B1 (en) Generation of a URL containing a beginning and an ending point of a selected mark-up language document portion
CN107612683B (zh) 一种加解密方法、装置、***、设备和存储介质
US20190179965A1 (en) Method and apparatus for generating information
CN105453078A (zh) 捆绑包取回
CN107908632B (zh) 网站文件处理方法、装置、网站文件处理平台及存储介质
CN104462522A (zh) 一种文件在线预览的方法和移动终端、服务器
KR102176655B1 (ko) 폰트 파일 생성 서버 및 방법
CN105378740A (zh) 捆绑包签名
CN110263882B (zh) 图像生成方法、信息获取方法、装置和电子设备
CN108777685A (zh) 用于处理信息的方法和装置
CN109062560B (zh) 用于生成信息的方法和装置
CN111191255A (zh) 信息加密处理的方法、服务器、终端、设备以及存储介质
JP2013145420A (ja) 暗号化データの高速な類似検索処理システム
CN111046252A (zh) 一种信息处理的方法、装置、介质、电子设备和***
CN112860978B (zh) 全局搜索方法和装置
CN112182603B (zh) 反爬虫方法和装置
JP7217181B2 (ja) ウェアラブルデバイス、情報処理方法、装置及びシステム
CN110647327A (zh) 基于卡片的用户界面动态控制的方法和装置
CN107729345B (zh) 网站数据处理方法、装置、网站数据处理平台及存储介质
CN112784596A (zh) 一种识别敏感词的方法和装置
CN114039801B (zh) 一种短链接生成方法、解析方法和***、设备、存储介质
CN110929512A (zh) 一种数据增强方法和装置
CN110069728A (zh) 用于展示图片的方法及装置
CN110069753A (zh) 一种生成相似度信息的方法和装置

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20220930

Address after: 25 Financial Street, Xicheng District, Beijing 100033

Applicant after: CHINA CONSTRUCTION BANK Corp.

Address before: 12 / F, 15 / F, No. 99, Yincheng Road, Shanghai pilot Free Trade Zone, 200120

Applicant before: Jianxin Financial Science and Technology Co.,Ltd.

RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210226