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,故将加密内容与映射规则替换即可

五、整体代码

 

 

 

Read more

极致高效的数据处理:位图、布隆过滤器与哈希切分的奇妙之旅

极致高效的数据处理:位图、布隆过滤器与哈希切分的奇妙之旅

文章目录 * 前言 * 📮一、位图 * 📧1.1 面试题 * 📧1.2 位图的概念 * 📧1.3 位图的解决方案 * 📩1.3.1 原理 * 📩1.3.2 实现步骤 * 📩1.3.3 实现过程 * 📩1.3.4 优点 * 📧1.4 位图应用 * 📮二、布隆过滤器 * 📧2.1 布隆过滤器的开发历史 * 📧2.2 什么是布隆过滤器 * 📧2.3 布隆过滤器的实现原理 * 📩2.3.1 布隆过滤器的初步认识 * 📩2.3.2

By Ne0inhk
Flutter 组件 humanize 的适配 鸿蒙Harmony 深度进阶 - 驾驭多语言复数逻辑算法、实现鸿蒙端中式大额单位感知与极致人性化文本渲染方案

Flutter 组件 humanize 的适配 鸿蒙Harmony 深度进阶 - 驾驭多语言复数逻辑算法、实现鸿蒙端中式大额单位感知与极致人性化文本渲染方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 humanize 的适配 鸿蒙Harmony 深度进阶 - 驾驭多语言复数逻辑算法、实现鸿蒙端中式大额单位感知与极致人性化文本渲染方案 前言 在前文我们掌握了 humanize 进行基础数据转换的方法。但在鸿蒙(OpenHarmony)面向全球市场的布局中,真正的技术挑战往往隐藏在极其琐碎的“语言表达”中。例如:在英文中我们说 1 items 是错误的,必须是 1 item 与 2 items;而在中文环境下,我们虽然没有复数形变,但却有“万、亿”这类独特的四位一级计数逻辑。 一个真正具备“高级感”的鸿蒙应用,不应在数据展示上显得僵硬且带有明显的机器翻译痕迹。 本文将作为 humanize 适配的进阶篇,带你攻克多语言复数(Pluralization)

By Ne0inhk
Flutter for OpenHarmony: Flutter 三方库 directed_graph 在鸿蒙应用中优雅处理复杂的拓扑排序与依赖关系(算法级工具)

Flutter for OpenHarmony: Flutter 三方库 directed_graph 在鸿蒙应用中优雅处理复杂的拓扑排序与依赖关系(算法级工具)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在进行 OpenHarmony 的复杂业务逻辑设计时,我们经常会遇到“依赖关联”问题。例如: 1. 任务调度:任务 A 依赖于任务 B 和 C,任务 B 依赖于 D。你应该按什么顺序运行它们? 2. 数据流建模:在鸿蒙分布式节点中,数据是如何从一个端点流向另一个端点的?是否存在循环引用(Cycle)? 3. 资源加载器:一个大型鸿蒙 HAP 包内的资源加载优先级排序。 directed_graph 是一款纯粹的、算法级别的 Dart 库。它提供了标准的数据结构模型,能帮你极其高效地处理这些复杂的拓扑(Topology)关系。 一、有向图逻辑模型 该库支持对图节点进行深度遍历、

By Ne0inhk

Docker一站式部署:RustFS、GoFastDFS、Gitea与PostgreSQL实战指南

1. 前言 在现代软件开发和部署中,Docker已成为不可或缺的工具。它提供了轻量级、可移植的容器化解决方案,使应用部署变得简单高效。本文将详细介绍如何使用Docker一键部署四个常用服务:RustFS(高性能文件存储)、GoFastDFS(分布式文件系统)、Gitea(自托管Git服务)和PostgreSQL(关系型数据库)。无论你是个人开发者还是团队负责人,这些服务都能为你的项目提供强大支持。 2. 前提条件 * 已安装Docker(版本20.10+) * 已安装Docker Compose(版本1.29+) * 64位操作系统(Windows/Linux/Mac) * 至少4GB可用内存 3. RustFS部署 RustFS是一款使用Rust语言编写的高性能文件存储系统,支持S3协议,适用于私有云存储场景。 3.1 Docker命令部署 Linux: docker run -d \ --name rustfs_container \ --user root \ -p

By Ne0inhk