昨天朋友发了我一个小说网站,说有字体反爬,让我瞅两眼,晚上回家后细看了两下其实挺简单了,总结就是:静态字体反爬,只需要做一个字体映射字典就行了
1. 解析字体文件,寻找规律
从网站上可以看到这三个字体文件,随便下载一个就行
字体文件下载后,使用python的fontTools将其转化为 xml 文件,然后就可以进行规律寻找了
from fontTools.ttLib import TTFont
# 这里我先型转换成了 ttf 文件的,实际使用时 woff2 和 ttf 都可以直接读取
font = TTFont("dc027189e0ba4cd_aaa.ttf")
font.saveXML('dc027189e0ba4cd_aaa.xml')
转换后的xml文件如图所示:
很遗憾的是在图里面并没有直接写明对应的汉字,但是仔细研究是可以发现 gid58670 其实就是 数字0进行了 ord 操作,因此我们可以建立生成字体映射字典的逻辑:乱码字符串进行ord操作 → 匹配 name 画出对应的图形 → orc识别建立字体映射字典 → 检查文件
2.结果
建立的字典映射文件如图所示:
还原效果如图:
大海啊~你全是水~