书源不是数量是质量:JSON规则解析、导入筛选与维护全指南

发布时间:2026/10/3 10:12:58
书源不是数量是质量:JSON规则解析、导入筛选与维护全指南 先说一句大实话玩了这么多年阅读工具我最后真正留在手机里的不是那个界面花里胡哨、什么功能都往里面塞的“全家桶”反而是一个看起来很素、但规则透明、几乎没有多余干扰的“纯净版”阅读器。很多人一上来就喜欢问10000书源到底怎么装能不能直接给我一个合集这种心情我特别理解但用上一段时间你就会发现“书源”这件事从来不是数量问题而是质量问题。1万个源里真正稳定、干净、能搜到书的可能连一成都不到。今天这篇不打算给你发某个具体链接而是想把书源到底是什么、怎么导入、怎么去劣存优、以及我踩过的坑一次讲清楚。只要这篇看完你再拿到什么乱七八糟的合集JSON都不会两眼一抹黑。所以这本书适合三类人看一是被各种阅读App开屏广告逼疯的普通书友想回到一个界面里集中找书的状态二是已经知道书源但只会“一键导入”的进阶用户想搞明白搜索规则和分组逻辑三是对JSON有一点点好奇、甚至想自己写规则的技术党。如果你觉得“书源”只是一个用来白看书的插件那你可能要先放平心态因为规则本身没有善恶它只是一份描述“怎么找到内容”的说明书用在哪、怎么用完全是另一码事。1. “纯净版”阅读工具到底解决了我什么痛点1.1 从“装一堆App”到“一个工具聚合”前几年我手机上的阅读类App少说也有四五个A站的资源全但广告多B站的排版舒服但书库缺C站偶尔能找到绝版书结果没看两章就弹窗让买会员。每次想找一本书就得挨个搜一遍遇到搜索接口改版整个App直接废掉。这种体验我相信老书虫都懂真的非常消耗热情。后来换成开源的“纯净版”阅读器思路一下就变了。它不内置任何内容,只是一个壳子。要不要有书看全看你往里面填什么样的书源。书源的概念说穿了很直白它不是书也不是下载链接而是一组告诉阅读器“去哪个网址、用什么规则请求、从返回的页面里提取哪些字段”的数据。只要书源在你就可以在这个干净的壳子里完成搜索、看简介、打开目录、翻正文这一整条路径完全不用管后台内容到底来自什么网站。这种聚合方式带来的直接好处是我的阅读行为从“在各个App之间横跳”收敛成“一个工具一堆规则”。工具负责渲染和阅读体验规则负责内容和解析。如果你追求的本质是“打开就能读、不打断我”那么这种思路几乎是无敌的。1.2 为什么“数量”不是重点“规则质量”才是标题里“10000书源”这类说法对新人来说确实很有吸引力。我见过有人花一下午导入了上万个源结果打开搜索界面卡成PPT搜一本书能蹦出几百条同名结果翻半天不知道自己该点哪条。为什么因为很多所谓“合集”就是把近几年所有源一股脑堆在一起里面大量源早已失效还有一些是同一个站点的不同旧规则重复得吓人。真正让我觉得可靠的书源库其实是“少而稳”的。什么叫稳第一搜索能稳定返回结果不至于三天两头超时第二详情页能正确解析出书名、作者、封面不会把标签页里的东西抓出来第三目录规则能跟上网站改版很多源不是一开始就废而是网站改版后规则没跟上。所以后来我给自己的判断标准很简单与其收藏100个两年没更新的源不如留下20个测试通过、格式干净、有维护频率的源。1.3 这个工具适合什么人不适合什么人从实用性出发我把人分成四种情况。第一种轻度读者偶尔想看本排行榜上的热书不想折腾配置。这种人适合用别人维护好的订阅源或书源合集导入后直接搜索即可不用理解原理。第二种重度书虫同时追好多本书需要多源搜索、目录排序、章节净化这类功能。这种人最需要学会分组因为你书库里可能有几百上千个源不分组就是在自找麻烦。第三种技术爱好者平时就喜欢研究XPath、正则表达式愿意为某个站点单独写一条规则不断调试直到完美。这类人其实是书源生态里最被需要的人因为我个人观察真正高质量的书源往往都是这帮人一点一点磨出来的。第四种不适合的人如果你觉得“书源”就等于无限制免费阅读任何东西那我建议你先停下来。书源本质上只是一套技术规则它能不能用、合不合规完全取决于你导入的源指向什么内容。工具本身不背锅但用的人心里得有一杆秤尽量去尊重内容的版权边界。2. 拆开书源的“外壳”它其实就是一个JSON规则包2.1 核心字段一览别被复杂结构吓到第一次接触书源很多人的反应是这啥玩意怎么乱七八糟的。其实书源的底层就是一个JSON只要你能看懂字段名结构就清晰了。我习惯把书源里最重要的消息分成两类一类是“去哪里请求”另一类是“拿回来以后怎么解析”。先放一个最小化的示例结构方便说明{ bookSourceName: 示例源, bookSourceUrl: https://example.com, bookSourceType: 0, ruleSearch: { url: /search?q{{key}}page{{page}}, bookList: css:.book-item, name: css:.book-titletext, author: css:.book-authortext, intro: css:.book-introtext, tocUrl: css:.book-titlehref }, ruleBook: { title: css:.book-nametext, author: css:.authortext, coverUrl: css:.coversrc }, ruleToc: { chapterList: css:.catalog a, chapterName: text, chapterUrl: href }, ruleContent: { content: css:.chapter-contenttext, remove: css:.ad,css:.tts } }注意这不是某个真实可用的源而是我把书源公共模型压缩出来的示意图。字段含义并不复杂bookSourceName书源名称就是你在书源管理里看到的那个名字。bookSourceUrl书源的基础域名规则请求时会自动拼接。bookSourceType书源类型通常0表示文本阅读源。ruleSearch搜索规则定义“搜索关键词怎么拼到URL里、搜索结果列表中每一本书怎么提取”。ruleBook详情规则点进一本书后用它来提取书名、作者、封面等。ruleToc目录规则用来解析章节目录和每个章节对应的链接。ruleContent正文规则用来提取章节正文以及要过滤掉的广告噪声。看到这里你应该发现了书源并不是一股脑把所有内容塞给你而是分步走的搜索、详情、目录、正文每一步都有对应的规则模块。很多源出了问题往往就是其中某一步失败其他步骤还是好的。2.2 URL模板和提取规则到底在干什么我见过的新手最容易困惑的一个点就是“为什么书源里还有{{key}}这种奇怪的写法”。其实这就是个占位符。你在阅读器里输入“诡秘之主”然后点搜索阅读器就会把{{key}}替换成“诡秘之主”对应的URL编码然后拼出完整的搜索地址。{{page}}则是页码占位符方便多页翻找。有些网站搜索结果是直接渲染在HTML里的有些是返回JSON接口的书源规则会基于返回格式写不同解析方式。再来看解析规则。上面示例里的css:.book-itemtext可以拆成两截看前半段选择器负责定位元素后半段是提取动作。比如.book-item代表class为“book-item”的节点href代表取这个元素的链接text代表取纯文本。阅读器拿到这些值以后会把它们填入搜索结果列表你看到的一本本书就是这么来的。2.3 搜索、详情、目录、正文这条“四级跳”如果要给新手画一条理解线我建议记住这四步因为任何书源都逃不开这条路径。第一步搜索。你的关键词被替换进搜索URL返回结果页。规则从结果页里提取书名、作者、简介摘要还有一个关键的东西——书籍详情页的链接。这个链接通常由基础域名加上tocUrl或者详情URL拼出来。第二步详情。阅读器打开书籍详情页提取更完整的信息比如大图封面、完整简介、作者名、最新章节有时还会拿分类、状态、字数这些元信息。第三步目录。目录规则从详情页里的目录区域提取章节列表每一章都有一个链接。这一步对源的质量要求很高因为很多网站的目录结构不是静态写在页面里的而是动态加载的规则写得不好就只能看到一个空目录。第四步正文。点进某一章阅读器用正文规则抓取该章节内容去掉页眉页脚、版权声明、广告段落最后干净地呈现给你。每次说“这个源不能用”都得先定位到底是在哪一步挂掉的。是搜索拼URL出了问题还是详情页解析失败又或者是目录里没有抓到链接。这个排查思路比盲目删除源要科学得多。2.4 书源分组一万个源也怕满天乱飞书源一多最怕的就是不分组。就像你家里工具全堆在一个抽屉里每次找一个螺丝刀能把整个抽屉翻乱。阅读器里的书源分组本质上就是一种标签管理机制。比较实用的分组习惯我个人建议是这样把能搜到主流书的分成一组常用于发现新书把只针对某个特色站点的分成一组比如专门看特定文库的这种源搜寻命中率不高但内容质量稳定再把音频源、漫画源单独分开因为它们的结构和文本源不一样混在一起搜索会出现大量无效结果。有些阅读器支持给书源分组以后再单独配置“搜索时启用哪些分组”这个功能特别香。我把搜索只放在一个组里大约20个源每次搜索速度飞快命中率也不差完全没必要把一两千个源全部铺上去联动。3. 书源合集导入实操从拿到JSON到真正用起来3.1 导入之前先做三个检查很多人拿到一个书源合集看到的可能是一个.json文件也可能是一长串文本还可能是直接发到手机上的一个分享链接。不管哪种形式我建议你花三十秒检查三件事。第一确认你的阅读器版本别太老。书源规则格式会跟着阅读器升级老版本阅读器可能解析不了新版本字段尤其是一些社区自制的增强规则里面用到的新关键字在旧版里根本不存在。我当时就踩过这个坑从网上找了个很新的合集结果本地阅读器版本还停在两年前导进去直接提示格式错误。第二用文本编辑器打开文件看一眼开头。如果打开以后是乱码大概率是编码或者压缩出了问题这时候直接导入通常会失败。如果开头就是你熟悉的{括号后面字段结构清楚那基本可以放心。第三也是最重要的检查来源可信度。书源文件本质上是可执行的规则里面可能包含JavaScript扩展、自定义逻辑甚至远程请求。虽然绝大多数分享者没有恶意但我依然不建议从完全陌生的论坛帖、QQ群匿名文件里导入未经验证的合集。尽量从知名社区、开源项目官方页面、有长期维护记录的分享者渠道获取这是在源头上避免安全隐患。3.2 三种导入方式亲测后各有什么坑现在主流阅读器一般支持三种导入方式分别是本地文件、剪贴板导入和网络链接导入。本地文件导入是最稳妥的方式。先把JSON文件存到手机里在书源管理界面选择“本地导入”找到文件确认即可。这种方式的好处是格式不容易被裁剪我能从本地文件直接看出书源数量因为JSON数组里每个独立对象就是一条书源。剪贴板导入适合你在电脑上看到别人分享的一段JSON文本。直接复制整段文字然后到阅读器里选择“从剪贴板导入”阅读器会自动解析。这里有个常见问题复制的时候很容易截断尤其当文本特别长时有些聊天软件还会自动插表情或截断长文本导致解析失败。所以剪贴板导入完成后一定要检查书源数量有没有明显少一截。网络链接导入最快但问题也最隐蔽。有些分享者给的是短链或经过重定向的链接阅读器请求时可能会因为网络环境打不开另外网络导入直接拉取的是远程内容你无法在导入前预览里面具体有什么。我的建议是只有你百分之百信任这个链接来源时才用网络导入否则还是走本地文件。3.3 导入后必须做的三件事分组、去重、命名导入完成只是开始不管导入的是100个还是10000个书源我强烈建议你紧接着做三件事。第一件事是分组。如果合集里书源自带分组字段阅读器会按它自动归类如果没有自动分组你就手动把常用源拖进一个组里。分组不是为了好看是为了让你后续搜索有一个明确边界能大幅减少搜索噪音。第二件事是去重。书源合集的重复问题非常严重同一个站点可能出现在几个不同的合集里甚至同一个源出现多次只是改了名字。去重方法分两种一种是用阅读器自带的去重工具通常能识别完全重复的规则另一种是手工排序后看URL特征发现基础域名相同的源挨个点开确认。这一步虽然枯燥但能让你后面省很多麻烦。第三件事是命名。命名看起来很蠢但它真的能让维护效率翻倍。我会把常用的几个源改成类似“文库A-搜索稳”“文学站B-正文快”这样的名字这样在调试和换源的时候一眼就能找到目标。超过1000个源之后命名体系就是你的救星。3.4 如何用一次“完整阅读路径”验证源是否真的可用导入之后我想给每一个源都跑一遍“搜索→详情→目录→正文”这条路径。这个验证动作不能省因为很多源可能搜索正常但目录规则已经失效。验证方法如下先搜索一个你确定存在的书名看搜索结果里这个源有没有返回数据。如果没有返回先怪搜索规则如果返回了就点进详情页。详情页里主要看书名、作者、封面是否成功抓取尤其是封面封面抓不到通常意味着详情规则的整体选择器已经过时。接着打开目录页随便点一个章节。如果章节链接能正常打开并且正文出现说明这个源的正文规则至少还能用。如果章节打开了但正文是空的那多半是正文选择器要调整。找几十个源跑一遍以后你会对自己手里这份合集的质量有一个特别直观的感受。4. 别让一万个书源变成一万个累赘筛选与维护实战4.1 判断一个源是“活着”还是“凉了”的标准书源失效的典型表现不是看上去不能用而是搜索时静悄悄地没有结果。很多时候用户以为垫底的是网络问题其实源早就死了。我自己判断源是否存活会按一套优先级来看。第一步直接打开这个源的基础域名看看站还能不能正常访问。如果站本身都打不开源再新也没用。第二步在阅读器里用这个源单独搜索一个比较冷门的词冷门词能降低缓存命中概率更能反映真实解析情况。如果返回空列表接着点开调试信息看看请求返回的状态码是200、404还是超时。第三步如果域名正常但搜索无结果大概率是搜索URL模板变了比如网站把接口从?q改成了/search?keyword这种情况需要更新源而不是删掉源重找。这套流程我建议每隔一两个月走一遍尤其是那些高频率使用的源。不要等到书荒了才想起来维护那时候再临时抱佛脚会浪费很多时间。4.2 搜索分组和多源并发的取舍阅读器在搜索的时候并不是一个源一个源地慢慢搜而是并发同时请求多个源。并发的好处是速度快坏处是如果源的质量参差不齐失败请求会拖慢整体速度还可能被一些网站限制频率。我在实践中找到的最舒服的配置是搜索组只留10到20个经过验证的源并发数设为3到5。这个配置既保留了多源对比的能力又不会让请求风暴触发目标网站防爬。很多人在这一点上喜欢追求极致性能但说实话阅读本来就是放松的事不值得为了省几秒把手机CPU干到发热。4.3 跟上版本的脚步书源怎么更新才不踩坑书源是需要更新的这一点几乎无法回避。网站的HTML结构会改搜索接口会调甚至整个响应格式都可能从HTML切成JSON不同时期写的规则生命周期完全不一样。关于更新策略我有三个经验。第一尽量跟随你信任的分享者更新而不是自己大海捞针去找源。第二更新的时候不要直接覆盖整个书源库而是把新版合集导入成临时组测试没问题以后再合并进来。我之前有一次偷懒直接把整个合集覆盖导入结果原本能用的源也被新版里带过来的旧规则污染排查了大半天。第三如果你懂一点正则和XPath其实可以直接在阅读器里微调某个源的规则不需要依赖整包更新这种精准修复往往十分钟就能搞定。4.4 从“量大管饱”到“精简可用”的库房管理说句扎心的绝大多数人根本用不到一万个书源。正常追书场景下二三十个稳定源已经覆盖了九成需求。那剩下那些源怎么办我建议不要删除因为有些冷门书确实需要特殊源的规则才能抓到但也不要让它们参与日常搜索。我会建立一个“冷门存档”分组把不常用但可能救急的源全部放进去日常搜索不启用。这样既保证了搜索速度又留足了后续扩书的余地。久而久之你手里的书源库会从一个堆满文件的仓库变成一个分门别类、随时能上手的工具箱。5. 常见问题速查与避坑记录5.1 导入后书源列表是空的或者解析报错这个问题出现的频率极高。我刚接触时也遇到过明明文件里有几千条JSON数据导入以后却是空的。后来排查原因发现很可能是文件格式不是纯JSON数组而是被包了一个外层对象或者行尾有其他杂项还有一个常见情况是文件编码不是UTF-8中文内容直接显示成乱码阅读器解析到一半就放弃了。解决办法是先别急着导入把文件拿到电脑上用代码编辑器打开确认格式开头是[还是{。如果发现文件开头有BOM头一个不可见的字符格式化编码成UTF-8无BOM后再次导入问题基本能解决。5.2 搜索结果大量重复到底是谁的锅重复搜索结果的成因有两个方向。一个是书源库本身有很多同站不同名的源搜索同一本书时同一家网站的多个源都返回了相似结果另一个是阅读器的缓存问题搜索过一次以后旧的搜索结果还留在缓存里混着新结果一起显示。我的排查顺序是先关掉全局搜索缓存再重新搜索一遍如果重复率明显下降那就是缓存问题如果依旧重复那就需要清理重复书源。手动清理太累的话也可以借助阅读器自带的去重功能先删除完全重复的源再手工处理相似域名。5.3 正文乱码、排版错乱、有内容干扰正文乱码通常不是书源坏了而是编码或字体设置的问题。有一些站点强制返回GBK编码你需要阅读器把该源的响应编码手动改成GBK另一些站点返回的文本里混着页面导航、广告位这时要检查正文规则里的remove字段把这些不需要的节点加入过滤列表。排版错乱的另一个场景是正文里混着大量换行、字符实体、甚至JS插入的广告词。应对方案是调整正文净化规则把常见的广告文本模式用正则去掉。这个属于比较进阶的玩法但一旦你掌握阅读舒适度会提升好几个档位。5.4 安全的底线慎用来路不明的“超级合集”前面我反复强调来源可信度这里干脆把它单独拎出来说。确实互联网上有很多号称“2026最新万能合集”“稳定更新一万源”的文件视觉效果拉满但内容你完全不知道。书源里可以嵌入自定义脚本不安全的规则甚至可能在你毫不知情的情况下访问远程接口。我不能替你判断哪些来源可靠但至少避开这几种文档简介里出现“加QQ群获取密码”的、文件被加密成压缩包且密码写在聊天记录里的、以及声称看到某些违规书籍的所谓特供源。正常维护的社区分享不会弄这么多花招。安全这条线一旦破了再好的阅读体验都可能带来不必要的麻烦。5.5 “纯净版”不是“万能版”先建立正确预期最后说一个比较容易被忽略的点。很多新用户被“10000书源”的标题吸引过来心里默认装了这些源以后就可以畅读一切。现实是书源能否正常工作完全取决于目标网站的反爬策略、规则维护者的更新频率、以及你所在网络对目标站点的连通性。为什么有时同一个源别人能用我却不能因为网络环境不同、DNS解析结果不同、请求方式也可能被中间设备影响。这时候不要甩锅给阅读器先用调试工具看看请求和响应往往问题并不在源本身。我个人做了这么多年阅读工具折腾最大的体会就是书源有价值但“稳定”比“数量”有价值得多而“安全”比“稳定”更优先。与其盲目追逐那些看起来华丽的大合集不如静下心来维护好自己常用的一小块阵地。当你看着只有三十个源却每一个都能秒开正文的时候那种掌控感和阅读快感才是这个工具最值得留念的地方。