本发明专利技术公开了一种解决字体反爬的爬虫方法,包括以下步骤:获取数据源网站自定义图元数据库文件;对自定义图元数据库文件中图元数据标注标准唯一标识号;建立真字与图元数据标准唯一标识号的映射关系表;建立假字与图元数据标准唯一标识号的映射关系表;建立真假字映射关系表;反解析。本发明专利技术在解决字体反爬时具有持久性高、通用性强等优点,实现灵活获取和更新字体文件、灵活建立真假字映射关系、灵活的反解析假数据,保证最大限度的数据准确性。
【技术实现步骤摘要】
一种解决字体反爬的爬虫方法
本专利技术涉及网络
,特别是一种解决字体反爬的爬虫方法。
技术介绍
在爬虫开发过程中主要要解决的核心问题是突破数据源(主要是网站)的反爬技术,常见的反爬技术有IP访问限制、用户登录校验、前端数据动态加载等等,这些反爬技术由来已久,有现行的多种解决方案,但是字体反爬作为之前一种小众的反爬技术,逐渐在大的数据源网站开始流行使用,这种技术会导致爬虫程序获取的数据失去价值,而且目前还未有稳定可靠的解决方案。字体文件常见的有符合ttf、woff等协议规范的文件,他们大多是由一系列字符的ASCII和供字符显示的图元数据的对应关系组成,并且图元数据一般绘制完成后不会再变更。主流的字体反爬实现思路大体是采用前端的Css技术让固定的某些元素区域的文本数据采用事先定义好的自定义字体文件,这个字体文件区别于系统本身字体文件,它将系统本身字体文件中某个指向字符B(假字,图元数据显示为B)的ASCII指向了自定义字体文件中的字符A(真字,图元数据显示为A),所以当从后端传输数据B到前端时其实就是假的数据,只有使用自定义字体文件渲染以后,B对应ASCII找到自定义字体中的A,此时前端才会显示正确数据A。这种后端返回错误数据,由前端通过字体文件转换为正确数据的做法就是常见的字体反爬手段,而且在自定义字体的生成上技术也在不断演进,导致字体反爬难度激增。在采用字体反爬后,爬虫程序将面临以下问题:首先,如果不解决字体反爬,将会导致爬虫程序即便爬取到了数据,获取的数据中凡是采用了自定义字体的数据也全部是错误数据(混淆过的);其次,如果要解决字体反爬,怎么确定哪些区域或者字段采用了自定义字体和怎样拿到自定义字体文件也是一个关键性问题;再者,拿到了自定义字体文件后怎样建立真假字之间的映射关系,并且在爬虫程序中自动化的将假数据转换为真数据也需要认真设计;最重要的是,如果数据源网站只是单纯的生成了一个自定义字体文件,那么通过手工建立一次真假字映射,然后用在程序中去替换假字,这种方式是可以直接解决字体反爬的;但是,目前部分网站已经采用了自定义字体生成随IP变化且每天每个IP自定义字体重新生成多次,这样等同于之前说到的A和B对应关系时刻都可能更新,变成A和C对应,这样建立一次A和B的映射关系只能支持同一个IP在短时间之内对假数据进行反解析,之后又会导致数据出错,这将是最棘手的问题。
技术实现思路
为解决现有技术中存在的问题,本专利技术的目的是提供一种解决字体反爬的爬虫方法,本专利技术在解决字体反爬时具有持久性高、通用性强等优点,实现灵活获取和更新字体文件、灵活建立真假字映射关系、灵活的反解析假数据,保证最大限度的数据准确性。为实现上述目的,本专利技术采用的技术方案是:一种解决字体反爬的爬虫方法,包括以下步骤:步骤S1、获取数据源网站自定义图元数据库文件:确定数据源网站的确采用了自定义字体,确定哪些元素区域采用了自定义字体,抓包找出元素区域以及字体文件下载URL。具体方法如下:(1)使用代理IP并抓包查看URL是否一致来判断是否存在不同IP返回URL不一致问题;(2)使用固定IP不同时段并抓包查看URL是否一直来判断是否存在存在固定IP定期更新问题。如若存在上述不一致问题,则根据请求响应提供的信息找到每次浏览器请求字体文件URL变换规律,以便根据此规律组装好URL下载该网站的图元数据库文件。步骤S2、对自定义图元数据库文件中图元数据标注标准唯一标识号:根据步骤S1,下载好图元数据库文件,通过可视化工具和字体文件解析程序,根据每个图元数据(显示为真字)的对象信息(图元关键点,图元坐标等)计算出该图元的一个唯一标识号。步骤S3、建立真字与图元数据标准唯一标识号的映射关系表:根据步骤S2可以得到自定义字体数据库中所有图元的唯一标识号,而且已经知道该图元就是显示在网页上的真字。所以,将该图元计算出的唯一标识号和该图元显示的图像(显示在网页上的真字)做一个映射关系。便可以得到一个图元数据唯一标识号和图元图像(即真字)的关系映射表。需要说明的是,因为自定义字体文件可能会按照固定IP定期更新而变化,或不同IP自定义字体文件而不一样,但是真字和图元数据唯一标识映射长期不变,所以我们可得出,只要多次获取固定IP更新的自定义字体文件、多次获取不同IP的自定义字体文件,通过手工不断补全真字和图元数据唯一标识的映射表,覆盖的字符越多后续爬取数据转换错误率就越小,所以此步骤需要不断的去重复步骤S1、步骤S2、步骤S3。步骤S4、建立假字与图元数据标准唯一标识号的映射关系表:通过解析自定义字体文件,获取假字ASCII转换为本地系统字符(通过ASCII找到对应的本地字体文件中的图元数据,显示为对应字符,通过程序可直接将ASCII转换为字符),再找到假字对应位置的图元数据(真字图元数据,无法直接获取到图元数据代表的真字)计算唯一标识后与假字建立映射关系。步骤S5:建立真假字映射关系表:每次获取一个新的自定义字体文件(不管怎么更新,A对应B或者A对应C),都能很轻松得到假字和真字图元数据唯一标识的关系,通过图元数据唯一标识作为桥梁,即可建立真字和假字的映射表。步骤S6、反解析:将爬虫爬取到的进行过字体反爬的数据(即包含很多假字的数据)拆分为一个个字符后,一一传入真字假字映射关系处理接口,如果字符能够在映射关系中找到对应关系即进行转换,没有找到即维持原状(这表明还需要不断扩充真字和图元对象的映射表,还需要不断重复步骤S1、步骤S2、步骤S3工作扩充真字与图元映射表),这样将最后转换好的字符再拼接到一起,就成为真实数据。需要说明的是:有了一个比较全的真字和图元数据唯一标识映射表后进入正式流程步骤S4、步骤S5、步骤S6流程,因为自定义字体文件长期更新,所以步骤S4、步骤S5、步骤S6需要维持在一次处理范围内。步骤S7、自定义字体文件存储删除更新:根据不同的数据源网站,字体文件更新策略不一样,可以根据情况制定自定义文件存储删除更新策略,例如:字体文件每一个小时更新一次,那么同一个IP的自定义字体在一个小时以内不会重复下载到本地,那么正式流程就会省去第1步,节约下载流量;当一个小时过去后,删除旧的所有IP的自定义字体文件,那么就要求强制执行第1步后才可以继续执行,达到更新目的。本专利技术的有益效果是:1、能够解决常见的字体反爬,通用性高;2、能够解决自定义字体文件的频繁更新带来的问题,稳定性强;3、只要建立好真字和图元数据唯一标识关系后,程序可以持久的解决字体反爬,持久性强。附图说明图1为本专利技术实施例的流程框图。具体实施方式下面结合附图对本专利技术的实施例进行详细说明。实施例如图1所示,一种解决字体反爬的爬虫方法,包括以下步骤:1、获取数据源网站自定义图元数据库文件:(1)爬虫抓取网页源代码:①模拟浏览器抓取(可以等待网页动态数据加载完成);②解析源代码确定字段及抓取值;③确定哪些字段采用了自定义字体。(2)自定义字体文件下载:①通过查看网页源代码与实际网页显示确定哪些元素区域使用了自定义字体,找出自定义字体文件名称,自定义字体可以通过检查这些内容元素是否使用了诸如CSS中font-family这类自定义字体文件引用方式;②监测网页源数据加载过程中字体文件加载的过程,找出字本文档来自技高网...
【技术保护点】
1.一种解决字体反爬的爬虫方法,其特征在于,包括以下步骤:步骤S1、获取数据源网站自定义图元数据库文件:确定数据源网站采用了自定义字体,并确定哪些元素区域采用了自定义字体,抓包找出元素区域以及字体文件下载URL;步骤S2、对自定义图元数据库文件中图元数据标注标准唯一标识号;步骤S3、建立真字与图元数据标准唯一标识号的映射关系表;步骤S4、建立假字与图元数据标准唯一标识号的映射关系表;步骤S5、建立真假字映射关系表:获取一个新的自定义字体文件,根据步骤S3得到的真字与图元数据标准唯一标识号的映射关系以及步骤S4得到的假字与图元数据标准唯一标识号的映射关系,通过图元数据唯一标识号作为桥梁,即可建立真字和假字的映射关系表;步骤S6、反解析:将爬虫爬取到的进行过字体反爬的数据拆分为一个个字符后,一一传入步骤S5得到的真假字映射关系的处理接口,如果字符能够在映射关系中找到对应关系即进行转换,没有找到即维持原状,最后将转换好的字符拼接到一起,即为真实数据。
【技术特征摘要】
1.一种解决字体反爬的爬虫方法,其特征在于,包括以下步骤:步骤S1、获取数据源网站自定义图元数据库文件:确定数据源网站采用了自定义字体,并确定哪些元素区域采用了自定义字体,抓包找出元素区域以及字体文件下载URL;步骤S2、对自定义图元数据库文件中图元数据标注标准唯一标识号;步骤S3、建立真字与图元数据标准唯一标识号的映射关系表;步骤S4、建立假字与图元数据标准唯一标识号的映射关系表;步骤S5、建立真假字映射关系表:获取一个新的自定义字体文件,根据步骤S3得到的真字与图元数据标准唯一标识号的映射关系以及步骤S4得到的假字与图元数据标准唯一标识号的映射关系,通过图元数据唯一标识号作为桥梁,即可建立真字和假字的映射关系表;步骤S6、反解析:将爬虫爬取到的进行过字体反爬的数据拆分为一个个字符后,一一传入步骤S5得到的真假字映射关系的处理接口,如果字符能够在映射关系中找到对应关系即进行转换,没有找到即维持原状,最后将转换好的字符拼接到一起,即为真实数据。2.根据权利要求1所述的解决字体反爬的爬虫方法,其特征在于,所述步骤S1具体如下...
【专利技术属性】
技术研发人员:陈思言,黄元稳,漆尧,
申请(专利权)人:四川长虹电器股份有限公司,
类型:发明
国别省市:四川,51
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。