python读取ttf_Python爬虫杂记 - 字体文件反爬(一)

本文探讨了如何使用Python解析ttf字体文件来应对网站的反爬策略,如汽车之家等。通过字体Tools库解析字库文件,转换映射关系,从而解码混淆的数字。但若字形顺序变化,此方法将失效。
摘要由CSDN通过智能技术生成

ttf 文件反爬

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

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

5a626b3422ac

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

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

5a626b3422ac

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

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'

要在Python读取ttf文件,可以使用fontTools库。该库提供了一个TTFont类,可以用来读取和解析ttf字体文件。以下是一个示例代码片段,用于读取ttf文件并获取字体的一些信息: ```python from fontTools.ttLib import TTFont fontName = "your_font.ttf" # 替换为实际的ttf文件名 font = TTFont(fontName, fontNumber=0) glyphNames = font.getGlyphNames() for glyphName in glyphNames: # 对每个字形进行处理,可以获取编码等信息 print(glyphName, font['glyf'][glyphName].coordinates) ``` 请注意,此代码片段仅用于演示目的,具体的操作和处理方式取决于你的需求和具体的ttf文件。你可以根据自己的需要对代码进行调整和扩展。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python 提取TTF字体文件中的所有汉字](https://blog.csdn.net/itnerd/article/details/125546438)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [PyTTF:一个读取TTF字体文件python库](https://download.csdn.net/download/weixin_42137539/19628013)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [python读取.ttf字体文件](https://blog.csdn.net/weixin_44347020/article/details/107085329)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值