Skip to content

脚本配置持久化

当前来源状态分散在 login UI、source/book/chapter variable、CookieJar 和 CacheManager。变量适合 保存线路、分页游标和短期 token;持久敏感凭据不应随公共 JSON 导出。

三层变量,生命周期不同

写脚本时最容易搞混的是“这个值该存在哪一层”,三层各自的生命周期完全不同:

text
规则内变量  @put:{k}/@get:{k}         只在当前一次规则求值链路里有效,求值结束就丢弃
                                       典型用途:搜索→详情→目录同一次请求链路里传递中间值

书籍/章节变量  book.putVariable(k,v)   跟随这本书 / 这一章持久化,换源、重启 App 后仍在
              chapter.putVariable(k,v) 典型用途:记录这本书当前解锁到第几章、这一章的下载状态

书源变量  source.put(k,v)/source.get(k)  跟随整个书源持久化,这个源下所有书共享
                                          典型用途:当前选中的线路、登录后拿到的 token

选错层级的常见症状:把线路信息存进规则内变量,结果“每次搜索都要重新选线路”;把只对 单本书有效的状态存进书源变量,结果“换一本书线路设置也跟着变了”。

来源配置边界

  • 配置按 source identity 隔离;
  • 字符串、字节和缓存数据分别设置配额;
  • 导入、删除和更新时执行明确迁移;
  • 用户可以查看和清除来源配置;
  • HTML bridge 只能访问白名单配置。

不要让脚本读取应用全局 UserDefaults、Keychain 或其他来源数据。

Readori 使用与开发文档