Python:自动获取字体加密的番茄小说内容
一、前言
在网络爬虫开发中,很多网站会采用字体加密技术来保护其内容,防止被简单地抓取。番茄小说就是其中之一,它通过自定义字体将小说正文的字符映射到了 Unicode 私有用区,使得直接抓取到的 HTML 源码是一堆无法直接阅读的 “乱码”。
本文将详细介绍如何使用Python破解这种字体加密,自动获取并还原番茄小说的真实内容。
二、核心思路
主要爬虫逻辑:
1.如何发送请求:使用python库向服务器发起网络请求
2.发送给谁:明确目标资源的URL地址
3.怎么伪装自己:设置请求头,模拟正常浏览器行为,避免被识别为爬虫
4.响应信息处理:接收服务器返回的数据,并从中提取有效内容
破解字体加密的核心流程:
1.分析网页:在小说页面打开 检查--网络--字体 找到自定义字体文件(通常是 .woff 或 .woff2 格式),右键在新标签页中打开下载
2.渲染字体:将字体文件中的每个字符渲染成一张高对比度的黑白图片
3.OCR识别:使用OCR工具识别出每张图片对应的真实文字
4.构建映射:建立“字体码点 → 真实文字” 的映射字典
5.内容还原:使用这个字典将抓取到的乱码文本替换为真实可读的内容
三、环境准备
首先,我们需要安装几个关键的Python依赖库:

(补充:ddddocr仅适用于版本号小于python3.13的版本,编者使用的是3.11.4版本,读者最好使用3.11或3.10的版本,避免版本不兼容
四、代码实现
·获取映射字典
1.字体渲染函数
这个函数负责将字体中的一个 Unicode 码点渲染成一张清晰的黑白图片,为后续的 OCR 识别做准备

2.字体识别与映射构建函数
这个函数遍历字体中的所有字符,调用上面的渲染函数生成图片,然后使用OCR识别,最终构建出破解字典

3.获取字体映射规则

(补充:之前下载的.woff字体文件要将其放在与python文件同一位置的文件夹中,打开.woff文件需借助FontCreator,下载链接:High-Logic FontCreator - Free Font Editor Download
·主爬虫逻辑
(由于编者之前发过一篇以斗罗大陆为例的简单爬虫教学,故在此默认读者有一定基础)
1.分析+思路:

此时仅获取的是第一章的内容,又经过网页分析,发现番茄小说里面下一章按钮是button元素,没有href,故回到目录页进行提取href


经过分析,发现章节href差异是数字id不同,故提取所有的数字id,再循环遍历

2.获取所有加密的章节内容
故以下是爬取所有加密的章节内容代码(此代码编者仅获取了几章内容,读者可自行调整获取章节)

3.进行解密
由于之前已经获取到了映射字体规则:mapping,故将加密内容与映射规则替换即可

五、整体代码
