有网友说我之前写的 大众点评字体解密 的方法已经失效了,所以更新一篇解密 2019年7月25日。
查看加密
看到都是小框框,为了一探究竟我们查看源码找到加密处
所有文字都是 
>
这样的怪符号。一脸懵逼,这和之前点评网站的字体反爬完全不同了。
查看页面代码
经过一番查找, 发现了两个个至关重要的信息
- 关键 CSS 文件, 里边包含了字体文件,用于通过神秘代码映射出真正文字。
- 加密处标签
clss='address'
这里的class值就是,使用的哪个指定的字体库。
打开 CSS
里边就有字体文件 .woff 我们下载这个字体文件
打开 woff 文件
这里我们利用工具 http://fontstore.baidu.com/static/editor/index.html
打开字库文件
经过对比发现,可以通过页面上加密的神秘代码和字体库中红色方框中代码进行匹配
用 python 获取 woff 的内容
pip3 install fontTools
这个库可以将 woff 文件转换为 xml 文件,并读取
from fontTools.ttLib import TTFont
font = TTFont('字库.woff')
font.saveXML('test.xml') # 将 woff 写为 xml 文件从而就可以对 xml 文件进行操作了
Redis Hash 储存字库
美团这套字体库是会随机更新的,所以我们需要写一套通用代码出来自动匹配!
解决方案:
我做了一套 Redis Hash
储存,将字库同步到redis
中,如果出现新字库就会自动提取到redis
中, 如果字库是旧的,那么直接从旧字库取出对应值。
hash 的 key 为字库名, 值为字库映射表
毫秒级响应超快速度将加密的神秘代码转换为正常字符
调用案例
- 在实例化对象的时候配置 redis (默认已经配置的本机redis)
- 填入数据页面中 含有字体链接的css文件路径
- 调用解析神秘代码即可
Demo代码
欢迎 Star 与关注,会不断更新其他站点的解密、教程等
GitHub代码
如果需要批量页面解析的话,需要将class 值与字库对应起来