fix: send qdh separately for qdreader signing
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
//[author: Hermes]
|
//[author: Hermes]
|
||||||
//[service: BOSS]
|
//[service: BOSS]
|
||||||
//[class: 工具类]
|
//[class: 工具类]
|
||||||
//[version: 2.3.1]
|
//[version: 2.3.2]
|
||||||
//[platform: web,qq,wx,tg,tb,fs,we]
|
//[platform: web,qq,wx,tg,tb,fs,we]
|
||||||
//[public: false]
|
//[public: false]
|
||||||
//[price: 0]
|
//[price: 0]
|
||||||
@@ -183,7 +183,7 @@ function contentText() {
|
|||||||
}
|
}
|
||||||
function usage() {
|
function usage() {
|
||||||
return [
|
return [
|
||||||
"启点读书签到插件 v2.3.1",
|
"启点读书签到插件 v2.3.2",
|
||||||
"【一级菜单】",
|
"【一级菜单】",
|
||||||
"账号管理:启点账号",
|
"账号管理:启点账号",
|
||||||
"执行查询:启点查询",
|
"执行查询:启点查询",
|
||||||
@@ -230,7 +230,9 @@ function normalizeCookie(cookie) {
|
|||||||
var appid = jar.appId || jar.appid || ""
|
var appid = jar.appId || jar.appid || ""
|
||||||
if (appid) jar.appId = appid
|
if (appid) jar.appId = appid
|
||||||
var guid = jar.ywguid || jar.gwguid || jar.guid || ""
|
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) {
|
function httpReq(opt) {
|
||||||
if (!opt.headers) opt.headers = {}
|
if (!opt.headers) opt.headers = {}
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ set(key, value)
|
|||||||
- 若 `QDHeader` 第一段为 `(null)` 或无效,继续检查 `QDHeader` 第 12 段的真实 `UserId`;
|
- 若 `QDHeader` 第一段为 `(null)` 或无效,继续检查 `QDHeader` 第 12 段的真实 `UserId`;
|
||||||
- 再读取 `uid/userid/userId/UserId`;
|
- 再读取 `uid/userid/userId/UserId`;
|
||||||
- 最后才回退 `ywguid/gwguid/guid`,与 QX 抓包脚本保持一致;
|
- 最后才回退 `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`。
|
2. `POST <qdreader_sign_api>/sign` 获取请求签名头。默认签名网关基址是 `https://api.120399.xyz/qdreader`。
|
||||||
3. `POST https://h5.if.qidian.com/argus/api/v3/checkin/checkin` 完成签到。
|
3. `POST https://h5.if.qidian.com/argus/api/v3/checkin/checkin` 完成签到。
|
||||||
4. 写入单账号最后结果 `qdreader_last_result_json`,包括 `ok/msg/time/source/runId`。
|
4. 写入单账号最后结果 `qdreader_last_result_json`,包括 `ok/msg/time/source/runId`。
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
//[author: Hermes]
|
//[author: Hermes]
|
||||||
//[service: BOSS]
|
//[service: BOSS]
|
||||||
//[class: 工具类]
|
//[class: 工具类]
|
||||||
//[version: 2.3.1]
|
//[version: 2.3.2]
|
||||||
//[platform: web,qq,wx,tg,tb,fs,we]
|
//[platform: web,qq,wx,tg,tb,fs,we]
|
||||||
//[public: false]
|
//[public: false]
|
||||||
//[price: 0]
|
//[price: 0]
|
||||||
@@ -183,7 +183,7 @@ function contentText() {
|
|||||||
}
|
}
|
||||||
function usage() {
|
function usage() {
|
||||||
return [
|
return [
|
||||||
"启点读书签到插件 v2.3.1",
|
"启点读书签到插件 v2.3.2",
|
||||||
"【一级菜单】",
|
"【一级菜单】",
|
||||||
"账号管理:启点账号",
|
"账号管理:启点账号",
|
||||||
"执行查询:启点查询",
|
"执行查询:启点查询",
|
||||||
@@ -230,7 +230,9 @@ function normalizeCookie(cookie) {
|
|||||||
var appid = jar.appId || jar.appid || ""
|
var appid = jar.appId || jar.appid || ""
|
||||||
if (appid) jar.appId = appid
|
if (appid) jar.appId = appid
|
||||||
var guid = jar.ywguid || jar.gwguid || jar.guid || ""
|
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) {
|
function httpReq(opt) {
|
||||||
if (!opt.headers) opt.headers = {}
|
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).source, 'manual');
|
||||||
assert.equal(JSON.parse(manual.store.qdreader_last_run_json).okCount, 1);
|
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');
|
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 } });
|
const cron = runPlugin({ content: '', store: { ...store } });
|
||||||
assert.equal(cron.calls.length, 2);
|
assert.equal(cron.calls.length, 2);
|
||||||
|
|||||||
Reference in New Issue
Block a user