Skip to content

聚合书源与线路

聚合书源不是普通单站点书源。它可能把线路、账号、内容类型、数据提供方和设置保存在 data: URL、Cookie、source variable、book variable 或脚本缓存中,并在每个阶段动态生成 真实请求地址。

线路状态的常见写法

线路/账号信息通常存成书源级变量(source.put/source.get,跨请求、跨书本持久),而不是 规则级变量(@put:/java.put,只在当前一次求值链路里有效)。exploreUrl 本身支持多条目, 用换行或 && 分隔,每条可以是 title::urltitle||url 或单个 JSON 对象;只有 url/href/link/value 字段而没有可用地址、但带 action 字段的条目,会被合成一个 形式的“裸动作” URL——这类条目在发现页里长得和分类入口一样,但点开后触发的 是 JS 副作用(比如切换线路),不是翻到新页面:

text
线路一::https://line1.example.com/explore
线路二::https://line2.example.com/explore

或者更常见的写法是配合 JS 动态生成分类列表(书源里放一段 @js:/<js> 脚本,运行时 拼出当前已选线路对应的分类数组),而不是把多条线路都写死在 exploreUrl 里。发现页里点击 线路切换项、调用 source.put('currentLine', url) 存下来,后续搜索/详情/正文规则再用 source.get('currentLine') 拼真实请求地址。批量验证/预取如果分不清“动作型条目”和普通 分类,会把“切换线路”误当成“打开分类”提前请求,产生错误的验证结果。

兼容要点

  1. 保留原始 bookSourceUrl 身份;
  2. data:base64 既可能是内容,也可能是下一阶段状态载体;
  3. options.js 可以改变 URL、headers 和 Cookie;
  4. 搜索、详情、目录和正文必须携带同一条状态链;
  5. 线路切换后刷新的是运行状态,不是破坏性重写来源身份;
  6. 动作型发现入口不能按普通分类提前请求。

来源

当前代码包含对非严格 loginUi、动态 BaseUrl、浏览器 fallback、线路设置、章节变量和 Cookie 优先级的兼容。仍需要在 iPhone/iPad 上逐项验证登录、设置、搜索、分类、详情、 目录和非空正文,不能因某个分类列表成功就标记整个来源可用。

验证标准

text
登录/设置
  -> 搜索或发现
  -> 正确详情
  -> 完整目录
  -> 第一章及随机章节非空正文
  -> 换线路后再次完成链路

Readori 使用与开发文档