Files
qx/docs/qx-rewrite-lessons.md
T

2.5 KiB
Raw Blame History

QX 重写制作经验(QDReader 复盘)

仓库结构

参考 chickliu/qx 老仓库风格,仓库只保留通用顶层目录,不再保留旧兼容路径:

conf/   # Quantumult X 远程重写订阅文本
js/     # Rewrite 脚本入口,订阅文本直接引用这里

QX 订阅格式

BOSS 常用的远程订阅不是 JSON 对象,而是类似下面的纯文本:

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。

  1. QX 只负责抓取 Cookie,不直接调用 Autman。
  2. 不在 QX 本地持久化 Cookie;账号保存交给 Autman 插件。
  3. 弹窗正文只保留完整快速提交命令;通知不附加跳转动作,避免点击通知时直接运行快捷指令,影响进入通知详情复制。
启点ck <完整 Cookie>
  1. 不要在弹窗正文加说明、账号数、变量名、截断摘要;BOSS 要直接复制整段命令。
  2. 失败弹窗可以保留简短错误,例如“请求中没有 Cookie”“无法识别 uid”。
  3. uid 识别优先级:
    • QDHeader 第一段是有效数字 uid 时优先使用;
    • 响应体里递归查找 UserId / userId / uid
    • QDHeader 第一段是 (null),回退到 Cookie 里的 ywguid / gwguid / guid,仅用于确认账号已识别,不在通知标题显示 uid。
    • 只读请求头 Cookiescript-request-header 即可;
    • 需要读取响应 body 辅助解析 uid:用 script-response-body。 QDReader 当前需要兼容从响应 body 取 UserId,所以使用 script-response-body

与 Autman 插件配合

Autman 插件保留快捷命令:

启点ck <cookie>

并由 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/<name>.conf + js/<name>.js 放置,不再创建 qx/subscribe/qx/rewrite/ 兼容目录。