diff --git a/js/qdreader_sign_autman.js b/js/qdreader_sign_autman.js index 19e9ec0..05e19a0 100644 --- a/js/qdreader_sign_autman.js +++ b/js/qdreader_sign_autman.js @@ -4,7 +4,7 @@ //[author: Hermes] //[service: BOSS] //[class: 工具类] -//[version: 2.3.1] +//[version: 2.3.2] //[platform: web,qq,wx,tg,tb,fs,we] //[public: false] //[price: 0] @@ -183,7 +183,7 @@ function contentText() { } function usage() { return [ - "启点读书签到插件 v2.3.1", + "启点读书签到插件 v2.3.2", "【一级菜单】", "账号管理:启点账号", "执行查询:启点查询", @@ -230,7 +230,9 @@ function normalizeCookie(cookie) { var appid = jar.appId || jar.appid || "" if (appid) jar.appId = appid var guid = jar.ywguid || jar.gwguid || jar.guid || "" - return { jar: jar, cookie: cookieToString(jar), qdh: jar.QDHeader || jar.qdh || "", qdheader: jar.QDHeader || jar.qdheader || "", uid: extractUid(cookie), guid: guid, qimei: jar.qimei || jar.QIMEI || "", qimei36: jar.qimei36 || jar.QIMEI36 || "" } + var qdh = jar.qdh || jar.QDH || "" + var qdheader = jar.QDHeader || jar.qdheader || jar.QDHEADER || "" + return { jar: jar, cookie: cookieToString(jar), qdh: qdh, qdheader: qdheader, uid: extractUid(cookie), guid: guid, qimei: jar.qimei || jar.QIMEI || "", qimei36: jar.qimei36 || jar.QIMEI36 || "" } } function httpReq(opt) { if (!opt.headers) opt.headers = {} diff --git a/plugins/qdreader/README.md b/plugins/qdreader/README.md index b850f45..0607ec8 100644 --- a/plugins/qdreader/README.md +++ b/plugins/qdreader/README.md @@ -120,7 +120,7 @@ set(key, value) - 若 `QDHeader` 第一段为 `(null)` 或无效,继续检查 `QDHeader` 第 12 段的真实 `UserId`; - 再读取 `uid/userid/userId/UserId`; - 最后才回退 `ywguid/gwguid/guid`,与 QX 抓包脚本保持一致; - - 同时提取 `qdh/QDHeader/guid/qimei/qimei36` 供签名网关使用。 + - 同时提取 `qdh/QDHeader/guid/qimei/qimei36` 供签名网关使用,其中 `qdh` 只取 Cookie 的 `qdh/QDH`,不再用 `QDHeader` 顶替,避免签名网关 `decodeQDHAuto` 解码失败。 2. `POST /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`。 diff --git a/plugins/qdreader/qdreader_sign_autman.js b/plugins/qdreader/qdreader_sign_autman.js index 19e9ec0..05e19a0 100644 --- a/plugins/qdreader/qdreader_sign_autman.js +++ b/plugins/qdreader/qdreader_sign_autman.js @@ -4,7 +4,7 @@ //[author: Hermes] //[service: BOSS] //[class: 工具类] -//[version: 2.3.1] +//[version: 2.3.2] //[platform: web,qq,wx,tg,tb,fs,we] //[public: false] //[price: 0] @@ -183,7 +183,7 @@ function contentText() { } function usage() { return [ - "启点读书签到插件 v2.3.1", + "启点读书签到插件 v2.3.2", "【一级菜单】", "账号管理:启点账号", "执行查询:启点查询", @@ -230,7 +230,9 @@ function normalizeCookie(cookie) { var appid = jar.appId || jar.appid || "" if (appid) jar.appId = appid var guid = jar.ywguid || jar.gwguid || jar.guid || "" - return { jar: jar, cookie: cookieToString(jar), qdh: jar.QDHeader || jar.qdh || "", qdheader: jar.QDHeader || jar.qdheader || "", uid: extractUid(cookie), guid: guid, qimei: jar.qimei || jar.QIMEI || "", qimei36: jar.qimei36 || jar.QIMEI36 || "" } + var qdh = jar.qdh || jar.QDH || "" + var qdheader = jar.QDHeader || jar.qdheader || jar.QDHEADER || "" + return { jar: jar, cookie: cookieToString(jar), qdh: qdh, qdheader: qdheader, uid: extractUid(cookie), guid: guid, qimei: jar.qimei || jar.QIMEI || "", qimei36: jar.qimei36 || jar.QIMEI36 || "" } } function httpReq(opt) { if (!opt.headers) opt.headers = {} diff --git a/tests/qdreader_plugin.test.mjs b/tests/qdreader_plugin.test.mjs index 0e49443..ed1359e 100644 --- a/tests/qdreader_plugin.test.mjs +++ b/tests/qdreader_plugin.test.mjs @@ -102,6 +102,9 @@ test('manual sign and cron sign both call sign gateway then qidian checkin', () assert.equal(JSON.parse(manual.store.qdreader_last_run_json).source, 'manual'); assert.equal(JSON.parse(manual.store.qdreader_last_run_json).okCount, 1); assert.equal(JSON.parse(JSON.parse(manual.store.qdreader_last_result_json)['12345']).source, 'manual'); + const payload = JSON.parse(manual.calls[0].body); + assert.equal(payload.qdh, 'qdh'); + assert.equal(payload.qdheader, 'MTIzNDV8eA=='); const cron = runPlugin({ content: '', store: { ...store } }); assert.equal(cron.calls.length, 2);