爬虫加密字体解密
【爬虫加密字体解密】
文章图片
在爬取文本信息过程中 遇到字体是加密的
需要把 方块数字 转换为十进制
再根据woff文件中的映射关系进行对应转换
需要注意的是这个字体文件url是 每间隔几分钟就变化的 如发现和上一次请求的地址不一样 需要再次请求 新的woff文件
具体代码如下
from fontTools.ttLib import TTFontif __name__ == '__main__':# 1 根据分析出来的关系,初始化 把cmap 中的name 与 网页显示文本映射关系
relation_table = {'period': '.', 'zero': '0', 'one': '1', 'two': '2', 'three': '3', 'four': '4', 'five': '5',
'six': '6', 'seven': '7', 'eight': '8', 'nine': '9'
}# 2 获取到提取到的UTF-8 的值
text = ''# 3 下载文件并且获取文件中的 cmap 映射 ,下面简化案例假若已经获取到了字体文件
# cmap={100233: 'period', 100235: 'three', 100236: 'seven', 100237: 'six', 100238: 'nine', 100239: 'five', 100240: 'eight', 00241: 'two', 100242: 'one', 100243: 'four', 100244: 'zero'}
font = TTFont('nxCOAYDu.woff')
cmap = font.getBestCmap()# 4 转换逻辑
print(f'begin convert:text is {text}')
text_list = list(text)
for index, ch in enumerate(text_list):
en_number = cmap.get(ord(ch), None)
if en_number:
alpha_str = relation_table.get(en_number, None)
if alpha_str:
text_list[index] = alpha_str
text_final = ''.join(text_list)
# 最后输出的就是页面上的数字
print(f'end convert:text is {text_final}')
推荐阅读
- CSS---引用外部字体(二)---优化
- 爬虫|无头浏览器介绍和对比
- 微信小程序|微信小程序语法总结
- Python爬虫(为什么你爬取不到网页数据)
- 投稿|加密领域是如何影响电子竞技发展的?
- 详解Java中的OkHttp|详解Java中的OkHttp JSONP爬虫
- 最新豆瓣top250爬虫案例代码分析[注释齐全]
- HTTPS计算机网络SSL加密
- 使用fontforge修改字体,只保留数字
- 微信小程序引用字体包太大,使用font-spider(字蛛)裁切字体包