fix: send qdh separately for qdreader signing
This commit is contained in:
@@ -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 = {}
|
||||
|
||||
@@ -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 <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`。
|
||||
|
||||
@@ -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 = {}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user