fix(qdreader): sync risk-conf verification handling
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
//[author: Hermes]
|
||||
//[service: BOSS]
|
||||
//[class: 工具类]
|
||||
// [version: 2.15.6]
|
||||
// [version: 2.15.7]
|
||||
// [platform: web,qq,wx,tg,tb,fs,we]
|
||||
// [public: false]
|
||||
// [price: 0]
|
||||
@@ -447,13 +447,27 @@ function resultOk(obj) {
|
||||
if (String(status) === "401" || String(status) === "403") return false
|
||||
return code === undefined || code === 0 || code === "0" || code === 200 || code === "200" || status === "ok" || status === "success"
|
||||
}
|
||||
function isLoginExpiredMsg(msg) {
|
||||
msg = String(msg || "")
|
||||
return /登录状态已失效|登录已失效|登录状态.*过期|登录.*过期|用户未登录|未登录|请登录|重新登录|Cookie.*失效|CK.*失效|cookie.*expired|login.*expired|not\s*login/i.test(msg)
|
||||
}
|
||||
function resultMsg(obj) {
|
||||
obj = responseEnvelope(obj)
|
||||
if (!obj) return ""
|
||||
var status = obj.status || obj.Status || obj.statusCode || obj.StatusCode
|
||||
if (String(status) === "401") return "登录状态已失效,请更新 Cookie"
|
||||
if (String(status) === "403") return "接口鉴权失败,请更新 Cookie"
|
||||
return obj.Message || obj.Msg || obj.message || obj.msg || obj.error || obj.toast || (obj.data && (obj.data.message || obj.data.msg || obj.data.error || obj.data.toast || obj.data.Message || obj.data.Msg)) || (obj.Data && (obj.Data.message || obj.Data.msg || obj.Data.error || obj.Data.toast || obj.Data.Message || obj.Data.Msg)) || ""
|
||||
var msg = obj.Message || obj.Msg || obj.message || obj.msg || obj.error || obj.toast || (obj.data && (obj.data.message || obj.data.msg || obj.data.error || obj.data.toast || obj.data.Message || obj.data.Msg)) || (obj.Data && (obj.Data.message || obj.Data.msg || obj.Data.error || obj.Data.toast || obj.Data.Message || obj.Data.Msg)) || ""
|
||||
if (isLoginExpiredMsg(msg)) return "登录状态已失效,请更新 Cookie"
|
||||
return msg
|
||||
}
|
||||
function isCookieExpiredResult(obj) {
|
||||
var env = responseEnvelope(obj)
|
||||
if (!env) return false
|
||||
var status = env.status || env.Status || env.statusCode || env.StatusCode
|
||||
if (String(status) === "401") return true
|
||||
var rawMsg = env.Message || env.Msg || env.message || env.msg || env.error || env.toast || (env.data && (env.data.message || env.data.msg || env.data.error || env.data.toast || env.data.Message || env.data.Msg)) || (env.Data && (env.Data.message || env.Data.msg || env.Data.error || env.Data.toast || env.Data.Message || env.Data.Msg)) || ""
|
||||
return isLoginExpiredMsg(rawMsg)
|
||||
}
|
||||
function successLikeMsg(msg) {
|
||||
msg = String(msg || "")
|
||||
@@ -708,12 +722,18 @@ function taskRunCount(task, def) {
|
||||
if (n > 10) n = 10
|
||||
return n
|
||||
}
|
||||
function taskAccepted(res) { return taskResultOk(res) || Number(resultCode(res)) === 9 }
|
||||
function taskAccepted(res) { return (taskResultOk(res) || Number(resultCode(res)) === 9) && !riskConf(res) }
|
||||
function riskConf(res) {
|
||||
res = responseEnvelope(res)
|
||||
var data = res && (res.Data || res.data || res.ResultData || res.resultData)
|
||||
return data && (data.RiskConf || data.riskConf || data.Risk || data.risk)
|
||||
}
|
||||
function riskBlockedMsg(res) {
|
||||
var rc = riskConf(res)
|
||||
if (!rc) return ""
|
||||
var url = rc.CaptchaURL || rc.captchaUrl || rc.Url || rc.url || ""
|
||||
return url ? "触发风控验证,任务未确认完成" : "触发风控验证,任务未确认完成"
|
||||
}
|
||||
function finishVideoTask(taskOrId, cookie, repeat) {
|
||||
var tid = typeof taskOrId === "object" ? taskIdOf(taskOrId || {}) : taskOrId
|
||||
var n = repeat || (typeof taskOrId === "object" ? taskRunCount(taskOrId, 1) : 1)
|
||||
@@ -758,13 +778,13 @@ function doAdvTask(cookie) {
|
||||
var fr = finishVideoTask(tid, cookie, 1)
|
||||
submittedCount += fr.ok
|
||||
if (riskConf(fr.last)) riskSubmitted = true
|
||||
if (fr.ok < fr.total) return { name: "激励任务", ok: false, msg: resultMsg(fr.last) || ("第 " + (i + 1) + " 个任务失败"), path: "/argus/api/v1/video/adv/finishWatch" }
|
||||
if (fr.ok < fr.total) return { name: "激励任务", ok: false, msg: riskBlockedMsg(fr.last) || resultMsg(fr.last) || ("第 " + (i + 1) + " 个任务失败"), path: "/argus/api/v1/video/adv/finishWatch" }
|
||||
}
|
||||
var verify = qdGet("/argus/api/v2/video/adv/mainPage", {}, cookie)
|
||||
var after = advTaskList(verify)
|
||||
var finished = !!(after && after.length && after.every(function (t) { return taskFinished(t) }))
|
||||
if (finished) return { name: "激励任务", ok: true, msg: "任务已完成", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
if (submittedCount > 0 && riskSubmitted) return { name: "激励任务", ok: true, msg: "已提交,状态待刷新", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
if (submittedCount > 0 && riskSubmitted) return { name: "激励任务", ok: false, msg: "触发风控验证,任务未确认完成", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
return { name: "激励任务", ok: false, msg: submittedCount ? "部分任务未完成" : "未找到可提交任务", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
}
|
||||
function taskReceived(task) {
|
||||
@@ -781,7 +801,7 @@ function doDailyTask(cookie) {
|
||||
var pr = finishVideoTask(taskIdOf(pre), cookie, 1)
|
||||
done += pr.ok
|
||||
if (riskConf(pr.last)) riskSubmitted = true
|
||||
if (pr.ok < pr.total) return { name: "每日任务", ok: false, msg: resultMsg(pr.last) || "惊喜福利任务失败", path: "/argus/api/v1/video/adv/finishWatch" }
|
||||
if (pr.ok < pr.total) return { name: "每日任务", ok: false, msg: riskBlockedMsg(pr.last) || resultMsg(pr.last) || "惊喜福利任务失败", path: "/argus/api/v1/video/adv/finishWatch" }
|
||||
}
|
||||
var tasks = dailyTaskList(main)
|
||||
if (!tasks.length) return { name: "每日任务", ok: false, msg: "任务列表为空", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
@@ -796,7 +816,7 @@ function doDailyTask(cookie) {
|
||||
var ar = finishVideoTask(taskIdOf(oneAd), cookie, 1)
|
||||
done += ar.ok
|
||||
if (riskConf(ar.last)) riskSubmitted = true
|
||||
if (ar.ok < ar.total) return { name: "每日任务", ok: false, msg: resultMsg(ar.last) || "完成1个广告任务失败", path: "/argus/api/v1/video/adv/finishWatch" }
|
||||
if (ar.ok < ar.total) return { name: "每日任务", ok: false, msg: riskBlockedMsg(ar.last) || resultMsg(ar.last) || "完成1个广告任务失败", path: "/argus/api/v1/video/adv/finishWatch" }
|
||||
}
|
||||
if (!target) return { name: "每日任务", ok: false, msg: "未找到每日任务任务", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
if (taskReceived(target)) return { name: "每日任务", ok: true, msg: "任务已完成", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
@@ -805,13 +825,13 @@ function doDailyTask(cookie) {
|
||||
var tr = finishVideoTask(tid, cookie, 3)
|
||||
done += tr.ok
|
||||
if (riskConf(tr.last)) riskSubmitted = true
|
||||
if (tr.ok < tr.total) return { name: "每日任务", ok: false, msg: resultMsg(tr.last) || "每日任务广告失败", path: "/argus/api/v1/video/adv/finishWatch" }
|
||||
if (tr.ok < tr.total) return { name: "每日任务", ok: false, msg: riskBlockedMsg(tr.last) || resultMsg(tr.last) || "每日任务广告失败", path: "/argus/api/v1/video/adv/finishWatch" }
|
||||
var verify = qdGet("/argus/api/v2/video/adv/mainPage", {}, cookie)
|
||||
var after = dailyTaskList(verify)
|
||||
var finished = false
|
||||
for (var v = 0; v < after.length; v++) if (taskTitle(after[v]) === "完成3个广告任务得奖励" && taskReceived(after[v])) { finished = true; break }
|
||||
if (finished) return { name: "每日任务", ok: true, msg: "任务已完成", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
if (done > 0 && riskSubmitted) return { name: "每日任务", ok: true, msg: "已提交,状态待刷新", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
if (done > 0 && riskSubmitted) return { name: "每日任务", ok: false, msg: "触发风控验证,任务未确认完成", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
return { name: "每日任务", ok: false, msg: "任务未完成", path: "/argus/api/v2/video/adv/mainPage" }
|
||||
}
|
||||
function doLotteryTask(cookie) {
|
||||
@@ -907,9 +927,9 @@ function doMessageBox(cookie) {
|
||||
var bookId = data.BookId || ""
|
||||
if (data.Status !== undefined && Number(data.Status) !== 1) continue
|
||||
if (chance <= 0 && bookStatus !== 0 && bookStatus !== 1 && bookStatus !== 2) continue
|
||||
if (chance > 0) { var cb = qdPost("/argus/api/v1/interaction/rewardcallback", { orderId: orderId, checkRisk: "1" }, cookie); if (taskResultOk(cb) || String(resultCode(cb)) === "0") handled++; continue }
|
||||
if (bookStatus === 0 || bookStatus === 1) { if (!bookId) continue; var add = qdPost("/argus/api/v1/interaction/rewardaddshelf", { orderId: orderId, bookId: bookId }, cookie); if (taskResultOk(add) || String(resultCode(add)) === "0") handled++; continue }
|
||||
if (bookStatus === 2) { var rc = qdPost("/argus/api/v1/interaction/rewardcallback", { orderId: orderId, checkRisk: "1" }, cookie); if (!taskResultOk(rc) && String(resultCode(rc)) !== "0") continue; var r2 = qdPost("/argus/api/v1/interaction/rewardcallback", { orderId: orderId, checkRisk: "0" }, cookie); if (taskResultOk(r2) || String(resultCode(r2)) === "0") handled++ }
|
||||
if (chance > 0) { var cb = qdPost("/argus/api/v1/interaction/rewardcallback", { orderId: orderId, checkRisk: "1" }, cookie); if (!riskConf(cb) && (taskResultOk(cb) || String(resultCode(cb)) === "0")) handled++; continue }
|
||||
if (bookStatus === 0 || bookStatus === 1) { if (!bookId) continue; var add = qdPost("/argus/api/v1/interaction/rewardaddshelf", { orderId: orderId, bookId: bookId }, cookie); if (!riskConf(add) && (taskResultOk(add) || String(resultCode(add)) === "0")) handled++; continue }
|
||||
if (bookStatus === 2) { var rc = qdPost("/argus/api/v1/interaction/rewardcallback", { orderId: orderId, checkRisk: "1" }, cookie); if (riskConf(rc) || (!taskResultOk(rc) && String(resultCode(rc)) !== "0")) continue; var r2 = qdPost("/argus/api/v1/interaction/rewardcallback", { orderId: orderId, checkRisk: "0" }, cookie); if (!riskConf(r2) && (taskResultOk(r2) || String(resultCode(r2)) === "0")) handled++ }
|
||||
}
|
||||
}
|
||||
return { name: "大咖荐书", ok: true, msg: handled ? ("成功处理 " + handled + " 个荐书") : "无待处理荐书", path: "https://magev6.if.qidian.com/argus/api/v2/message/pullmessage" }
|
||||
@@ -932,6 +952,13 @@ function doTaskChain(uid, cookie, source, runId) {
|
||||
var startedAt = nowIso()
|
||||
var details = []
|
||||
var checkin = qidianRequest(CHECKIN_PATH, "POST", {}, cookie)
|
||||
if (isCookieExpiredResult(checkin)) {
|
||||
var expiredMsg = resultMsg(checkin) || "登录状态已失效,请更新 Cookie"
|
||||
var expiredDetail = { name: "签到结果", ok: false, msg: expiredMsg, path: CHECKIN_PATH, cookieExpired: true }
|
||||
var expiredResult = { uid: String(uid), ok: false, msg: expiredMsg, time: nowIso(), startedAt: startedAt, source: source || "manual", runId: runId || "", tasks: [expiredDetail], cookieExpired: true }
|
||||
setLastResult(uid, expiredResult)
|
||||
return { uid: uid, ok: false, msg: expiredMsg, raw: checkin, log: expiredResult, cookieExpired: true }
|
||||
}
|
||||
var ok = taskResultOk(checkin)
|
||||
var msg = resultMsg(checkin) || (ok ? "签到请求成功" : ("签到失败" + (resultCode(checkin) !== undefined ? " code=" + resultCode(checkin) : "")))
|
||||
details.push({ name: "签到结果", ok: !!ok, msg: String(msg || ""), path: CHECKIN_PATH })
|
||||
|
||||
Reference in New Issue
Block a user