fix: accept qdreader json map cookie input
This commit is contained in:
@@ -554,18 +554,46 @@ function handleDelete(arg, store, bind) {
|
||||
setStore(store); setBindStore(bind); setRemarkStore(remarks)
|
||||
return "已删除 uid: " + duid
|
||||
}
|
||||
function normalizeCookieInput(arg) {
|
||||
var s = trim(arg)
|
||||
var obj = safeJsonParse(s, null)
|
||||
if (isObject(obj)) {
|
||||
var out = []
|
||||
for (var uid in obj) if (obj.hasOwnProperty(uid)) {
|
||||
var realUid = isRealUid(uid)
|
||||
var cookie = trim(obj[uid])
|
||||
if (!realUid || !cookie) continue
|
||||
out.push({ uid: realUid, cookie: cookie })
|
||||
}
|
||||
return out
|
||||
}
|
||||
return [{ uid: "", cookie: s }]
|
||||
}
|
||||
function handleSaveCookie(arg, store, bind) {
|
||||
var cookie = arg
|
||||
if (cookie.indexOf("=") < 0 || cookie.indexOf(";") < 0) return "未识别到 Cookie。请发送:启点ck <QX抓到的完整cookie>"
|
||||
var uid = extractUid(cookie)
|
||||
if (!uid) return "无法从 Cookie 识别 uid。请确认 QX 抓的是启点读书福利中心 getlogininfo 请求,Cookie 内应包含 QDHeader 或 uid。"
|
||||
var isNew = !store[uid]
|
||||
var changed = store[uid] !== cookie
|
||||
var entries = normalizeCookieInput(arg)
|
||||
if (!entries.length) return "未识别到 Cookie。请发送:启点ck {\"uid\":\"cookie\"} 或 启点ck <QX抓到的完整cookie>"
|
||||
var me = currentUserId()
|
||||
store[uid] = cookie
|
||||
if (me) bind[uid] = me
|
||||
var lines = []
|
||||
for (var i = 0; i < entries.length; i++) {
|
||||
var cookie = entries[i].cookie
|
||||
if (cookie.indexOf("=") < 0 || cookie.indexOf(";") < 0) return "未识别到 Cookie。请发送:启点ck {\"uid\":\"cookie\"} 或 启点ck <QX抓到的完整cookie>"
|
||||
var parsedUid = extractUid(cookie)
|
||||
var uid = entries[i].uid || parsedUid
|
||||
if (!uid) return "无法从 Cookie 识别 uid。请确认 QX 抓的是启点读书福利中心 getlogininfo 请求,Cookie 内应包含 QDHeader 或 uid。"
|
||||
var isNew = !store[uid]
|
||||
var changed = store[uid] !== cookie
|
||||
store[uid] = cookie
|
||||
if (me) bind[uid] = me
|
||||
lines.push("启点读书CK" + (isNew ? "新增" : (changed ? "更新" : "未变化")) + "成功")
|
||||
lines.push("uid: " + uid)
|
||||
if (entries.length > 1 && parsedUid && parsedUid !== uid) lines.push("提示: JSON uid 与 Cookie 解析 uid 不一致,已按 JSON uid 保存")
|
||||
}
|
||||
setStore(store); setBindStore(bind)
|
||||
return ["启点读书CK" + (isNew ? "新增" : (changed ? "更新" : "未变化")) + "成功", "uid: " + uid, me ? ("绑定用户: " + maskUid(me)) : "绑定用户: 未识别", "账号数: " + visibleUids(store, bind, false).length, "cookie: " + maskCookie(cookie), "签到:发送 启点签到"].join("\n")
|
||||
lines.push(me ? ("绑定用户: " + maskUid(me)) : "绑定用户: 未识别")
|
||||
lines.push("账号数: " + visibleUids(store, bind, false).length)
|
||||
lines.push("cookie: " + maskCookie(entries[0].cookie))
|
||||
lines.push("签到:发送 启点签到")
|
||||
return lines.join("\n")
|
||||
}
|
||||
function main() {
|
||||
var text = contentText()
|
||||
|
||||
@@ -554,18 +554,46 @@ function handleDelete(arg, store, bind) {
|
||||
setStore(store); setBindStore(bind); setRemarkStore(remarks)
|
||||
return "已删除 uid: " + duid
|
||||
}
|
||||
function normalizeCookieInput(arg) {
|
||||
var s = trim(arg)
|
||||
var obj = safeJsonParse(s, null)
|
||||
if (isObject(obj)) {
|
||||
var out = []
|
||||
for (var uid in obj) if (obj.hasOwnProperty(uid)) {
|
||||
var realUid = isRealUid(uid)
|
||||
var cookie = trim(obj[uid])
|
||||
if (!realUid || !cookie) continue
|
||||
out.push({ uid: realUid, cookie: cookie })
|
||||
}
|
||||
return out
|
||||
}
|
||||
return [{ uid: "", cookie: s }]
|
||||
}
|
||||
function handleSaveCookie(arg, store, bind) {
|
||||
var cookie = arg
|
||||
if (cookie.indexOf("=") < 0 || cookie.indexOf(";") < 0) return "未识别到 Cookie。请发送:启点ck <QX抓到的完整cookie>"
|
||||
var uid = extractUid(cookie)
|
||||
if (!uid) return "无法从 Cookie 识别 uid。请确认 QX 抓的是启点读书福利中心 getlogininfo 请求,Cookie 内应包含 QDHeader 或 uid。"
|
||||
var isNew = !store[uid]
|
||||
var changed = store[uid] !== cookie
|
||||
var entries = normalizeCookieInput(arg)
|
||||
if (!entries.length) return "未识别到 Cookie。请发送:启点ck {\"uid\":\"cookie\"} 或 启点ck <QX抓到的完整cookie>"
|
||||
var me = currentUserId()
|
||||
store[uid] = cookie
|
||||
if (me) bind[uid] = me
|
||||
var lines = []
|
||||
for (var i = 0; i < entries.length; i++) {
|
||||
var cookie = entries[i].cookie
|
||||
if (cookie.indexOf("=") < 0 || cookie.indexOf(";") < 0) return "未识别到 Cookie。请发送:启点ck {\"uid\":\"cookie\"} 或 启点ck <QX抓到的完整cookie>"
|
||||
var parsedUid = extractUid(cookie)
|
||||
var uid = entries[i].uid || parsedUid
|
||||
if (!uid) return "无法从 Cookie 识别 uid。请确认 QX 抓的是启点读书福利中心 getlogininfo 请求,Cookie 内应包含 QDHeader 或 uid。"
|
||||
var isNew = !store[uid]
|
||||
var changed = store[uid] !== cookie
|
||||
store[uid] = cookie
|
||||
if (me) bind[uid] = me
|
||||
lines.push("启点读书CK" + (isNew ? "新增" : (changed ? "更新" : "未变化")) + "成功")
|
||||
lines.push("uid: " + uid)
|
||||
if (entries.length > 1 && parsedUid && parsedUid !== uid) lines.push("提示: JSON uid 与 Cookie 解析 uid 不一致,已按 JSON uid 保存")
|
||||
}
|
||||
setStore(store); setBindStore(bind)
|
||||
return ["启点读书CK" + (isNew ? "新增" : (changed ? "更新" : "未变化")) + "成功", "uid: " + uid, me ? ("绑定用户: " + maskUid(me)) : "绑定用户: 未识别", "账号数: " + visibleUids(store, bind, false).length, "cookie: " + maskCookie(cookie), "签到:发送 启点签到"].join("\n")
|
||||
lines.push(me ? ("绑定用户: " + maskUid(me)) : "绑定用户: 未识别")
|
||||
lines.push("账号数: " + visibleUids(store, bind, false).length)
|
||||
lines.push("cookie: " + maskCookie(entries[0].cookie))
|
||||
lines.push("签到:发送 启点签到")
|
||||
return lines.join("\n")
|
||||
}
|
||||
function main() {
|
||||
var text = contentText()
|
||||
|
||||
@@ -73,6 +73,15 @@ test('manual cookie save falls back to ywguid when QDHeader uid is null', () =>
|
||||
assert.equal(JSON.parse(r.store.qdreader_cookie_json)['54321'], fallbackCookie);
|
||||
});
|
||||
|
||||
test('manual cookie save accepts upstream JSON map format', () => {
|
||||
const jsonCookie = 'QDHeader=KG51bGwpfHg=; ywguid=54321; qdh=qdh; sessionyw=s; appId=10';
|
||||
const r = runPlugin({ content: '启点ck ' + JSON.stringify({ '475700975': jsonCookie }) });
|
||||
assert.match(r.replies.join('\n'), /CK新增成功/);
|
||||
assert.match(r.replies.join('\n'), /uid: 475700975/);
|
||||
assert.equal(JSON.parse(r.store.qdreader_cookie_json)['475700975'], jsonCookie);
|
||||
assert.equal(JSON.parse(r.bucketStore['hermes_qidian.qdreader_user_bind_json'])['475700975'], 'user-a');
|
||||
});
|
||||
|
||||
test('manual cookie save falls back to QDHeader embedded UserId before ywguid', () => {
|
||||
const streamQdheader = 'KG51bGwpfChudWxsKXwxMTc5fDI1NTZ8KG51bGwpfDE2LjEwfDB8aU9TL2lQaG9uZS8obnVsbCl8MHwobnVsbCl8KG51bGwpfDQ3NTcwMDk3NXwxNzc5MDA5MTM2MDAwfDB8KG51bGwpfHx8KG51bGwpfChudWxsKXww';
|
||||
const streamCookie = `QDHeader=${streamQdheader}; ywguid=120098575768; qdh=qdh; sessionyw=s; appId=12`;
|
||||
|
||||
Reference in New Issue
Block a user