news 2026/8/19 14:33:11

追更的小说一夜下架?这个免费开源小说下载器 3 分钟备份整个书单

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
追更的小说一夜下架?这个免费开源小说下载器 3 分钟备份整个书单

追更的小说一夜下架?这个免费开源小说下载器 3 分钟备份整个书单

【免费下载链接】novel-downloader一个可扩展的通用型小说下载器。项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader

你是否有过这种经历:晚上刷到一本正上头的连载,第二天再点开,页面直接 404;在起点订阅过的 VIP 章节,某天连整本书都搜不到了;一些冷门小众站的佳作,更是说没就没,连转载网站都找不到它存在的痕迹。

想离线阅读、想永久保存心爱的故事,又不想一章章手动复制?今天要聊的这款免费开源小说下载器——novel-downloader,正是为此而生。它是一个跑在浏览器里的油猴脚本,支持国内外 100+ 小说网站,一键把整本书抓成本地TXT 与 EPUB文件。从安装到第一次出片,三分钟足够跑通。

为什么劝你趁早备份:三个真实痛点

先把话说透:这不是"闲着没事囤书",而是很多读者用教训换来的经验。

  • 连载说断就断:平台调整、版权纠纷、作者删书,一本追了几百万字的书可能一夜之间无影无踪。轻文轻小说当年整站关停,无数作品跟着消失,就是最典型的例子。
  • 付费不等于永久:哪怕你订阅了全部 VIP 章节,网站下架时依然不会给你留任何东西。
  • 小众书没人转:热门书被笔趣阁等转载站抄得满天飞,冷门好书却无人问津,一旦原站消失,就真的从互联网上蒸发了。

这个项目本身是「404 小说文库」计划的一部分,目标就是给这些质量不错、却不够热门、没人转载的作品留一条活路。在征得你同意的前提下,脚本还会尝试把书籍详情页存档到互联网档案馆,为"被删除之后"留一手。

它到底是什么:一个驻扎在网页里的"搬书工"

novel-downloader 是典型的用户脚本,靠 Tampermonkey、Violentmonkey 这类脚本管理器运行。安装之后你几乎感觉不到它的存在——直到你打开某本小说的目录页,网页右上角会悄悄多出一个下载图标,点一下,它就开始干活了。

下载完成后,你会同时拿到 TXT 文档和 EPUB 文件。TXT 用记事本、手机阅读器随便开,EPUB 则适合 Calibre 等专业工具转格式、做书库管理。全程不用写一行代码,点按钮就行。

三步完成安装,全程不到三分钟

第一步:给浏览器装个脚本管理器。Tampermonkey 功能最全、用户最多;想要轻量开源就选 Violentmonkey;Firefox 老用户也可以用 Greasemonkey。

第二步:拿到脚本本体。你可以直接把构建好的bundle.user.js拖进脚本管理器完成安装;也可以从源码自己构建:

git clone https://gitcode.com/gh_mirrors/no/novel-downloader cd novel-downloader yarn install yarn build

构建完成后,dist目录下的bundle.user.js就是最终产物。

第三步:找一本小说试手。打开任意受支持网站的目录页,看到右上角出现下载图标,点击,等右下角进度条跑完,两个文件就到手了。

第一次下载,这些细节先知道

  • 会播放无声音频:脚本执行下载时会静音播放一段音频,目的是防止浏览器判定页面闲置而休眠后台,属于正常现象,不是 bug。
  • 长书要有耐心:几百上千章的小说抓取需要时间,右下角进度条会实时反馈;也可以按 F12 打开控制台看详细进度。
  • 中断可以重来:下载中断后重新开始,已完成的章节会被跳过,相当于自带断点续传。
  • 付费章节有门槛:VIP 章节要求你已登录且已购买,否则会直接跳过,这是对版权的尊重,也是避免无谓失败。

100+ 网站到底覆盖了哪些?一张表看清

支持列表很长,挑几类代表性的:

平台类型代表网站值得注意的点
国内主流平台起点中文网、晋江文学城、番茄小说、七猫中文网支持付费章节,晋江/番茄需处理字体加密
海外文学平台カクヨム、小説家になろう、pixiv、Lofter多语言、单页应用需按 F5 刷新触发图标
免费转载网站笔趣阁系列、UU看书网、69书吧、西瓜书屋量大管饱,部分站点有图片文字反爬
特色文学社区息壤中文网、有毒小说网、废文网、长佩文学部分需登录或 Token,长佩有下载限速

每个站点在src/rules/下都有独立规则文件,按目录结构分成了 onePage(单页目录)、twoPage(分页目录)、special(特殊平台)、biquge、mbtxt 等几大类,适配情况一目了然。

站点太刁钻?三层解码硬啃反爬

有些网站(比如西瓜书屋)会把文字直接替换成图片,让人没法复制。这个项目专门为此设计了一套三级解码方案,像查字典一样层层递进:

  1. 文件名映射:先看图片文件名能不能直接对上文字——最快,几乎零开销。
  2. 哈希匹配:文件名对不上,就下载图片算哈希去匹配——速度也还行。
  3. OCR 识别:前两招都失灵,才动用光学字符识别硬读——最准但最慢,用的是 PaddleOCR 中文识别模型,首次使用需下载模型文件。

至于晋江、番茄这类用自定义字体加密的站点,脚本会自动下载字体文件并建立映射关系,把乱码还原成正常文字。更硬核的是,连「封闭式 Shadow DOM + Cloudflare 反爬」这种组合拳也有应对方案——通过 iframe 真实导航绕过检测,再在 iframe 内注入 attachShadow 劫持来穿透封闭的 shadow-root(相关实现见src/lib/pierceShadow.ts)。这些细节普通用户感知不到,但恰好解释了"为什么别人搞不定的站它能下"。

只想下部分章节?一行筛选函数搞定

整本太长、只想要特定内容时,不用去设置里翻开关。按 F12 打开开发者工具,在控制台定义一个chapterFilter函数即可:

// 只下载前 100 章 function chapterFilter(chapter) { return chapter.chapterNumber <= 100; } // 只下载第一卷 function chapterFilter(chapter) { return chapter.sectionNumber === 1; } // 只下载章节名带"番外"的 function chapterFilter(chapter) { return chapter.chapterName.includes("番外"); }

想长期生效的话,还可以写一个小用户脚本自动注入,一次配置,终身受用。

输出排版不满意?自定义保存参数改到满意为止

默认生成的 TXT/EPUB 排版已经够用,但如果你有强迫症,saveOptions能让你逐项调整:

const saveOptions = { // 把章节标题改成"第x章 xxx"的格式 getchapterName: (chapter) => { if (chapter.chapterName) { return `第${chapter.chapterNumber}章 ${chapter.chapterName}`; } return `第${chapter.chapterNumber}章`; }, // 给正文段落加缩进、调行距 mainStyleText: `p { text-indent: 2em; line-height: 1.6; }`, }; window.saveOptions = saveOptions;

此外还能调整章节排序、删除 EPUB 里的空行、给 TXT 段落加空格前缀——总之,导出文件的"长相"基本由你说了算。配合设置面板里的并行下载线程数、下载间隔、最大下载间隔三件套,遇到反爬严格的站点也能自己微调抓取节奏。

心仪的网站没适配?照着模板十分钟加一个

这也是这款小说下载器最大的底气:扩展新站点非常轻。核心机制是继承BaseRuleClass,实现bookParse(解析目录)和chapterParse(解析章节正文)两个方法,然后在src/router/download.ts注册路由、在src/header.json补上匹配规则,最后yarn run build出包。

src/rules/onePage/template.ts这类模板文件把重复劳动压到了最低——大多数常规站点只需要声明书名、作者、目录选择器、正文清洗规则,几十行代码就能交付一个新规则。项目采用 TypeScript + webpack-userscript 工程化开发,规则引擎与核心逻辑分离,这也是它能支撑 100+ 站点还能持续迭代的原因。

三个常见坑,提前避雷

  • 长佩文学:反爬较严,每分钟约 6 章,别同时开多个页面下载多本书。
  • Lofter:图片多的博客很吃内存(有 800MB 限制),建议用筛选函数分批下载;装了广告拦截器可能影响脚本运行。
  • ESJ 的 EPUB:已知问题可按项目 issue 里给出的屏蔽 core.js 方案解决。

如果遇到问题,先在设置里开启调试模式,下载生成的 zip 里有debug.log日志,带上日志去项目 issue 区按模板反馈,问题解决效率会高很多。想交流的读者也可以加入项目的 Matrix 空间和 Telegram 群组。

写在最后

说句实在话:备份小说这件事,最大的成本不是工具,而是"来得及"。一本好书值得被好好保存,而这个小说下载器就是你手里现成的那把钥匙——免费、开源、100+ 站点开箱即用。

现在就花三分钟装好它,打开你正在追更的那本书,点一下右上角的下载图标。阅读是习惯,保存是责任——别等 404 了才后悔没备份。

【免费下载链接】novel-downloader一个可扩展的通用型小说下载器。项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/19 14:33:11

Hopsum:利用IPv4 TTL过期包实现网络内分布式计算

最近在排查网络问题时&#xff0c;发现一个有趣的现象&#xff1a;一些本该被路由器丢弃的“过期”数据包&#xff0c;竟然在特定条件下还能被利用起来。这让我联想到一个名为 Hopsum 的实验性概念。它并非一个现成的工具&#xff0c;而是一种颠覆性的网络协议设计思路—— …

作者头像 李华
网站建设 2026/8/19 14:30:10

AI智能体如何重塑主动安全防御:从索尼AI诱饵账号看攻防新范式

上周&#xff0c;我偶然在技术社区里看到一个讨论&#xff0c;说索尼 PlayStation 申请了一项新专利&#xff0c;核心是利用 AI 模拟未成年人账号&#xff0c;来主动识别平台上的潜在恶意用户。乍一看&#xff0c;这似乎只是个游戏平台的安全功能&#xff0c;但如果你仔细琢磨一…

作者头像 李华
网站建设 2026/8/19 14:25:49

集群服务变更的兼容与回退方案

集群服务变更的兼容与回退方案 发布前先设计回退 灰度的目的&#xff0c;是在可控范围内确认行为&#xff0c;不是把风险延后到更多用户。版本、分组方式和停止条件要先写好。 明确版本识别、流量切分位置和停止条件。协议或数据改动先兼容读取&#xff0c;再逐步切换写入&…

作者头像 李华
网站建设 2026/8/19 14:17:04

第110篇 DDS通信原理——ROS2底层是怎么传数据的

面试的时候被问过&#xff1a;"ROS2的topic底层是怎么传输的&#xff1f;"我说"用DDS"。面试官说&#xff1a;"DDS具体怎么工作的&#xff1f;数据从发布到接收经过了哪些步骤&#xff1f;" 这个问题确实有深度。很多人用ROS2写了很多节点&…

作者头像 李华
网站建设 2026/8/19 14:16:32

第118篇 ROS2动态重配置——运行时改变系统行为

面试被问&#xff1a;"ROS2里怎么做动态重配置&#xff1f;就是运行时改参数让节点立即生效那种。" 我说"用参数回调就行"。面试官说&#xff1a;"ROS1有dynamic_reconfigure包&#xff0c;ROS2里对应的方案是什么&#xff1f;有没有图形化界面&…

作者头像 李华
网站建设 2026/8/19 14:14:29

KNN算法实战:从手写数字识别入门机器学习

你肯定见过这样的场景&#xff1a;一张纸上写着手写的数字&#xff0c;比如快递单号、银行支票上的金额&#xff0c;或者老式问卷里的勾选答案。这些数字&#xff0c;人眼一扫就能认出来&#xff0c;但要让计算机看懂&#xff0c;却是个不小的工程。过去&#xff0c;这需要复杂…

作者头像 李华