Files
autman-plugins/plugins/qdreader/README.md
T

148 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 启点读书 QDReader 签到 Autman 插件
QDReader/起点读书 Autman 签到插件。用户侧触发词统一使用“启点”,避免平台关键词麻烦;QX 只负责抓取 Cookie,账号管理、执行查询和签到都在 Autman 插件内完成。
## 文件位置
正式插件文件:
```text
plugins/qdreader/qdreader_sign_autman.js
```
实机 JS 导入副本:
```text
js/qdreader_sign_autman.js
```
Raw 链接:
```text
https://gitea.chickliu.fun/Hermes/autman-plugins/raw/branch/main/plugins/qdreader/qdreader_sign_autman.js
https://gitea.chickliu.fun/Hermes/autman-plugins/raw/branch/main/js/qdreader_sign_autman.js
```
## 当前交互设计
### 一级菜单
```text
启点账号
启点查询
```
`启点账号` 只负责账号管理:
```text
启点账号管理
1. 查看账号
2. 添加/更新账号
3. 账号详情/修改备注
4. 删除账号
5. 清空账号
q. 退出
请回复序号
```
`启点查询` 只负责最后执行日志和执行动作,不做实时接口查询:
```text
启点查询(最近签到记录)
1. 查看最近签到记录
2. 查询单个账号最近记录
3. 立即执行签到
q. 退出
请回复序号
```
### 快速通道
```text
启点ck <QX抓到的完整cookie>
启点签到
启点签到 <uid>
qdreader sign
```
`启点ck` 只保留快速提交 Cookie,不再承担查询/导出/批量导入等管理功能。
## 账号与备注
- 保存 Cookie 后自动绑定当前 `sender.getUserID()`
- 查询、删除、手动签到默认只操作当前用户绑定的账号。
- 账号详情、删除、单账号查询都使用编号选择,不要求用户复制/输入 UID。
- 添加/更新账号后会提示是否添加备注。
- 修改备注在“账号详情/修改备注”中完成。
- 删除账号或清空当前用户账号时,会同步清理对应备注。
- 普通回复只展示脱敏 UID 和备注,不输出完整 Cookie。
## 存储
主数据桶:
```text
hermes_qidian
```
主要 key
```text
qdreader_cookie_json # uid -> full cookie
qdreader_user_bind_json # uid -> sender.getUserID()
qdreader_remark_json # uid -> 备注名
qdreader_last_result_json # uid -> 单账号最后执行结果 JSON 字符串
qdreader_last_run_json # 最近一次执行批次日志、来源和汇总
qdreader_sign_api # 签名网关
qdreader_retry_count # 请求失败重试次数
qdreader_cron_silent # 定时无账号静默
```
读取顺序:
```text
bucketGet("hermes_qidian", key)
↓ fallback
get(key)
```
写入顺序:
```text
bucketSet("hermes_qidian", key, value)
set(key, value)
```
## 签名与签到流程
1. 从 Cookie 解析账号标识与签名参数:
- 优先解析 `QDHeader` 第一段有效数字 uid
-`QDHeader` 第一段为 `(null)` 或无效,继续检查 `QDHeader` 第 12 段的真实 `UserId`
- 再读取 `uid/userid/userId/UserId`
- 最后才回退 `ywguid/gwguid/guid`,与 QX 抓包脚本保持一致;
- 同时提取 `qdh/QDHeader/guid/qimei/qimei36` 供签名网关使用。
2. `POST <qdreader_sign_api>/sign` 获取请求签名头。默认签名网关基址是 `https://api.120399.xyz/qdreader`
3. `POST https://h5.if.qidian.com/argus/api/v3/checkin/checkin` 完成签到。
4. 写入单账号最后结果 `qdreader_last_result_json`,包括 `ok/msg/time/source/runId`
5. 写入批次日志 `qdreader_last_run_json`,包括触发来源、开始/结束时间、成功/失败/总数和每账号结果;即使账号执行异常也会记录失败日志。
6. 汇总每个账号签到结果。
## 查询数据来源
`启点查询` 不请求起点实时接口,只读取最后执行日志:
```text
qdreader_last_run_json # 最近一次执行批次
qdreader_last_result_json # 每个 uid 最近一次执行结果
```
因此“查询”语义是“最近签到记录/最后执行日志”。刚添加但从未执行过的账号会显示“暂无执行记录”。
## 本地验证
```bash
node -c plugins/qdreader/qdreader_sign_autman.js
node -c js/qdreader_sign_autman.js
node tests/qdreader_plugin.test.mjs
```