CN111539025B - 一种页面展示方法、装置、电子设备及存储介质 - Google Patents
一种页面展示方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111539025B CN111539025B CN202010379394.1A CN202010379394A CN111539025B CN 111539025 B CN111539025 B CN 111539025B CN 202010379394 A CN202010379394 A CN 202010379394A CN 111539025 B CN111539025 B CN 111539025B
- Authority
- CN
- China
- Prior art keywords
- page
- data
- font
- format
- font file
- 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
-
- 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/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供了一种页面展示方法、装置、电子设备及存储介质。所述方法,包括:响应于针对任一页面的访问请求,发送针对所述页面的数据获取请求至所述页面对应的服务器;接收所述服务器针对所述数据获取请求返回的第一页面数据和字体数据;基于所述字体数据对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染;其中,所述字体数据包括用于解密的字体文件、所述字体文件的获取链接中的至少一种,所述第一页面数据中包括基于与所述字体文件对应的自定义字符编码加密后的页面数据。从而取得了在保证用户正常访问页面的同时提高页面反爬能力的有益效果。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种页面展示方法、装置、电子设备及存储介质。
背景技术
随着大数据和人工智能的火热,人们对数据的渴望,在这个时代达到了一种前所未有的高度。也造就了一个网络爬虫肆无忌惮,横行无忌的局面。几只脑回路有缺陷的爬虫,就足以使一个小型站点陷入瘫痪。例如,因为近些年房产市场的火热,海量房产信息(尤其是价格,面积等高价值信息),成为爬虫们的重点关注对象,打击恶意爬虫,保护公司数字资产,也因此变得越来越重要,越来越值得我们付出更多的精力。
从防御角度来讲,限制访问频率,封禁可疑IP(Internet Protocol,互联网协议)地址,都是常见的反爬手段。但是上述反爬技术仍然存在效果欠佳等技术问题。
发明内容
本发明实施例提供一种页面展示方法、装置、电子设备及存储介质,以解决现有的反爬技术效果欠佳等技术问题的问题。
为了解决上述技术问题,本发明是这样实现的:
第一方面,本发明实施例提供了一种页面展示方法,包括:
响应于针对任一页面的访问请求,发送针对所述页面的数据获取请求至所述页面对应的服务器;
接收所述服务器针对所述数据获取请求返回的第一页面数据和字体数据;
基于所述字体数据对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染;
其中,所述字体数据包括用于解密的字体文件、所述字体文件的获取链接中的至少一种,所述第一页面数据中包括基于与所述字体文件对应的自定义字符编码加密后的页面数据。
可选地,所述字体文件包括适用于满足预设版本条件的浏览器的第一格式的字体文件,和/或适用于不满足预设版本条件的浏览器的第二格式的字体文件,且所述第一格式的字体文件在所述字体数据中的存在形式为第一格式的字体文件,所述第二格式的字体文件在所述字体数据中的存在形式为所述第二格式的字体文件的获取链接。
可选地,所述基于所述字体数据对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染的步骤,包括:
响应于触发所述访问请求的浏览器满足所述预设版本条件,从所述字体数据获取所述第一格式的字体文件;
将所述第一格式的字体文件转换为代码文件并嵌入所述第一页面数据中,以对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染。
可选地,所述基于所述字体数据对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染的步骤,包括:
响应于触发所述访问请求的浏览器不满足所述预设版本条件,从所述字体数据获取所述第二格式的字体文件的获取链接;
根据所述获取链接加载所述第二格式的字体文件;
基于加载完成的所述第二格式的字体文件对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染。
可选地,所述根据所述获取链接加载所述第二格式的字体文件的步骤,包括:
将所述第二格式的字体文件作为图片执行加载操作;
响应于接收到针对所述加载操作的图片解析失败指令,确认所述第二格式的字体文件加载完成。
可选地,所述基于加载完成的所述第二格式的字体文件对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染的步骤,包括:
响应于确认所述第二格式的字体文件加载完成,基于加载完成的所述第二格式的字体文件对所述第一页面数据进行解密;
从确认所述第二格式的字体文件加载完成的时刻开始,延迟预设时间段之后,基于当前解密得到的第二页面数据渲染所述页面。
可选地,所述第一页面数据中还包含未加密数据,所述基于所述字体数据对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染的步骤的步骤,包括:
响应于触发所述访问请求的浏览器不满足所述预设版本条件,获取所述第一页面数据中的未加密数据,并基于所述未加密数据进行页面渲染,得到第一页面;
基于所述字体数据对所述加密数据进行解密,并在所述第一页面中显示解密得到的数据。
可选地,所述字体数据和所述自定义字符编码由所述服务器在接收到所述数据获取请求后,从用于加密的第三方服务器获取得到,所述自定义字符编码由所述第三方服务器随机生成,所述字体数据由所述第三方服务器根据所述自定义字符编码生成,所述字体文件中包含所述自定义字符编码对应的每个待加密字符,以及与每个所述待加密字符存在映射关系的字符的字符编号。
第二方面,本发明实施例提供了一种页面展示装置,包括:
数据请求模块,用于响应于针对任一页面的访问请求,发送针对所述页面的数据获取请求至所述页面对应的服务器;
数据获取模块,用于接收所述服务器针对所述数据获取请求返回的第一页面数据和字体数据;
页面渲染模块,用于基于所述字体数据对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染;
其中,所述字体数据包括用于解密的字体文件、所述字体文件的获取链接中的至少一种,所述第一页面数据中包括基于与所述字体文件对应的自定义字符编码加密后的页面数据。
可选地,所述字体文件包括适用于满足预设版本条件的浏览器的第一格式的字体文件,和/或适用于不满足预设版本条件的浏览器的第二格式的字体文件,且所述第一格式的字体文件在所述字体数据中的存在形式为第一格式的字体文件,所述第二格式的字体文件在所述字体数据中的存在形式为所述第二格式的字体文件的获取链接。
可选地,所述页面渲染模块,包括:
第一字体文件获取子模块,用于响应于触发所述访问请求的浏览器满足所述预设版本条件,从所述字体数据获取所述第一格式的字体文件;
第一页面渲染子模块,用于将所述第一格式的字体文件转换为代码文件并嵌入所述第一页面数据中,以对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染。
可选地,所述页面渲染模块,包括:
链接获取子模块,用于响应于触发所述访问请求的浏览器不满足所述预设版本条件,从所述字体数据获取所述第二格式的字体文件的获取链接;
第二字体文件获取子模块,用于根据所述获取链接加载所述第二格式的字体文件;
第二页面渲染子模块,用于基于加载完成的所述第二格式的字体文件对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染。
可选地,所述第二字体文件获取子模块,包括:
字体文件加载单元,用于将所述第二格式的字体文件作为图片执行加载操作;
加载完成确认单元,用于响应于接收到针对所述加载操作的图片解析失败指令,确认所述第二格式的字体文件加载完成。
可选地,所述第二页面渲染子模块,包括:
数据解密单元,用于响应于确认所述第二格式的字体文件加载完成,基于加载完成的所述第二格式的字体文件对所述第一页面数据进行解密;
页面渲染单元,用于从确认所述第二格式的字体文件加载完成的时刻开始,延迟预设时间段之后,基于当前解密得到的第二页面数据渲染所述页面。
可选地,所述页面渲染模块,包括:
第三页面渲染子模块,用于响应于触发所述访问请求的浏览器不满足所述预设版本条件,获取所述第一页面数据中的未加密数据,并基于所述未加密数据进行页面渲染,得到第一页面;
第四页面渲染子模块,用于基于所述字体数据对所述加密数据进行解密,并在所述第一页面中显示解密得到的数据。
可选地,所述字体数据和所述自定义字符编码由所述服务器在接收到所述数据获取请求后,从用于加密的第三方服务器获取得到,所述自定义字符编码由所述第三方服务器随机生成,所述字体数据由所述第三方服务器根据所述自定义字符编码生成,所述字体文件中包含所述自定义字符编码对应的每个待加密字符,以及与每个所述待加密字符存在映射关系的字符的字符编号。
第三方面,本发明实施例另外提供了一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的页面展示方法的步骤。
第四方面,本发明实施例另外提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的页面展示方法的步骤。
在本发明实施例中,通过自定义字符编码对网页数据进行加密,同时返回加密后的网页数据和基于定义字符编码生成的字体文件至客户端,以在提高反爬虫能力的同时避免影响正常用户的视觉效果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中的一种页面展示方法的步骤流程图;
图2是本发明实施例中的一种字体字号映射表的示意图;
图3是本发明实施例中的另一种页面展示方法的步骤流程图;
图4是本发明实施例中的一种以图片形式加载字体文件的代码流程示意图;
图5是本发明实施例中的一种页面的加密服务流程示意图;
图6是本发明实施例中的一种页面展示装置的结构示意图;
图7是本发明实施例中的另一种页面展示装置的结构示意图;
图8是本发明实施例中的一种电子设备的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参照图1,示出了本发明实施例中一种页面展示方法的步骤流程图。
步骤110,响应于针对任一页面的访问请求,发送针对所述页面的数据获取请求至所述页面对应的服务器。
在实际应用中,客户端在接收到用户触发的针对任一页面的访问请求之后,为了在客户端渲染相应地页面以供用户浏览,则可以向相应页面对应的服务器请求相应页面的数据。也即,在接收到针对任一页面的访问请求之后,响应于相应的访问请求,则可以发送针对相应页面的数据获取请求至相应页面对应的服务器,以获取用于渲染页面的相关数据。而且,在访问请求以及数据获取请求中,都可以包含相应页面的页面标识等信息,以查找相应页面的相关数据。
当然,在本发明实施例中,访问请求和数据获取请求中也可以包含其他任何所需信息,对此本发明实施例不加以限定。而且,用户可以通过任何可用方式触发访问请求,对此本发明实施例也不加以限定。另外,本发明实施例中的页面可以为任何可以请求访问的页面,例如网页页面、应用程序中的页面、Native(原生)页面、RN(ReactNative)页面,等等。
步骤120,接收所述服务器针对所述数据获取请求返回的第一页面数据和字体数据;其中,所述字体数据包括用于解密的字体文件、所述字体文件的获取链接中的至少一种,所述第一页面数据中包括基于与所述字体文件对应的自定义字符编码加密后的页面数据。
服务器在接收到客户端发送的数据获取请求之后,则可以返回针对数据获取请求的响应数据。而且,在本发明实施例中,为了避免响应数据被网络爬虫盗用,在返回响应数据之前,还可以对页面数据进行加密,同时为了客户端能够正常显示页面,还可以发送用以解密的字体数据至相应客户端。也即,在服务器返回的响应数据中可以包含第一页面数据和字体数据。其中,述字体数据包括用于解密的字体文件、所述字体文件的获取链接中的至少一种,所述第一页面数据中包括基于与所述字体文件对应的自定义字符编码加密后的页面数据。
其中,字体文件的具体格式可以根据需求进行自定义设置,而且为了满足不同应用场景的需求,可以针对同一字体文件设置多个不同格式,存在在字体数据中。例如,可以在字体数据中设置ttf(TrueTypeFont)格式以及eot格式的字体文件以供使用。其中,ttf格式适用于高版本浏览器,eot格式则可以用来兼容低版本浏览器(例如包括IE8以及IE8以下版本浏览器)。
而且,为了满足不同应用场景的需求,服务器可以直接返回字体文件本身,也可以返回字体文件的获取链接。例如,对于上述适用于高版本浏览器的ttf格式的字体文件而言,字体数据中可以包括ttf格式的字体文件本身,而对于上述适用于较低版本浏览器的eot格式的字体文件而言,在字体数据中则可以包括eot格式的字体文件的获取链接。
其中,与字体文件对应的自定义字符编码也可以根据需求就那些自定义设置,对此本发明实施例不加以限定。
众所周知,计算机是不识字的。在它那个只认0和1的脑子看来,世界上所有东西都是数字。为了教会计算机识字,必须定义一组映射关系。比如:41代表A,42代表B。这样一来,计算机这个数字脑袋总算能认字了。而这个数字到文字的映射关系表,学名就是字符编码了。目前常见的字符编码有ASCII、GB2312、Unicode等等。
在实际应用中,字符编码定义了数字与文字的对应关系,但是让人类在脑子里完成数字到文字的转换是不现实的。人类希望在显示器上看到“A”这个形状,而不是41这个数字。所以需要引入一个字号到字形的映射关系表,告诉计算机每次拿到41,就去如图2所示的映射表里把41号对应的矢量图拿出来放在显示器上。这个映射表,就是一种字体文件。
字符编码只是一种大家公认的规则,并没有客观的对错之分,只要两台计算机的字符编码是一致的,它们就可以正确通讯。但是如果使用的编码不一致,就会出现乱码现象。为了保证信息的准确传输,可以使用公认的字符编码和大众交流,当然也可以创造相对私密的字符编码,以加密需要保护的信息。在本发明实施例中,为了降低页面数据被爬虫盗取的可能性,可以通过基于不同于通用的自定义的自定义字符编码对页面数据进行加密,进而则可以基于当前的自定义字符编码生成用于解密的字体文件,以方便正常访问的客户端可以正常显示页面数据。
其中自定义字符编码可以根据需求进行自定义设置,对此本发明实施例不加以限定。例如,可以通过部分不常用的生僻字或者是特殊符号等替换页面数据中需要加密的字符,那么则可以将每个需要加密的字符的字符编号调整为某一生僻字或者是特殊符号的字符编号,即得到自定义字符编码。
假如,需要输出“十岁”这两个字到页面上,并且希望这个信息对爬虫保密。首先,可以重新自定义“十岁”的字号,我们将它们随便定义为两个生僻字的字号。具体地,可以将字符“十”的字符编号替换为生僻字“嬜”的字符编号,相应地可以将字符“岁”的字符编号替换为生僻字“孏”的字符编号。服务器返回“十岁”时,可以根据当前的自定义字符编码,输出"嬜孏"对应的字符编号——23324 23375。这样便完成了对页面数据的加密过程,但是对于正常访问的客户端而言,为了保证其能够正常展示加密前的原始的页面数据,所以对于每一种自定义字符编码,都需要创造一个对应的自定义的字体文件来进行解密。
也即,对应上述的自定义字符编码可以创建自定义的字体文件,在字体文件中可以将23324字号(也即字符编号)对应的字形修改为“十”,将23375字号对应的字形(也即字符)修改为“岁”。
这样一来,客户端可以通过与当前的自定义字符编码对应的字体文件解密之后展示原始的“十岁”,而爬虫使用通用的字体文件解析之后,只能收到乱码“嬜孏”。
当然,在实际的项目中,这个加密映射关系也即自定义字符编码和相应的字体文件可以不断的变化,以能保证不被爬虫找到规律。
其中,自定义字符编码可以具体需要加密的数据进行自定义设置,对此本发明实施例不加以限定。例如,假设某一业务场景中大多数情况下只需要对价格进行加密,此时可以选取0-9十个数字作为加密字符,同时挑选了十个生僻字符作为对应,这种对应关系也即此时的自定义字符编码,也是此时加密的密钥,为了保证不被找到规律,对应关系可以是随机生成的,每次获取都会发生变化。在得到自定义字符编码之后,则可以基于自定义字符编码对原始的页面数据进行加密,并且可以生成自定义字符编码对应的用于解密的字体文件。在本发明实施例中,可以通过任何可用方式生成字体文件,对此本发明实施例不加以限定。
这样便得到了一组包括自定义字符编码和字体文件的加解密数据,可以提供给调用者使用。而且可以每隔几秒便会重新运行一遍上面的方法,得到一组新的加解密数据,以保证破解者无法找到规律。
步骤130,基于所述字体数据对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染。
在得到服务器返回的第一页面数据和字体数据之后,为了展示未加密前的页面,则可以基于当前接收到的字体数据对第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染。
例如,假设在服务器返回第一页面数据中,“十”、“岁”的字符编号分别为“嬜”、“孏”的字符编号,也即分别为23324、23375。
相应地,在上述自定义字符编码对应的字体文件中,23324字号(也即字符编号)对应的字形为“十”,将23375字号对应的字形(也即字符)为“岁”。那么此时在第二页面数据中,则可以将第一页面数据中的字符编号23324和字符编号23375分别经解密转换为“十”、“岁”,从而基于解密得到的第二页面数据进行页面渲染。
相应地,也可以在上述自定义字符编码对应的字体文件中,将“嬜”、“孏”的字符编号分别调至为“十”、“岁”的字符编号,对此本发明实施例不加以限定。当然,在本发明实施例中,上述“嬜”、“孏”等用于辅助加密的字符一般可以自定义设置,而且一般可以设置为生僻字或者不在页面中显示的字符,对页面显示的影响力很小,那么此时也可以不对上述“嬜”、“孏”等用于辅助加密的字符的字符编号进行调整,对此本发明实施例不加以限定。
在本发明实施例中,如果在字体数据中包含当前所需的字体文件的获取链接,那么则可以相应地根据获取链接获取相应的字体文件,对此本发明实施例不加以限定。
可选地,在本发明实施例中,字体文件包括适用于满足预设版本条件的浏览器的第一格式的字体文件,和/或适用于不满足预设版本条件的浏览器的第二格式的字体文件,且所述第一格式的字体文件在所述字体数据中的存在形式为第一格式的字体文件,所述第二格式的字体文件在所述字体数据中的存在形式为所述第二格式的字体文件的获取链接。
如上述,有了作为加密密钥的自定义字符编码之后,下一步就是生成该密钥对应的字体文件。而且在本发明实施例中,考虑到不同版本浏览器的需求限制,可以设置多个不同格式的字体文件,以适配不同版本的浏览器。也即,字体文件可以包括适用于满足预设版本条件的浏览器的第一格式的字体文件,和/或适用于不满足预设版本条件的浏览器的第二格式的字体文件,且所述第一格式的字体文件在所述字体数据中的存在形式为第一格式的字体文件,所述第二格式的字体文件在所述字体数据中的存在形式为所述第二格式的字体文件的获取链接。
例如,可以从标准的svg(Scalable Vector Graphics,可伸缩矢量图形)字体文件中去除了其他的字符,只保留需要加密的字符。而后将字符对应的编号按照加密密钥的对应关系重新排列,生成一份与该密钥对应的用于解密自定义的字体文件,再将其转换为浏览器需要的格式,例如上述的第一格式、第二格式,等等。
其中的预设版本条件、第一格式、第二格式均可以根据需求进行自定义设置,对此本发明实施例不加以限定。例如,可以根据自定义字符编码修改标准的svg字体文件,然后将修改后的字体文件转化为ttf(TrueTypeFont)格式以及eot格式以供使用。其中,ttf格式适用于现代的较高版本的浏览器,eot格式则可以用来兼容低版本浏览器(例如IE8以下,包括IE8等)。此时的预设版本条件可以为浏览器的版本为除上述低版本之外的高版本,第一格式为ttf格式,第二格式为eot格式。
而且,在实际应用中,字体文件的加载和解析需要一段时间,这段时间之内,网页会使用系统字体来解析页面,此时由于数据尚未经过解密,那么给爬虫准备的乱码,就会展示在页面中,出现在用户面前。虽然只是一闪而过,但是确实会影响用户体验。因此,在本发明实施例中,为了避免上述问题可以在用于解密的字体文件加载完成并对第一页面数据解密完成后才进行页面渲染。
而且,如果不考虑低版本IE的话,上述问题的解决方案很简单,可以将字体文件通过base64等方式嵌入页面数据中即可,那么此时则可以直接基于嵌入页面数据中的字体文件快速对第一页面数据进行解密,避免页面展示过程中出现乱码。而由于上述低版本IE不支持base64,无法将字体文件嵌入页面数据中,那么此时则需要通过任何可用方式检测用于解密的字体文件是否加载完成且解密是否完成。
而且,对于满足预设版本条件的高版本浏览器而言,为了提高页面渲染速度,则可以直接返回第一格式的字体文件,也即此时在字体数据中包括第一格式的字体文件。而对于第二格式的字体文件而言,由于其无法直接嵌入页面数据,因此同时为了降低服务器每次返回的字体数据的文件大小,提高服务器的响应速度,可以设置第二格式的字体文件在字体数据中的存在形式为相应第二格式的字体文件的获取链接。此时,如果浏览器需要使用第二格式的字体文件,则可以根据相应的获取链接获取第二格式的字体文件,如果无需使用第二格式的字体文件,则可以不用根据相应的获取链接获取第二格式的字体文件。
当然,在本发明实施例中,根据需求,第二格式的字体文件在所述字体数据中的存在形式也可以为所述第二格式的字体文件自身,相应地,第一格式的字体文件在所述字体数据中的存在形式也可以为第一格式的字体文件的获取链接,对此本发明实施例不加以限定。
而且,在实际应用中,上述加密服务对应多条业务线,尽管业务线会做缓存,但是访问量依然会特别巨大,因此为了充分考虑到性能因素,服务的运算量在于生成加解密数据,可以固定间隔生成新的加解密数据,与访问量无关。生成的加解密数据被保存在内存中,访问只是单纯的读取并返回内存数据,所以大量的访问只会引起IO压力,不会导致计算量或内存飙升。同时可以选择擅长于处理大量IO的nodejs(Node.js是一个基于Chrome V8引擎的JavaScript运行环境。Node.js使用了一个事件驱动、非阻塞式I/O的模型,使其轻量又高效),进一步提升接口的抗压能力。为了水平拓展和防止单点故障,我们的服务是无状态并且分布式部署的。最大程度的保障了服务的稳定性。
为了方便业务方使用,可以对接口返回的数据做了封装,判断浏览器是否满足预设版本条件等逻辑全部被封装在了一段脚本中,作为业务方的服务器可以根据脚本中的加密map(也即自定义字符编码)加密页面数据,非常的便捷。如下所示是一种接口返回示例:
其中,“map”可以理解为自定义字符编码,“style”中包含了判断浏览器是否满足预设版本条件的逻辑,以及字体文件等内容。
参照图3,在本发明实施例中,所述步骤130进一步可以包括:
步骤131,响应于触发所述访问请求的浏览器满足所述预设版本条件,从所述字体数据获取所述第一格式的字体文件;
步骤132,将所述第一格式的字体文件转换为代码文件并嵌入所述第一页面数据中,以对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染。
如上述,对于高版本浏览器可以将字体文件做base64嵌入文档,以避免页面乱码。因此,在本发明实施例中,如果触发访问请求的浏览器满足预设版本条件,则可以从字体数据获取第一格式的字体文件。进而可以通过Base64等任何可用方式将获取得到的第一格式的字体文件转换为代码文件并嵌入所述第一页面数据中,以对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染。
参照图3,在本发明实施例中,所述步骤130进一步可以包括:
步骤133,响应于触发所述访问请求的浏览器不满足所述预设版本条件,从所述字体数据获取所述第二格式的字体文件的获取链接;
步骤134,根据所述获取链接加载所述第二格式的字体文件;
步骤135,基于加载完成的所述第二格式的字体文件对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染。
而如果浏览器不满足预设版本条件,则可以从所述字体数据获取所述第二格式的字体文件的获取链接,进而根据所述获取链接加载所述第二格式的字体文件,进而基于加载完成的所述第二格式的字体文件对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染。此时可以通过任何可用方式检测第二格式的字体文件是否加载完成,对此本发明实施例不加以限定。当然,在本发明实施例中,第二格式的字体文件也可以直接以字体文件本身存在与字体数据中,那么此时则可以直接从字体数据中获取第二格式的字体文件。
另外,为了避免出现页面乱码,可以页面数据中经过加密后的数据进行解密后才在页面中显示。在实际应用中,为了留有解密的时间,则可以在第二格式的字体文件加载完成后延迟预设时间,等待数据解密完成,再渲染页面;或者如果仅对部分页面数据进行加密,那么在页面渲染时,可以预先渲染页面数据中未经加密的部分,进而在第一页面数据中包含的经过加密的部分加密完成后,例如延迟预设时间之后,将解密后的数据渲染在相应页面中。
例如,假设服务器基于自定义字符编码,对页面数据中的数字进行加密,那么在第一页面数据中可以包括经过加密后的数字数据,以及未加密的非数字数据。此时,在获取得到服务器返回的第一页面数据之后,可以在其中的加密后的数字数据解密完成后在进行页面渲染;也可以先基于其中未加密的非数字数据进行页面渲染,得到未完整显示的第一页面,进而在加密后的数字数据解密完成后在第一页面中显示此时解密后的数字数据,从而完成完整页面渲染。
可选地,在本发明实施例中,所述步骤134进一步可以包括:
步骤1341,将所述第二格式的字体文件作为图片执行加载操作;
步骤1342,响应于接收到针对所述加载操作的图片解析失败指令,确认所述第二格式的字体文件加载完成。
如上述,为了避免页面显示乱码,可以将加密数据隐藏,当字体解析完成并解密完成之后再将其显示。在实际应用中,为了检测页面数据中的加密部分是否解密完成,可以采用包括但不限于以下方式:
1、监听window.onload事件。但是如果页面图片等资源较多的话,onload事件触发会非常慢,用户会看到长时间的空白,页面渲染时间较长。
2、字体生效之后会使得相关文本宽度发生变化,于是尝试监听文本的resize事件来判断字体是否生效。但是,resize事件只能在页面load(加载)之后触发,所以在当前场景下并不适用。
3、尝试直接监听字体文件onload事件,但是字体文件是在css中加载的,js无法获取它的状态。
如上述,上述几种方案存在各种弊端,使得无法及时监控字体文件是否加载完成。因此,在本发明实施例中,可以将字体文件作为图片来加载。在实际应用中,加载完毕后浏览器会试图将其解析为图片,当然由于本方案实际加载的是字体文件因此解析为图片的过程会失败,这时就会触发回调。理论上,该方法可以监听任意文件的加载完成事件。
因此,在本发明实施例中,可以将所述第二格式的字体文件作为图片执行加载操作;响应于接收到针对所述加载操作的图片解析失败指令(例如上述的回调),确认所述第二格式的字体文件加载完成。
如图4所示为一种以图片形式加载第二格式的字体文件的代码示意。其中,‘XXXX.eot’即为第二格式的字体文件的获取链接。
可选地,在本发明实施例中,所述步骤135进一步可以包括:
步骤1351,响应于确认所述第二格式的字体文件加载完成,基于加载完成的所述第二格式的字体文件对所述第一页面数据进行解密;
步骤1352,从确认所述第二格式的字体文件加载完成的时刻开始,延迟预设时间段之后,基于当前解密得到的第二页面数据渲染所述页面。
在实际应用中,检测到了字体文件加载完成,但是从加载完毕到解析生效(也即解密完成)这段时间依然是乱码状态。因此,在本发明实施例中,可以从确认所述第二格式的字体文件加载完成的时刻开始,延迟预设时间段之后,基于当前解密得到的第二页面数据渲染所述页面。
其中的预设时间段可以根据需求进行自定义设置,对此本发明实施例不加以限定。例如,可以设置预设时间段为1秒,等等。
可选地,在本发明实施例中,所述步骤130进一步可以包括:
步骤S1,响应于触发所述访问请求的浏览器不满足所述预设版本条件,获取所述第一页面数据中的未加密数据,并基于所述未加密数据进行页面渲染,得到第一页面;
步骤S2,基于所述字体数据对所述加密数据进行解密,并在所述第一页面中显示解密得到的数据。
如上述,在实际应用中,在对页面数据进行加密时,可以仅对其中需要保护的部分重要数据进行加密,而其他数据则可以不加密,那么此时为了避免数据解密过程影响页面渲染速度,可以在获取所述第一页面数据之后,获取其中的未加密数据,并基于所述未加密数据进行页面渲染,得到第一页面,同时基于所述字体数据对所述加密数据进行解密,并在所述第一页面中显示解密得到的数据。
而且,在本发明实施例中,可以通过任何可用方式识别第一页面数据中的未加密数据,对此本发明实施例不加以限定。例如,可以在对页面数据进行加密时,对其中的未加密数据添加预设标识,那么此时则可以从第一页面数据中获取标注有预设标识的数据即为未加密数据。
而且,在本发明实施例中,不管触发所述访问请求的浏览器是否满足所述预设版本条件,都可以参照上述方式进行页面渲染。尤其是在触发所述访问请求的浏览器不满足所述预设版本条件的情况下,由于用于解密的字体文件无法嵌入页面数据或者浏览器中,因此可以优选地采用上述方式以提高页面渲染效率,避免访问请求的响应过程存在长时间的空白。
可选地,在本发明实施例中,所述字体数据和所述自定义字符编码由所述服务器在接收到所述数据获取请求后,从用于加密的第三方服务器获取得到,所述自定义字符编码由所述第三方服务器随机生成,所述字体数据由所述第三方服务器根据所述自定义字符编码生成,所述字体文件中包含所述自定义字符编码对应的每个待加密字符,以及与每个所述待加密字符存在映射关系的字符的字符编号。
另外,在实际应用中,为了保证不被爬虫找到规律,加密映射关系必须要不断的变化。同时,用于解密的字体文件也需要同步。而且,用户可以用个任一客户端访问任一网页,那么则需要相应网页的服务器对网页数据进行加密。因此,在本发明实施例中,为了方便对自定义字符编码及字体文件进行及时更新,且方便各个服务器获取自定义字符编码以对网页数据进行加密,可以设置特定的用于加密的第三方服务器用于执行加密服务,也即周期性地随机生成当前的自定义字符编码,也即加密map,同时基于当前的加密map生成相应用于解密的字体数据,其中可以包含字体文件,也即解密字体,或者是字体文件的获取链接,等等。那么服务器在接收到客户端的针对页面的访问请求之后,则可以从第三方服务器获取当前最新的字体数据和自定义字符编码。或者,服务器在从第三方服务器获取当前最新的字体数据和自定义字符编码之前,也可以先在自身查找是否已从第三方服务器获取最新的字体数据和自定义字符编码,如果已获取最新的字体数据和自定义字符编码,则可以从自身查找最新的字体数据和自定义字符编码,而无需重复从第三方服务器获取字体数据和自定义字符编码。
而且,在步骤S2中基于所述字体数据对所述加密数据进行解密的过程,则可以参照上述的任何可用的基于字体加密数据对第一网页数据进行解密的过程,例如可以包括但不限于上述的任意一种获取字体文件的方式、检测字体文件是否加载的方式、解密后的数据的展示时机,等等。
如图5所示,页面对应的服务器,也即当前的业务方则可以根据当前最新的自定义字符编码,对相应页面的页面数据中的敏感信息进行加密,得到第一页面数据,并将第一页面数据输出至访问请求对应的客户端。此时,浏览器可以根据解密字体对包含加密敏感信息的密文(也即第一页面数据)进行解密,从而得到解密后的明文字形并展示。此时,对于网络爬虫而言,抓取的是密文,并不能盗取有用信息,对于正常用户而言,则可以展示明文字形,不影响用户的正常访问。
如上述,为了方便业务方使用,可以对第三方服务器的接口返回的数据做了封装,判断浏览器以及IE适配等逻辑全部被封装在了一段脚本中,业务方仅需要根据脚本中的加密map替换加密文本即可,非常的便捷。
另外,在实际应用中,客户端、浏览器中一般都具有通用字体文件,以将页面数据中的字符编号转换为字符。而且,在本发明实施例中,可以仅对部分字符进行加密,也即在自定义字符编码中仅涉及部分字符,那么在基于自定义字符编码生成自定义的字体文件时,该自定义的字体文件可以仅用于对加密数据进行解析以解密,而其他未加密数据则可以采用原始的通用字体文件进行解析。因此,为了降低自定义的用于解密的字体文件的数据量,提高服务器的响应效率,可以设置在自定义的用于解密的字体文件中仅包含所述自定义字符编码对应的每个待加密字符,以及与每个所述待加密字符存在映射关系的字符的字符编号。
例如,假设仅对上述的“十”和“岁”进行加密,也即此时的待加密字符包括“十”、“岁”,而且在自定义字符编码中“十”对应于“嬜”,“岁”对应于“孏”,那么此时在自定义的字体文件中可以仅包含“十”和“岁”,且将“十”对应的字符编号设置为23324,将“岁”对应的字符编号设置为23375。
另外,在本发明实施例中,自定字体反爬是利用了爬虫不看字形只看字号的弱点。但是毕竟字号再怎么变化,字形总是不变的,如果爬虫也可以解析字体文件,寻找字号与字形的对应关系,当爬虫学会看字体,本方案则仍然存在风险。因此,在本发明实施例中,为了避免上述破解加密字体的攻击手段,也可以让字形也动起来,也即在每次基于自定义字符编码生成字体文件时,可以对每个字符的字形随机地产生肉眼不易察觉的轻微变动,以使得爬虫无法直接用相等的方式来判断每个字形对应的字符,提高反爬虫能力以及页码数据的安全性。具体的,对字形进行调整的策略可以根据需求进行自定义设置,但是需要保证调整后的字形不会影响正常用户的正常访问,对此本发明实施例不加以限定。
其次,在实际应用中,存在多种不同类型的字体,例如黑体、华文彩云、宋体、楷体、隶书、Times New Roman,等等。那么在本发明实施例中,为了满足浏览器的个性化展示需求,也可以根据浏览器所设置的字体类型设置根据自定义字符编码生成的字体文件中各个字符的字体类型,或者也可以针对自定义字符编码生成对应于不同字体类型的多个字体文件,对此本发明实施例均不加以限定。例如,可以针对当前的自定义字符编码生成字体类型为宋体的字体文件,以及字体类型为楷体的字体文件,进而在浏览器中显示页面时,则可以根据浏览器当前设置的字体类型选择相应的字体文件进行字体解析以解密。
参照图6,示出了本发明实施例中一种页面展示装置的结构示意图。
本发明实施例的页面展示装置包括:数据请求模块210、数据获取模块220和页面渲染模块230。
下面分别详细介绍各模块的功能以及各模块之间的交互关系。
数据请求模块210,用于响应于针对任一页面的访问请求,发送针对所述页面的数据获取请求至所述页面对应的服务器;
数据获取模块220,用于接收所述服务器针对所述数据获取请求返回的第一页面数据和字体数据;
页面渲染模块230,用于基于所述字体数据对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染;
其中,所述字体数据包括用于解密的字体文件、所述字体文件的获取链接中的至少一种,所述第一页面数据中包括基于与所述字体文件对应的自定义字符编码加密后的页面数据。
可选地,在本发明实施例中,所述字体文件包括适用于满足预设版本条件的浏览器的第一格式的字体文件,和/或适用于不满足预设版本条件的浏览器的第二格式的字体文件,且所述第一格式的字体文件在所述字体数据中的存在形式为第一格式的字体文件,所述第二格式的字体文件在所述字体数据中的存在形式为所述第二格式的字体文件的获取链接。
参照图7,在本发明实施例中,所述页面渲染模块230,包括:
第一字体文件获取子模块231,用于响应于触发所述访问请求的浏览器满足所述预设版本条件,从所述字体数据获取所述第一格式的字体文件;
第一页面渲染子模块232,用于将所述第一格式的字体文件转换为代码文件并嵌入所述第一页面数据中,以对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染。
参照图7,在本发明实施例中,所述页面渲染模块230,可以包括:
链接获取子模块233,用于响应于触发所述访问请求的浏览器不满足所述预设版本条件,从所述字体数据获取所述第二格式的字体文件的获取链接;
第二字体文件获取子模块234,用于根据所述获取链接加载所述第二格式的字体文件;
第二页面渲染子模块235,用于基于加载完成的所述第二格式的字体文件对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染。
可选地,在本发明实施例中,所述第二字体文件获取子模块234,进一步可以包括:
字体文件加载单元,用于将所述第二格式的字体文件作为图片执行加载操作;
加载完成确认单元,用于响应于接收到针对所述加载操作的图片解析失败指令,确认所述第二格式的字体文件加载完成。
可选地,在本发明实施例中,所述第二页面渲染子模块235,进一步可以包括:
数据解密单元,用于响应于确认所述第二格式的字体文件加载完成,基于加载完成的所述第二格式的字体文件对所述第一页面数据进行解密;
页面渲染单元,用于从确认所述第二格式的字体文件加载完成的时刻开始,延迟预设时间段之后,基于当前解密得到的第二页面数据渲染所述页面。
可选地,在本发明实施例中,所述页面渲染模块230,包括:
第三页面渲染子模块,用于响应于触发所述访问请求的浏览器不满足所述预设版本条件,获取所述第一页面数据中的未加密数据,并基于所述未加密数据进行页面渲染,得到第一页面;
第四页面渲染子模块,用于基于所述字体数据对所述加密数据进行解密,并在所述第一页面中显示解密得到的数据。
可选地,在本发明实施例中,所述字体数据和所述自定义字符编码由所述服务器在接收到所述数据获取请求后,从用于加密的第三方服务器获取得到,所述自定义字符编码由所述第三方服务器随机生成,所述字体数据由所述第三方服务器根据所述自定义字符编码生成,所述字体文件中包含所述自定义字符编码对应的每个待加密字符,以及与每个所述待加密字符存在映射关系的字符的字符编号。
本发明实施例提供的页面展示装置能够实现图1和图3的方法实施例中实现的各个过程,为避免重复,这里不再赘述。
优选的,本发明实施例还提供了一种电子设备,包括:处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述页面展示方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述页面展示方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
图8为实现本发明各个实施例的一种电子设备的硬件结构示意图。
该电子设备500包括但不限于:射频单元501、网络模块502、音频输出单元503、输入单元504、传感器505、显示单元506、用户输入单元507、接口单元508、存储器509、处理器510、以及电源511等部件。本领域技术人员可以理解,图8中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。在本发明实施例中,电子设备包括但不限于手机、平板电脑、笔记本电脑、掌上电脑、车载终端、可穿戴设备、以及计步器等。
应理解的是,本发明实施例中,射频单元501可用于收发信息或通话过程中,信号的接收和发送,具体的,将来自基站的下行数据接收后,给处理器510处理;另外,将上行的数据发送给基站。通常,射频单元501包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元501还可以通过无线通信系统与网络和其他设备通信。
电子设备通过网络模块502为用户提供了无线的宽带互联网访问,如帮助用户收发电子邮件、浏览网页和访问流式媒体等。
音频输出单元503可以将射频单元501或网络模块502接收的或者在存储器509中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元503还可以提供与电子设备500执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元503包括扬声器、蜂鸣器以及受话器等。
输入单元504用于接收音频或视频信号。输入单元504可以包括图形处理器(Graphics Processing Unit,GPU)5041和麦克风5042,图形处理器5041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元506上。经图形处理器5041处理后的图像帧可以存储在存储器509(或其它存储介质)中或者经由射频单元501或网络模块502进行发送。麦克风5042可以接收声音,并且能够将这样的声音处理为音频数据。处理后的音频数据可以在电话通话模式的情况下转换为可经由射频单元501发送到移动通信基站的格式输出。
电子设备500还包括至少一种传感器505,比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板5061的亮度,接近传感器可在电子设备500移动到耳边时,关闭显示面板5061和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别电子设备姿态(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;传感器505还可以包括指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等,在此不再赘述。
显示单元506用于显示由用户输入的信息或提供给用户的信息。显示单元506可包括显示面板5061,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板5061。
用户输入单元507可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元507包括触控面板5071以及其他输入设备5072。触控面板5071,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板5071上或在触控面板5071附近的操作)。触控面板5071可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器510,接收处理器510发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板5071。除了触控面板5071,用户输入单元507还可以包括其他输入设备5072。具体地,其他输入设备5072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
进一步的,触控面板5071可覆盖在显示面板5061上,当触控面板5071检测到在其上或附近的触摸操作后,传送给处理器510以确定触摸事件的类型,随后处理器510根据触摸事件的类型在显示面板5061上提供相应的视觉输出。虽然在图8中,触控面板5071与显示面板5061是作为两个独立的部件来实现电子设备的输入和输出功能,但是在某些实施例中,可以将触控面板5071与显示面板5061集成而实现电子设备的输入和输出功能,具体此处不做限定。
接口单元508为外部装置与电子设备500连接的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。接口单元508可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到电子设备500内的一个或多个元件或者可以用于在电子设备500和外部装置之间传输数据。
存储器509可用于存储软件程序以及各种数据。存储器509可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器509可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器510是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器509内的软件程序和/或模块,以及调用存储在存储器509内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。处理器510可包括一个或多个处理单元;优选的,处理器510可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器510中。
电子设备500还可以包括给各个部件供电的电源511(比如电池),优选的,电源511可以通过电源管理系统与处理器510逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
另外,电子设备500包括一些未示出的功能模块,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (12)
1.一种页面展示方法,其特征在于,包括:
响应于针对任一页面的访问请求,发送针对所述页面的数据获取请求至所述页面对应的服务器;
接收所述服务器针对所述数据获取请求返回的第一页面数据和字体数据;
基于所述字体数据对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染;
其中,所述字体数据包括用于解密的字体文件、所述字体文件的获取链接中的至少一种,所述第一页面数据中包括基于与所述字体文件对应的自定义字符编码加密后的页面数据;
所述字体文件包括适用于满足预设版本条件的浏览器的第一格式的字体文件,和/或适用于不满足预设版本条件的浏览器的第二格式的字体文件,且所述第一格式的字体文件在所述字体数据中的存在形式为第一格式的字体文件,所述第二格式的字体文件在所述字体数据中的存在形式为所述第二格式的字体文件的获取链接;
所述基于所述字体数据对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染的步骤,包括:
响应于触发所述访问请求的浏览器不满足所述预设版本条件,从所述字体数据获取所述第二格式的字体文件的获取链接;
根据所述获取链接加载所述第二格式的字体文件;
基于加载完成的所述第二格式的字体文件对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染;
所述根据所述获取链接加载所述第二格式的字体文件的步骤,包括:
将所述第二格式的字体文件作为图片执行加载操作;
响应于接收到针对所述加载操作的图片解析失败指令,确认所述第二格式的字体文件加载完成。
2.根据权利要求1所述的方法,其特征在于,所述基于所述字体数据对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染的步骤,包括:
响应于触发所述访问请求的浏览器满足所述预设版本条件,从所述字体数据获取所述第一格式的字体文件;
将所述第一格式的字体文件转换为代码文件并嵌入所述第一页面数据中,以对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染。
3.根据权利要求1所述的方法,其特征在于,所述基于加载完成的所述第二格式的字体文件对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染的步骤,包括:
响应于确认所述第二格式的字体文件加载完成,基于加载完成的所述第二格式的字体文件对所述第一页面数据进行解密;
从确认所述第二格式的字体文件加载完成的时刻开始,延迟预设时间段之后,基于当前解密得到的第二页面数据渲染所述页面。
4.根据权利要求1所述的方法,其特征在于,所述第一页面数据中还包含未加密数据,所述基于所述字体数据对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染的步骤的步骤,包括:
响应于触发所述访问请求的浏览器不满足所述预设版本条件,获取所述第一页面数据中的未加密数据,并基于所述未加密数据进行页面渲染,得到第一页面;
基于所述字体数据对所述加密数据进行解密,并在所述第一页面中显示解密得到的数据。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述字体数据和所述自定义字符编码由所述服务器在接收到所述数据获取请求后,从用于加密的第三方服务器获取得到,所述自定义字符编码由所述第三方服务器随机生成,所述字体数据由所述第三方服务器根据所述自定义字符编码生成,所述字体文件中包含所述自定义字符编码对应的每个待加密字符,以及与每个所述待加密字符存在映射关系的字符的字符编号。
6.一种页面展示装置,其特征在于,包括:
数据请求模块,用于响应于针对任一页面的访问请求,发送针对所述页面的数据获取请求至所述页面对应的服务器;
数据获取模块,用于接收所述服务器针对所述数据获取请求返回的第一页面数据和字体数据;
页面渲染模块,用于基于所述字体数据对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染;
其中,所述字体数据包括用于解密的字体文件、所述字体文件的获取链接中的至少一种,所述第一页面数据中包括基于与所述字体文件对应的自定义字符编码加密后的页面数据;
所述字体文件包括适用于满足预设版本条件的浏览器的第一格式的字体文件,和/或适用于不满足预设版本条件的浏览器的第二格式的字体文件,且所述第一格式的字体文件在所述字体数据中的存在形式为第一格式的字体文件,所述第二格式的字体文件在所述字体数据中的存在形式为所述第二格式的字体文件的获取链接;
所述页面渲染模块,包括:
链接获取子模块,用于响应于触发所述访问请求的浏览器不满足所述预设版本条件,从所述字体数据获取所述第二格式的字体文件的获取链接;
第二字体文件获取子模块,用于根据所述获取链接加载所述第二格式的字体文件;
第二页面渲染子模块,用于基于加载完成的所述第二格式的字体文件对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染;
所述第二字体文件获取子模块,包括:
字体文件加载单元,用于将所述第二格式的字体文件作为图片执行加载操作;
加载完成确认单元,用于响应于接收到针对所述加载操作的图片解析失败指令,确认所述第二格式的字体文件加载完成。
7.根据权利要求6所述的装置,其特征在于,所述页面渲染模块,包括:
第一字体文件获取子模块,用于响应于触发所述访问请求的浏览器满足所述预设版本条件,从所述字体数据获取所述第一格式的字体文件;
第一页面渲染子模块,用于将所述第一格式的字体文件转换为代码文件并嵌入所述第一页面数据中,以对所述第一页面数据进行解密,并基于解密得到的第二页面数据进行页面渲染。
8.根据权利要求6所述的装置,其特征在于,所述第二页面渲染子模块,包括:
数据解密单元,用于响应于确认所述第二格式的字体文件加载完成,基于加载完成的所述第二格式的字体文件对所述第一页面数据进行解密;
页面渲染单元,用于从确认所述第二格式的字体文件加载完成的时刻开始,延迟预设时间段之后,基于当前解密得到的第二页面数据渲染所述页面。
9.根据权利要求6所述的装置,其特征在于,所述页面渲染模块,包括:
第三页面渲染子模块,用于响应于触发所述访问请求的浏览器不满足所述预设版本条件,获取所述第一页面数据中的未加密数据,并基于所述未加密数据进行页面渲染,得到第一页面;
第四页面渲染子模块,用于基于所述字体数据对所述加密数据进行解密,并在所述第一页面中显示解密得到的数据。
10.根据权利要求6-9中任一项所述的装置,其特征在于,所述字体数据和所述自定义字符编码由所述服务器在接收到所述数据获取请求后,从用于加密的第三方服务器获取得到,所述自定义字符编码由所述第三方服务器随机生成,所述字体数据由所述第三方服务器根据所述自定义字符编码生成,所述字体文件中包含所述自定义字符编码对应的每个待加密字符,以及与每个所述待加密字符存在映射关系的字符的字符编号。
11.一种电子设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至5中任一项所述的页面展示方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5中任一项所述的页面展示方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010865871.5A CN111898152B (zh) | 2020-05-07 | 2020-05-07 | 一种页面展示方法、电子设备及存储介质 |
CN202010379394.1A CN111539025B (zh) | 2020-05-07 | 2020-05-07 | 一种页面展示方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010379394.1A CN111539025B (zh) | 2020-05-07 | 2020-05-07 | 一种页面展示方法、装置、电子设备及存储介质 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010865871.5A Division CN111898152B (zh) | 2020-05-07 | 2020-05-07 | 一种页面展示方法、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111539025A CN111539025A (zh) | 2020-08-14 |
CN111539025B true CN111539025B (zh) | 2021-02-26 |
Family
ID=71975415
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010379394.1A Active CN111539025B (zh) | 2020-05-07 | 2020-05-07 | 一种页面展示方法、装置、电子设备及存储介质 |
CN202010865871.5A Active CN111898152B (zh) | 2020-05-07 | 2020-05-07 | 一种页面展示方法、电子设备及存储介质 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010865871.5A Active CN111898152B (zh) | 2020-05-07 | 2020-05-07 | 一种页面展示方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN111539025B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112182603B (zh) * | 2020-09-22 | 2022-12-13 | 中国建设银行股份有限公司 | 反爬虫方法和装置 |
CN112711692A (zh) * | 2021-01-13 | 2021-04-27 | 深圳前瞻资讯股份有限公司 | 网页端数据防抓取方法、系统及智能终端 |
CN113360930A (zh) * | 2021-06-28 | 2021-09-07 | 广州市保伦电子有限公司 | 一种实现前后端字符相异加密方法及处理终端 |
CN114020187B (zh) * | 2021-10-26 | 2024-02-23 | 济南浪潮数据技术有限公司 | 字体图标的显示方法、装置及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915186A (zh) * | 2014-03-12 | 2015-09-16 | 腾讯科技(深圳)有限公司 | 一种制作页面的方法和装置 |
CN107704615A (zh) * | 2017-10-24 | 2018-02-16 | 北京有字库网络科技有限公司 | 基于中文字体子集化的网页字体显示方法及系统 |
CN109542501A (zh) * | 2018-10-25 | 2019-03-29 | 平安科技(深圳)有限公司 | 浏览器表格兼容方法、装置、计算机设备及存储介质 |
CN109862031A (zh) * | 2019-03-13 | 2019-06-07 | 娄奥林 | 一种对加密反爬虫的方式方法 |
CN109977685A (zh) * | 2019-03-21 | 2019-07-05 | 古联(北京)数字传媒科技有限公司 | 网页内容加密方法,加密装置及系统 |
CN110620657A (zh) * | 2019-08-23 | 2019-12-27 | 上海科技发展有限公司 | 网页文字处理方法、系统及装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7647300B2 (en) * | 2004-01-26 | 2010-01-12 | Google Inc. | Methods and systems for output of search results |
US8769050B2 (en) * | 2009-10-16 | 2014-07-01 | Celartern, Inc. | Serving font files in varying formats based on user agent type |
US9448979B2 (en) * | 2013-04-10 | 2016-09-20 | International Business Machines Corporation | Managing a display of results of a keyword search on a web page by modifying attributes of DOM tree structure |
CN103500210A (zh) * | 2013-09-27 | 2014-01-08 | 北京奇虎科技有限公司 | 一种进行网页加载的方法、装置和浏览器 |
EP3143526A4 (en) * | 2014-05-12 | 2017-10-04 | Diffeo, Inc. | Entity-centric knowledge discovery |
CN105005472B (zh) * | 2015-06-25 | 2018-07-20 | 中通服公众信息产业股份有限公司 | 一种web上显示维吾尔文字的方法及装置 |
CN106354700A (zh) * | 2016-08-11 | 2017-01-25 | 广州爱九游信息技术有限公司 | 页面文本转换方法及系统 |
CN107818108A (zh) * | 2016-09-13 | 2018-03-20 | 阿里巴巴集团控股有限公司 | 一种网页渲染方法、装置及系统 |
CN110968810A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 网页数据处理方法和装置 |
CN110083751A (zh) * | 2019-03-18 | 2019-08-02 | 平安科技(深圳)有限公司 | 网页数据防爬虫抓取方法及装置、存储介质、电子设备 |
CN110166465B (zh) * | 2019-05-27 | 2022-01-25 | 北京达佳互联信息技术有限公司 | 访问请求的处理方法、装置、服务器及存储介质 |
CN110765740B (zh) * | 2019-10-11 | 2023-08-11 | 深圳市比一比网络科技有限公司 | 一种基于dom树的全类型文本替换方法、系统、装置及存储介质 |
CN111062041A (zh) * | 2019-11-22 | 2020-04-24 | 成都市映潮科技股份有限公司 | 一种基于字体库实施的数据处理方法和系统 |
-
2020
- 2020-05-07 CN CN202010379394.1A patent/CN111539025B/zh active Active
- 2020-05-07 CN CN202010865871.5A patent/CN111898152B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915186A (zh) * | 2014-03-12 | 2015-09-16 | 腾讯科技(深圳)有限公司 | 一种制作页面的方法和装置 |
CN107704615A (zh) * | 2017-10-24 | 2018-02-16 | 北京有字库网络科技有限公司 | 基于中文字体子集化的网页字体显示方法及系统 |
CN109542501A (zh) * | 2018-10-25 | 2019-03-29 | 平安科技(深圳)有限公司 | 浏览器表格兼容方法、装置、计算机设备及存储介质 |
CN109862031A (zh) * | 2019-03-13 | 2019-06-07 | 娄奥林 | 一种对加密反爬虫的方式方法 |
CN109977685A (zh) * | 2019-03-21 | 2019-07-05 | 古联(北京)数字传媒科技有限公司 | 网页内容加密方法,加密装置及系统 |
CN110620657A (zh) * | 2019-08-23 | 2019-12-27 | 上海科技发展有限公司 | 网页文字处理方法、系统及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111898152A (zh) | 2020-11-06 |
CN111539025A (zh) | 2020-08-14 |
CN111898152B (zh) | 2021-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111539025B (zh) | 一种页面展示方法、装置、电子设备及存储介质 | |
EP3200487B1 (en) | Message processing method and apparatus | |
CN108510022B (zh) | 一种二维码生成、验证方法及服务器 | |
WO2020134790A1 (zh) | 一种数据异常检测方法、装置及终端设备 | |
CN106708496B (zh) | 图形界面中标签页的处理方法和装置 | |
CN107885825A (zh) | 一种应用页面分享方法及移动终端 | |
CN109886010B (zh) | 验证图片发送方法、合成方法及装置、存储介质和终端 | |
CN109257336A (zh) | 一种基于区块链的密码信息处理方法、终端设备 | |
CN110149628B (zh) | 一种信息处理方法及终端设备 | |
CN109905380A (zh) | 一种分布式系统中的节点控制方法和相关装置 | |
CN109062634B (zh) | 一种应用启动方法及移动终端 | |
WO2015003636A1 (zh) | 一种页面元素的拦截方法和装置 | |
CN109271779A (zh) | 一种安装包检测方法、终端设备及服务器 | |
CN106685948A (zh) | 一种数据处理方法、终端、通信设备及数据处理系统 | |
US11677846B1 (en) | Privacy-preserving first-party tracking | |
CN116541865A (zh) | 基于数据安全的密码输入方法、装置、设备及存储介质 | |
CN109918944B (zh) | 一种信息保护方法、装置、移动终端及存储介质 | |
CN109639706A (zh) | 一种请求处理方法、服务器、用户端及系统 | |
CN109670105B (zh) | 搜索方法及移动终端 | |
CN109451011B (zh) | 一种基于区块链的信息存储方法及移动终端 | |
CN110445746B (zh) | cookie获取方法、装置及存储设备 | |
CN111488600A (zh) | 一种资源处理方法、电子设备和服务器 | |
CN108737341B (zh) | 业务处理方法、终端及服务器 | |
CN110166461A (zh) | 用户统一标识处理方法、装置、设备及存储介质 | |
CN110191106A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |