目标url:易车论坛。
该论坛进行了部分字体加密的操作,加密文件的url为:https://baa.yiche.com/yc-pc/comment/font/yc-ft.woff
为什么说奇葩呢,1是因为它是静态的url,不会变,2是加密逻辑字体太多,足足400多个字体的加密,见下图
我们在页面上看到的数据是这样的:
页面上的数据是,我们看到的是uni4E00,也就是说,页面上的和后面的分号是没用的。字体文件中的uni也是没用的。
我们尝试在4E00前添加\u,得到'\u4E00',根据utf-8的解码数据,得到结果为汉字一
既然知道规则,就可以建立映射关系,然后根据映射关系挨个替换了。如果你够耐心,就挨个做,如果你够细心,会发现使用fonttools库去做就很快。上代码
res = requests.get(detail_link,headers = self.headers).text # 发送评论请求
# -------------破解字体映射
world = TTFont('./yc-ft.woff') # 字体文件目录
value_lists = world.getGlyphOrder()[2:] # 获取所有value值
d = [eval(r"'\u" + i[3:] + "'") for i in value_lists] # 待拼接汉字 # 拼接value值为汉字
d1 = ["" + i[-3:].lower() + ";" for i in value_lists] # 改成网页内容
file_dict = dict(zip(d1, d)) # 建立字典映射
for key in file_dict:
res = res.replace(key.lower(), file_dict[key]) # 遇到则替换
# --------------字体破解结束
吐槽,好奇葩的