当前位置: 首页 > 科技观察

字体反爬虫原理及破解方法

时间:2023-03-18 11:12:42 科技观察

大家好,我是志斌~之前给大家介绍过一个SVG贴图反爬虫,今天给大家介绍另一种通过贴图反爬虫的方法关系。不知道大家有没有遇到过这样的情况。在写爬虫程序之前,我们需要观察目标数据,但是当我们观察的时候,我们发现目标数据以这种奇怪的方式出现在网页上。这种反爬虫就是字体反爬虫。今天志斌就给大家分享一下如何绕过这种反爬虫。1.原理以往网站开发者在设计网页时,只能使用公共字体来显示网页中的数据。但是,随着CSS样式的深入发展,网站开发者可以将自己的字体放到服务器上。当用户访问网页界面时,相应的字体会被浏览器自动下载到用户电脑上,然后通过CSS样式调用。之后,通过映射关系,将网页中的源数据变成真实数据进行展示。这样,网站开发人员在设计网页时只需要使用特殊字符作为占位符,而不需要将真实的数据放入页面中。这样,如果爬虫程序不知道这个映射关系,就无法从字库中获取到正确的数据,从而实现反爬虫。2.破解破解这类字体反爬虫有以下几个步骤。1、下载字体woff文件从上面我们知道字体是保存在服务器上的,通过浏览器下载到我们的电脑上,那么我们就可以在网站上找到加载好的字体文件并下载。下载后打开观察。这里给大家分享一个字体编译器网站,用它可以很方便的打开woff文件。网址:http://font.qqe2.com/index-cn.html。打开字体文件后,我们发现每个数字对应一个字符串,比如7对应$E9C7。2.查找映射关系通过对比源网页中的占位符数据和字体,我们发现源数据将$中的&#x替换为$,然后将字符串的首字母大写成为对应的字符串字体。3、构建映射算法上面我们已经找到了字体之间的映射关系,那么现在我们就可以开始使用Python来构建映射算法,让爬虫获取到一个正确的数据。构造代码如下:data={'':7,'':1,'':2,'':6,'':9,'':5,'':3,'':0,'':4,'':8,}之后我们就可以爬取网页了,然后将相应的源数据与数据进行比较,得到正确的数据。三、总结1、本文详细介绍了如何破解字体反爬虫。由于该反爬虫使用CSS进行加载和映射,即使使用一些自动化软件或渲染工具,也无法获取到真实数据。2、破解这类反爬虫只需要找到woff文件中的字体与页面数据的对应关系,并构建即可。3.找到要下载的woff文件是关键。4.有兴趣的读者可以向志斌要一个网站,自己去试试。5.本文仅供学习参考,不作其他用途。