开源小说下载器:一键离线阅读100+网站小说内容
开源小说下载器:一键离线阅读100+网站小说内容
【免费下载链接】novel-downloader一个可扩展的通用型小说下载器。项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader
在数字阅读时代,小说爱好者们经常面临网络不稳定、网站访问限制或内容突然下架等问题。novel-downloader 作为一款开源浏览器扩展,提供了一个优雅的解决方案——通过智能解析和批量下载,让您能够轻松保存来自100多个小说网站的内容,实现真正的离线阅读自由。
项目概述与核心价值
novel-downloader 是一个基于 TypeScript 开发的可扩展通用型小说下载器,采用浏览器用户脚本(UserScript)的形式运行。该项目旨在帮助读者保存和管理在线阅读内容,特别是在当前网络环境下,许多优质小说可能因各种原因从原平台消失。通过该项目,用户可以:
- 批量下载:一键获取整本小说的所有章节
- 多格式支持:同时生成 TXT 和 EPUB 两种格式文件
- 智能处理:自动清理广告、优化排版、处理特殊加密内容
- 跨平台兼容:支持国内外主流小说网站
novel-downloader 的批量下载界面,实时监控下载进度和网络请求状态
技术架构与工作原理
项目采用模块化设计,主要分为几个核心部分:
1. 规则引擎系统
在src/rules/目录下,项目为每个支持的小说网站实现了专门的解析规则。这些规则按照网站类型分类存储:
special/:处理需要特殊处理的原创平台(如起点、晋江、七猫等)onePage/:处理单页式目录网站twoPage/:处理分页式目录网站reprint/:处理转载类网站
2. 智能解码模块
针对网站的反爬虫措施,项目实现了三层解码系统:
- 文件名映射:快速匹配图片文件名对应的文字
- 哈希值匹配:通过图片哈希值进行精准匹配
- OCR识别:使用 PaddleOCR 模型识别图片中的文字
这些功能实现在src/lib/decoders/目录中,包括OCRDecoder.ts、FilenameDecoder.ts和HashDecoder.ts等核心模块。
3. 内容处理流水线
下载流程经过精心设计:
- 页面解析:识别章节列表和内容结构
- 内容获取:批量下载章节内容
- 格式转换:清理 HTML 标签,提取纯文本
- 文件打包:生成结构化的 TXT 和 EPUB 文件
快速上手指南
环境准备
首先需要安装脚本管理器,推荐使用 Tampermonkey(Chrome/Firefox/Edge)或 Violentmonkey(开源免费版本)。
安装脚本
- 克隆项目到本地:
git clone https://gitcode.com/gh_mirrors/no/novel-downloader cd novel-downloader yarn install yarn build- 构建完成后,在
dist目录中找到bundle.user.js文件,将其拖拽到脚本管理器界面完成安装。
基本使用
安装完成后,访问支持的小说网站(如起点中文网、晋江文学城等),当打开小说目录页时,网页右上角会出现下载图标。点击该图标,脚本将自动开始抓取小说内容。
下载后生成的小说章节页面,保持原网站的排版和格式
支持网站概览
novel-downloader 支持超过100个国内外小说网站,涵盖多种类型:
主流原创平台
- 起点中文网、晋江文学城:支持付费章节下载
- 七猫中文网、番茄小说:支持主流免费阅读平台
- SF轻小说、轻之文库:专注轻小说内容
- 长佩文学、海棠文化:支持耽美文学平台
国外平台支持
- カクヨム、小説家になろう:日本主流小说平台
- pixiv小说、Lofter:支持图文混合内容
- Novel Up Plus:国际小说创作平台
转载与资源站
- 笔趣阁系列、UU看书网:经典转载网站
- 和图书、书趣阁:资源聚合站点
完整支持列表可在项目的src/rules/目录中查看,项目持续更新中,更多网站正在不断添加。
高级功能详解
自定义下载设置
在脚本设置面板中,用户可以调整下载参数以适应不同网站的反爬策略:
- 并行下载线程数:控制同时下载的章节数量(1-5之间)
- 下载间隔:章节间的等待时间,避免触发反爬机制
- 最大下载间隔:防止无限等待的安全机制
章节筛选功能
如果只需要下载小说的特定部分,可以在浏览器开发者工具中定义chapterFilter函数:
// 只下载前100章 function chapterFilter(chapter) { return chapter.chapterNumber <= 100; } // 只下载特定关键词章节 function chapterFilter(chapter) { return chapter.chapterName.includes("番外"); }自定义输出格式
通过saveOptions对象,用户可以自定义输出文件的样式和格式:
const saveOptions = { getchapterName: (chapter) => { if (chapter.chapterName) { return `第${chapter.chapterNumber.toString()}章 ${chapter.chapterName}`; } else { return `第${chapter.chapterNumber.toString()}章`; } } };支持图文混合内容的完整下载,保留原网页的所有视觉元素
特殊网站处理方案
字体加密处理
晋江文学城等网站使用自定义字体来保护内容。novel-downloader 会自动下载字体文件并建立映射关系,确保文字正确显示。当遇到字体匹配问题时,脚本会在日志中提示相关信息,用户可以按照提示提交字体匹配更新。
付费章节支持
对于需要登录的付费章节,脚本会使用用户的登录状态进行访问。请确保:
- 已登录相应网站账户
- 已购买相关付费章节
- 对于某些平台(如晋江),可能需要配置 token 参数
图片文字识别
部分网站将文字替换为图片以防止复制。项目采用三级解码方案:
- 文件名映射:最快速度,根据图片文件名直接匹配
- 哈希映射:平衡速度与准确度,计算图片哈希值匹配
- OCR识别:最高准确度,使用 PaddleOCR 模型识别图片文字
开发者扩展指南
添加新网站支持
项目采用模块化设计,添加新网站支持相对简单:
- 在
src/rules/相应目录下创建新的规则文件 - 继承
BaseRuleClass类,实现bookParse和chapterParse方法 - 在
src/router/download.ts中添加路由规则 - 在
header.json的match字段添加网站匹配规则
项目构建与测试
# 安装依赖 yarn install # 代码检查 yarn lint # 构建脚本 yarn build # 运行端到端测试 yarn test:e2e生成的纯文本格式文件,适合在各种阅读器中打开和编辑
最佳实践与注意事项
提高下载成功率
- 网络环境:确保稳定的网络连接,避免下载过程中断
- 登录状态:下载付费章节前确认已登录相应网站
- 反爬处理:遇到频繁失败时,尝试降低并行下载线程数
- 分批下载:超长篇小说建议分批次下载
尊重版权与合理使用
novel-downloader 旨在帮助读者保存和管理已拥有的数字内容。请遵守以下原则:
- 仅下载您已购买或有权阅读的内容
- 尊重作者版权,不用于商业分发
- 支持正版阅读,在能力范围内购买官方内容
技术特色与优势
1. 高度可扩展的架构
项目采用 TypeScript 开发,类型系统完善,代码结构清晰。规则引擎设计使得添加新网站支持变得简单高效。
2. 智能错误处理
内置完善的错误处理机制,能够自动重试失败请求,提供详细的日志信息帮助排查问题。
3. 性能优化
- 并行下载提高效率
- 内存使用优化,支持大文件处理
- 智能缓存机制减少重复请求
4. 用户友好的界面
提供直观的进度显示、详细的日志信息和丰富的配置选项,满足不同用户的需求。
社区与贡献
novel-downloader 是一个开源项目,欢迎社区贡献:
- 提交问题:在项目 issue 页面报告 bug 或提出功能建议
- 贡献代码:为项目添加新网站支持或改进现有功能
- 文档改进:帮助完善使用文档和开发指南
项目采用 AGPL-3.0 许可证,确保开源自由的同时保护开发者权益。
总结
novel-downloader 为小说爱好者提供了一个强大而实用的工具,解决了数字阅读中的诸多痛点。无论您是想收藏经典作品、应对网络不稳定,还是需要在不同设备间同步阅读进度,这个工具都能提供有效的帮助。
通过智能的网站解析、多层次的防反爬处理和完善的输出格式支持,novel-downloader 让离线阅读变得更加简单可靠。项目持续更新维护,支持网站列表不断扩展,是每个小说爱好者的理想伴侣。
开始您的离线阅读之旅,让每一本好作品都能随时随地陪伴您!
【免费下载链接】novel-downloader一个可扩展的通用型小说下载器。项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
