python ttf解析_Python爬虫杂记 - 字体文件反爬(一)

本文介绍了如何利用Python解析ttf字体文件来应对网站的反爬策略。通过查看网页源码,下载字体文件,使用fontTools库解析字库,转换映射关系,并替换文本中的特殊编码,从而解码反爬数字。案例中分析了汽车之家的反爬机制,提醒这种反爬可能越来越普遍。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ttf 文件反爬

想写这篇文章的起源是在一个技术群里,有人讨论去哪网(手机端)的反爬:请求下来的数字跟浏览器上的数字有规律的不同,查看字体文件之后, 发现字体文件中的数字位置颠倒了..., 后有朋友老冀爬取汽车之家精品贴也出现了类似的情况,不太清楚这种反爬的成本, 但凭直觉将来这种反爬措施可能越来越普遍, 拿汽车之家为例, 遂记录之!源码在最后!!

1. 开发者模式查看网页内容

5a626b3422ac?from=singlemessage

未显示正确字体的方框就是改变了编码格式的字体

2. 下载网页源码保存至本地查看

5a626b3422ac?from=singlemessage

网页源码保存至本地, 显示的乱码

3. 通过fontTools进行解析字库文件

# 解析字体库

font = TTFont('fonts.ttf')

# 读取字体的映射关系

uni_list = font['cmap'].tables[0].ttFont.getGlyphOrder() # 参数'cmap' 表示汉字对应的映射 为unicode编码

print(uni_list)

打印的结果为:['.notdef', 'uniECD5', 'uniEC83', 'uniED37', 'uniECE5', 'uniED98', 'uniEC58', 'uniEDFA', 'uniECB9', 'uniED6D', 'uniED1B', 'uniEDCE', 'uniED7D', 'uniEC3C', 'uniECEF', 'uniEC9E', '

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值