woff 字体反扒方案
显示原理
可以看到,源代码里面的字都是混乱的,复制出来也是乱的,但是显示的却是正常的。
再仔细看看,这一块是使用了一种神秘的字体
正常的字体就是 Unicode 编码和对应的字是一致的,而这种特殊的字体,则是 A 字的 Unicode 编码,实际上对应了 B 字的字形。
woff 字体获取
不同的网站可能会有不同的方式,有的可能可以通过请求获取到
有的可能是放在 css 中(通常使用 base64 加密)
针对这种情况,有很多方法可以解决,比如可以使用 Python 的 base64 库解码:
# 将数据进行解码 |
woff 字体预览
可以通过一些在线网站直接预览(这里使用:在线字体查看器 | 字形查看器 - Tophix)
woff 字体映射
比较省事的就用 Python 的 fontPreview 库:
self.glyfDict = fontPreview.FontPreview().preview("font.woff", "images") |
但是会存在一些比较简单的字识别错误的情况,目前没有什么比较好的解决方法,就只能是人工修复了。
比如这里的「」都是错的。
可以通过调试拿到哈希表,自己修修,反正映射错的字就那么几个()
推荐一个网站:Unicode 符号表 - 所有 Unicode 字符及其代码都在一页上 (◕‿◕) SYMBL
以上面的 woff 为例,U+4EEC 实际显示的是“「”,通过网站可以查到 4EEC 对应的字是 “们”
不过这样会有点慢,那么有没有更快的方法呢?有!
网上的工具还是很多的,这个可以直接转换编码
修完之后手动存一个 json,使用的时候直接读取就好了
参考链接
python 爬虫遇到字体加密解决方案(woff2) ddddocr + 百度ocr 文字识别_python解决woff字体加密-CSDN博客
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自Rean's Blog