我的原文博客在此、
https://www.zhangkunzhi.com/?p=72
有網友說我之前寫的 大衆點評字體解密 的方法已經失效了,所以更新一篇解密 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文件路徑
- 調用解析神祕代碼即可
奉上代碼
歡迎 Star 與關注,會不斷更新其他站點的解密、教程等