追更的小说一夜下架?这个免费开源小说下载器 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 等几大类,适配情况一目了然。
站点太刁钻?三层解码硬啃反爬
有些网站(比如西瓜书屋)会把文字直接替换成图片,让人没法复制。这个项目专门为此设计了一套三级解码方案,像查字典一样层层递进:
- 文件名映射:先看图片文件名能不能直接对上文字——最快,几乎零开销。
- 哈希匹配:文件名对不上,就下载图片算哈希去匹配——速度也还行。
- 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),仅供参考