python反爬虫之fontTools库的使用破解字体加密

本文介绍了如何使用Python的FontTools库来应对字体加密的反爬虫策略。通过请求网页,获取加密字体文件,将其转换为XML,并解析映射关系,最终替换加密内容,从而提取所需信息。
摘要由CSDN通过智能技术生成

python反爬虫之FontTools库的使用

字体反爬虫也是我们常见的一种反爬手段,字体的加密使返回的网页代码内容中我们想要的信息部分看不到,即使看到了,也是其他格式的内容。但我们可以找到字体地址,把字体下载下来然后用FontTools就能解决问题。以起点中文网为例。
首先我们请求首页的url地址,可以发现重要的数据是用方块显示的,如下:
在这里插入图片描述
这就很难受了。字体加密当然会有请求字体文件的。所以就找字体文件。
在字体数据的下方竟然有字体文件的地址,这就又很轻松了。
在这里插入图片描述
用正则表达式匹配出字体的地址即可。

font_url = re.findall(r"src: url\('(.*?)'\)", html)[1]	# 提取woff字体文件

成功拿到字体地址。
在这里插入图片描述
接下来就是请求字体地址,保存字体文件。

# 请求字体文件地址
font_resp = requests.get(font_url)
# 保存字体文件
with open('字体文件.woff', 'wb') as f:
    f.write(font_resp.content)

保存到本地的字体文件,我们是看不懂的,借助FontTools转换为xml形式的文件,我们就能找到其中的规律。

# TTFont打开字体文件
font = TTFont("字体文件.woff")
# 将字体文件保存为可读的xml文件
font.saveXML('font.xml')
# 找字体的映射关系,字体的映射关系在cmap中体现
font_map = font['cmap'].getBestCmap()
print(font_map)

在保存的xml文件中,我们可以找到其中的映射关系,如图:
在这里插入图片描述
同时打印的映射关系为:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值