feat: show full qdreader autman submit command

This commit is contained in:
2026-05-17 11:50:44 +08:00
parent 376ed17066
commit 9400aa05c9
4 changed files with 46 additions and 41 deletions
+18 -18
View File
@@ -1,12 +1,12 @@
# qdreader-autman-sign # qdreader-autman-sign
点读书(QDReaderCookie 获取 + Autman 机器人签到插件。 点读书(QDReaderCookie 获取 + Autman 机器人签到插件。
设计修正后:**Quantumult X 只负责获取 Cookie****Autman 插件负责保存 Cookie 并执行签到**。签到请求复用上游 `Yuheng0101/X/Tasks/QDReader` 的核心方式:用 H5 Cookie 解析 `QDHeader/uid/guid/qimei`,调用签名网关 `https://api.120399.xyz/sign` 生成起点接口所需签名头,再请求起点 H5 福利中心签到接口。 设计修正后:**Quantumult X 只负责获取 Cookie****Autman 插件负责保存 Cookie 并执行签到**。签到请求复用上游 `Yuheng0101/X/Tasks/QDReader` 的核心方式:用 H5 Cookie 解析 `QDHeader/uid/guid/qimei`,调用签名网关 `https://api.120399.xyz/sign` 生成起点接口所需签名头,再请求起点 H5 福利中心签到接口。
## 目录 ## 目录
- `qx/rewrite/qdreader_cookie.js`QX 重写 JS,拦截起点读书 `getlogininfo`,自动保存 Cookie 并生成提交文本 - `qx/rewrite/qdreader_cookie.js`QX 重写 JS,拦截起点读书 `getlogininfo`,自动保存 Cookie 并弹窗展示完整快速登录命令 + CK
- `qx/subscribe/qdreader.qx.snippet`QX 订阅片段。 - `qx/subscribe/qdreader.qx.snippet`QX 订阅片段。
- `qx/subscribe/qdreader.subscription.json`:订阅 JSON。 - `qx/subscribe/qdreader.subscription.json`:订阅 JSON。
- Autman 正式插件已迁移到统一插件仓库:`Hermes/autman-plugins/plugins/qdreader/qdreader_sign_autman.js` - Autman 正式插件已迁移到统一插件仓库:`Hermes/autman-plugins/plugins/qdreader/qdreader_sign_autman.js`
@@ -36,10 +36,10 @@ hostname = h5.if.qidian.com
1. QX 开启 MitM 并信任证书。 1. QX 开启 MitM 并信任证书。
2. 启用上面的重写。 2. 启用上面的重写。
3. 打开起点读书 App → 我的 → 福利中心。 3. 打开起点读书 App → 我的 → 福利中心。
4. QX 通知显示 `Cookie 新增成功``Cookie 更新成功` 4. QX 通知/弹窗显示 `Cookie 新增成功``Cookie 更新成功`,正文包含完整 `启点ck <cookie>` 快速登录命令,可直接复制发给 Autman 机器人
5. QX 会写入两个持久化变量: 5. QX 会写入两个持久化变量:
- `QDREADER_COOKIE`JSON Map,格式 `{ "uid": "cookie" }` - `QDREADER_COOKIE`JSON Map,格式 `{ "uid": "cookie" }`
- `QDREADER_AUTMAN_SUBMIT_TEXT`:可直接发给 Autman 机器人的文本,格式 `点ck <cookie>` - `QDREADER_AUTMAN_SUBMIT_TEXT`:可直接发给 Autman 机器人的完整快速登录命令,格式 `点ck <cookie>`
## 2. Autman 签到插件 ## 2. Autman 签到插件
@@ -58,35 +58,35 @@ https://gitea.chickliu.fun/Hermes/autman-plugins/raw/branch/main/js/qdreader_sig
插件规则: 插件规则:
```text ```text
起点ck ... 启点账号
起点签到 ... 启点查询
起点读书 ... 启点ck ...
启点签到 ...
启点读书 ...
qdreader ... qdreader ...
``` ```
定时运行:插件头注已内置 `//[cron: 15 7 * * *]`,每日 07:15 自动执行全部账号签到。 定时运行:插件头注已内置 `//[cron: 15 7 * * *]`,每日 07:15 自动执行全部账号签到。
手动运行:直接给 Autman 机器人发送 `点签到`;单账号发送 `点签到 <uid>` 手动运行:直接给 Autman 机器人发送 `点签到`;单账号发送 `点签到 <uid>`
交互命令: 交互命令:
```text ```text
起点ck <QX抓到的完整cookie> 启点账号
起点ck json {"uid":"cookie"} 启点查询
点ck 查询 点ck <QX抓到的完整cookie>
起点ck 导出 启点签到
起点ck 删除 <uid> 启点签到 <uid>
起点签到 qdreader sign
起点签到 <uid>
起点ck 帮助
``` ```
保存位置:Autman 参数 `qdreader_cookie_json`,格式兼容上游脚本环境变量 `QDREADER_COOKIE` 保存位置:Autman 插件专属 bucket `hermes_qidian.qdreader_cookie_json`,格式兼容上游脚本环境变量 `QDREADER_COOKIE`
```json ```json
{"uid":"cookie"} {"uid":"cookie"}
``` ```
签名网关参数:`qdreader_sign_api`,默认: 签名网关参数:`hermes_qidian.qdreader_sign_api`,默认:
```text ```text
https://api.120399.xyz https://api.120399.xyz
+17 -12
View File
@@ -1,12 +1,12 @@
/* /*
* 点读书 Cookie 自动获取/更新 - Quantumult X * 点读书 Cookie 自动获取/更新 - Quantumult X
* 只负责抓取 Cookie 并生成“复制给 Autman 机器人”的提交文本,不主动请求 Autman。 * 只负责抓取 Cookie 并生成“复制给 Autman 机器人”的提交文本,不主动请求 Autman。
* *
* 抓取:打开起点读书 App → 我的 → 福利中心。 * 抓取:打开起点读书 App → 我的 → 福利中心。
* 抓到后会: * 抓到后会:
* 1. 保存/更新 QX 本地 QDREADER_COOKIE(JSON Map) * 1. 保存/更新 QX 本地 QDREADER_COOKIE(JSON Map)
* 2. 写入 QDREADER_AUTMAN_SUBMIT_TEXT,内容可直接复制发给 Autman 机器人 * 2. 写入 QDREADER_AUTMAN_SUBMIT_TEXT,内容可直接复制发给 Autman 机器人
* 3. 通知里展示提交命令摘要 * 3. 通知/弹窗里展示完整快速登录命令 + CK,便于直接复制
*/ */
const KEY = 'QDREADER_COOKIE' const KEY = 'QDREADER_COOKIE'
@@ -45,21 +45,25 @@ function getUid(cookie, body) {
uid = obj && obj.Data && obj.Data.UserInfo && (obj.Data.UserInfo.UserId || obj.Data.UserInfo.userId) uid = obj && obj.Data && obj.Data.UserInfo && (obj.Data.UserInfo.UserId || obj.Data.UserInfo.userId)
return uid ? String(uid) : '' return uid ? String(uid) : ''
} }
function notify(title, sub, msg) { $notify(title, sub || '', msg || '') } function notify(title, sub, msg, opts) {
function preview(s, n) { try { $notify(title, sub || '', msg || '', opts || {}) } catch (e) { $notify(title, sub || '', msg || '') }
s = String(s || '') }
return s.length > n ? s.slice(0, n) + '…' : s function copyAction(command) {
return {
'open-url': 'shortcuts://run-shortcut?name=Copy&input=text&text=' + encodeURIComponent(command),
'media-url': 'data:text/plain;charset=utf-8,' + encodeURIComponent(command)
}
} }
const cookie = getHeader($request && $request.headers, 'Cookie') const cookie = getHeader($request && $request.headers, 'Cookie')
if (!cookie) { if (!cookie) {
notify('点读书', 'Cookie 获取失败', '请求中没有 Cookie') notify('点读书', 'Cookie 获取失败', '请求中没有 Cookie')
$done({}) $done({})
} else { } else {
const body = typeof $response !== 'undefined' ? ($response.body || '') : '' const body = typeof $response !== 'undefined' ? ($response.body || '') : ''
const uid = getUid(cookie, body) const uid = getUid(cookie, body)
if (!uid) { if (!uid) {
notify('点读书', 'Cookie 获取失败', '无法识别 uid,请确认已登录并进入福利中心') notify('点读书', 'Cookie 获取失败', '无法识别 uid,请确认已登录并进入福利中心')
$done({}) $done({})
} else { } else {
const old = parseJson($prefs.valueForKey(KEY) || '{}', {}) || {} const old = parseJson($prefs.valueForKey(KEY) || '{}', {}) || {}
@@ -69,8 +73,8 @@ if (!cookie) {
const jsonMap = JSON.stringify(old) const jsonMap = JSON.stringify(old)
$prefs.setValueForKey(jsonMap, KEY) $prefs.setValueForKey(jsonMap, KEY)
// 发给 Autman 机器人的命令。插件支持“起点ck <cookie>”和“起点ck json <JSON>” // 发给 Autman 机器人的完整快速登录命令。Autman 插件保留“启点ck <cookie>”快速提交通道
const submitText = `点ck ${cookie}` const submitText = `点ck ${cookie}`
$prefs.setValueForKey(submitText, SUBMIT_KEY) $prefs.setValueForKey(submitText, SUBMIT_KEY)
const title = isNew ? 'Cookie 新增成功' : (changed ? 'Cookie 更新成功' : 'Cookie 未变化') const title = isNew ? 'Cookie 新增成功' : (changed ? 'Cookie 更新成功' : 'Cookie 未变化')
@@ -78,9 +82,10 @@ if (!cookie) {
`Uid: ${uid}`, `Uid: ${uid}`,
`账号数: ${Object.keys(old).length}`, `账号数: ${Object.keys(old).length}`,
`提交文本已写入 QX 变量: ${SUBMIT_KEY}`, `提交文本已写入 QX 变量: ${SUBMIT_KEY}`,
`发给 Autman 机器人:${preview(submitText, 180)}` '下面是完整快速登录命令,可直接复制发给 Autman 机器人:',
submitText
].join('\n') ].join('\n')
notify('点读书', title, msg) notify('点读书', title, msg, copyAction(submitText))
$done({}) $done({})
} }
} }
+2 -2
View File
@@ -2,8 +2,8 @@
hostname = h5.if.qidian.com hostname = h5.if.qidian.com
[rewrite_local] [rewrite_local]
# > 点读书获取 Cookie:只保存本地并生成可复制给 Autman 机器人的“起点ck ...”文本 # > 点读书获取 Cookie:只保存本地并弹窗展示可复制给 Autman 机器人的完整“启点ck ...”文本
^https?:\/\/h5\.if\.qidian\.com\/argus\/api\/v1\/user\/getlogininfo url script-response-body https://gitea.chickliu.fun/Hermes/qdreader-qx-cookie-autman-bot/raw/branch/main/qx/rewrite/qdreader_cookie.js ^https?:\/\/h5\.if\.qidian\.com\/argus\/api\/v1\/user\/getlogininfo url script-response-body https://gitea.chickliu.fun/Hermes/qdreader-qx-cookie-autman-bot/raw/branch/main/qx/rewrite/qdreader_cookie.js
# 签到由 Autman 插件仓库 Hermes/autman-plugins/plugins/qdreader/qdreader_sign_autman.js 执行;插件内置每日 07:15 定时任务,也支持手动“点签到”。 # 签到由 Autman 插件仓库 Hermes/autman-plugins/plugins/qdreader/qdreader_sign_autman.js 执行;插件内置每日 07:15 定时任务,也支持手动“点签到”。
+9 -9
View File
@@ -1,12 +1,12 @@
{ {
"name": "点读书 QDReader Cookie + Autman Sign", "name": "点读书 QDReader Cookie + Autman Sign",
"description": "Quantumult X 重写只负责自动获取/更新起点读书 Cookie,并生成可复制给 Autman 签到插件的提交文本;签到由统一 Autman 插件仓库中的插件执行,插件内置定时和手动运行。", "description": "Quantumult X 重写只负责自动获取/更新起点读书 Cookie,并弹窗展示可复制给 Autman 签到插件的完整快速登录命令;签到由统一 Autman 插件仓库中的插件执行,插件内置定时和手动运行。",
"mitm": [ "mitm": [
"h5.if.qidian.com" "h5.if.qidian.com"
], ],
"rewrite": [ "rewrite": [
{ {
"name": "点读书获取 Cookie", "name": "点读书获取 Cookie",
"match": "^https?:\\/\\/h5\\.if\\.qidian\\.com\\/argus\\/api\\/v1\\/user\\/getlogininfo", "match": "^https?:\\/\\/h5\\.if\\.qidian\\.com\\/argus\\/api\\/v1\\/user\\/getlogininfo",
"type": "script-response-body", "type": "script-response-body",
"script": "https://gitea.chickliu.fun/Hermes/qdreader-qx-cookie-autman-bot/raw/branch/main/qx/rewrite/qdreader_cookie.js" "script": "https://gitea.chickliu.fun/Hermes/qdreader-qx-cookie-autman-bot/raw/branch/main/qx/rewrite/qdreader_cookie.js"
@@ -19,15 +19,15 @@
"js_runtime_copy": "https://gitea.chickliu.fun/Hermes/autman-plugins/raw/branch/main/js/qdreader_sign_autman.js", "js_runtime_copy": "https://gitea.chickliu.fun/Hermes/autman-plugins/raw/branch/main/js/qdreader_sign_autman.js",
"cron": "15 7 * * *", "cron": "15 7 * * *",
"manual_commands": [ "manual_commands": [
"点ck <cookie>", "点ck <cookie>",
"点签到", "点签到",
"点签到 <uid>", "点签到 <uid>",
"起点ck 查询", "启点账号",
"起点ck 删除 <uid>" "启点查询"
] ]
}, },
"prefs": { "prefs": {
"QDREADER_COOKIE": "QX 本地保存的 Cookie JSON Map", "QDREADER_COOKIE": "QX 本地保存的 Cookie JSON Map",
"QDREADER_AUTMAN_SUBMIT_TEXT": "可直接复制发给 Autman 机器人的提交文本:起点ck <cookie>" "QDREADER_AUTMAN_SUBMIT_TEXT": "可直接复制发给 Autman 机器人的完整快速登录命令:启点ck <cookie>"
} }
} }