# QX 重写制作经验(QDReader 复盘) ## 仓库结构 参考 `chickliu/qx` 老仓库风格,仓库只保留通用顶层目录,不再保留旧兼容路径: ```text conf/ # Quantumult X 远程重写订阅文本 js/ # Rewrite 脚本入口,订阅文本直接引用这里 ``` ## QX 订阅格式 BOSS 常用的远程订阅不是 JSON 对象,而是类似下面的纯文本: ```text hostname = h5.if.qidian.com ^https:\/\/h5\.if\.qidian\.com\/argus\/api\/v1\/user\/getlogininfo url script-response-body https://gitea.chickliu.fun/Hermes/qx/raw/branch/main/js/qdreader_cookie.js ``` 注意:即使文件名叫 `*.json`,只要给 QX 作为重写订阅使用,内容也应该是这种文本格式,而不是 JSON object。 ## QDReader 这类 Cookie 捕获脚本原则 1. QX 只负责抓取 Cookie,不直接调用 Autman。 2. 不在 QX 本地持久化 Cookie;账号保存交给 Autman 插件。 3. 弹窗正文只保留完整快速提交命令: ```text 启点ck <完整 Cookie> ``` 4. 不要在弹窗正文加说明、账号数、变量名、截断摘要;BOSS 要直接复制整段命令。 5. 失败弹窗可以保留简短错误,例如“请求中没有 Cookie”“无法识别 uid”。 6. Rewrite 类型按实际取值选择: - 只读请求头 Cookie:`script-request-header` 即可; - 需要读取响应 body 辅助解析 uid:用 `script-response-body`。 QDReader 当前需要兼容从响应 body 取 `UserId`,所以使用 `script-response-body`。 ## 与 Autman 插件配合 Autman 插件保留快捷命令: ```text 启点ck ``` 并由 Autman 负责: - 解析 uid; - 保存到专属 bucket,例如 `hermes_qidian`; - 绑定发送者用户 ID; - 后续账号管理、备注、签到和最后执行日志查询。 ## 验证清单 - `node --check js/qdreader_cookie.js` - `node tests/qdreader_cookie.test.mjs` - raw 地址返回 HTTP 200: - `conf/qdreader.conf` - `js/qdreader_cookie.js` - 订阅文本内容第一行是 `hostname = ...`,第二行是 rewrite rule。 - 新增重写时按 `conf/.conf` + `js/.js` 放置,不再创建 `qx/subscribe/` 或 `qx/rewrite/` 兼容目录。