自定义字体的破解方法

2021-02-24  本文已影响0人  format_b1d8

首先,什么是自定义字体

1. 自定义字体,就是为了防止爬虫获取数据,对某些重要的数据进行自定义字体的方式进行处理。
爬虫获取的数据是类似于这样的(以猫眼电影为例):
<span class='score-num'><span class="stonefont">&#xf19b;&#xf4ef;&#xe137;.&#xe343;万</span>人评分</span>
多少人评分这里应该是268.1万人评分,这里进行了自定义字体的方式进行的处理。

自定义字体分为动态和静态两种

动态自定义字体就是每次加载字体的值都不同,静态自定义字体就是固定的字体对应固定的字符。
而猫眼电影原来是动态自定义字体,最近换成了静态自定义字体。
相对动态自定义字体来说,静态自定义字体很好解决。
在这里我们看到
&#xf19b;&#xf4ef;&#xe137;.&#xe343;  分别对应着268.1
也就是说&#xf19b; 是2,&#xf4ef;是6,&#xe137;是8,&#xe343;是1
那么只需要做一个映射关系,获取到的数据进行字符串替换即可。

动态自定义字体的破解

动态自定义字体相对来说比较难破解,这需要花费时间来进行一一对比规律。
毕竟无论如何,不可能说这次生成的字和下次生成的字不一样,
他一定是按照某个规律,不可能超过这个规律来生成字体的。
注意:自定义字体文件后缀名一般是.woff和.ttf  ,所以可以利用全局搜索的方式查看在哪里。
找到了字体文件之后,可以查看他的生成规律。
分享一个在线查看字体的网站:
http://blog.luckly-mjw.cn/tool-show/iconfont-preview/index.html
image.png

注意红色箭头标注的,很重要。

安装的话网上很多教程,就不赘述了。
安装好这个类库之后,使用它对woff/ttf进行转换,转为xml格式的文件

xml文件类似于html文件,有html基础的就应该能读懂。

from fontTools.ttLib import TTFont
fonts = TTFont(r"字体文件路径")
fonts.saveXML("文件.xml")

生成的xml文件打开大概是这样的:


image.png

注意红框选中的内容,是不是很眼熟?没错,就是在线预览那里箭头指向的值。

找到值之后,接下来就是根据name来定位对应数字在哪里
比如数字6对应:uniF4EF
那么就在xml文件中搜索uniF4EF

搜索结果:


image.png
上面的图片即是搜索结果。
我们发现,9是由两个contour组成的,而每个contour中都有n个pt标签,
pt标签又是由x,y,on组成的。于是联想到了坐标轴。
pt就是坐标轴上的每一个点。
于是利用坐标轴画出数据,最终连成了一个数字9。
1569561573066.png

接下来是找规律,这个过程很漫长很痛苦,不过如果知道规律的话,其实也不难了。

一般来说找规律两种方式:
1. 按照contour的数量划分组,按照pt的数量划分数字取值范围,
最后找出差值的波动范围阈值,用于写映射关系,如猫眼
2. 根据x,y的变化规律来找出定理。
如58网,需要分析x2,x1,y2,y1的差值,
而差值固定就是某个字符的值,如(1588, 0): '男', (868, 0): '王', (825, 367)

找到规律之后,我们就可以进行字符替换了,其中&#x 就是无用字符,直接舍弃就好,其他的按照映射方式进行一一替换即可。


image.png

好了,以上就是自定义字体的破解方法,欢迎大家评论,转载,点赞~

上一篇 下一篇

猜你喜欢

热点阅读