diff --git a/jd_CkSeq.js b/jd_CkSeq.js new file mode 100644 index 0000000..92306b1 --- /dev/null +++ b/jd_CkSeq.js @@ -0,0 +1,531 @@ +/* +cron "0 0 * * *" jd_CheckCkSeq.js, tag:CK顺序调试工具by-ccwav + */ +const $ = new Env("CK顺序调试工具"); +const { + getEnvs +} = require('./ql'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +let cookiesArr = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) +} + +let arrCkPtPin = []; +let arrEnvPtPin = []; +let arrEnvStatus = []; +let arrEnvOnebyOne = []; +let strCk = ""; +let strNoFoundCk = ""; +let strMessage = ""; + +const fs = require('fs'); +let TempCKUid = []; +let strUidFile = '/ql/scripts/CK_WxPusherUid.json'; +let UidFileexists = fs.existsSync(strUidFile); +if (UidFileexists) { + console.log("检测到一对一Uid文件WxPusherUid.json,载入..."); + TempCKUid = fs.readFileSync(strUidFile, 'utf-8'); + if (TempCKUid) { + TempCKUid = TempCKUid.toString(); + TempCKUid = JSON.parse(TempCKUid); + } +} + +!(async() => { + + const envs = await getEnvs(); + for (let i = 0; i < envs.length; i++) { + if (envs[i].value) { + var tempptpin = decodeURIComponent(envs[i].value.match(/pt_pin=([^; ]+)(?=;?)/) && envs[i].value.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + arrEnvPtPin.push(tempptpin); + arrEnvStatus.push(envs[i].status); + var struuid=getuuid(envs[i].remarks,tempptpin) + arrEnvOnebyOne.push(struuid); + } + } + + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + var tempptpin = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + var intSeq = inArray(tempptpin, arrEnvPtPin); + if (intSeq != -1) { + intSeq += 1; + arrCkPtPin.push(tempptpin); + strCk += "【"+intSeq + "】" + tempptpin ; + if (arrEnvOnebyOne[i]) { + strCk += "(账号已启用一对一推送)" + } + strCk +="\n"; + } + } + } + + for (let i = 0; i < arrEnvPtPin.length; i++) { + var tempptpin = arrEnvPtPin[i]; + var intSeq = inArray(tempptpin, arrCkPtPin); + if (intSeq == -1) { + strNoFoundCk += "【"+(i + 1) + "】" + tempptpin; + if (arrEnvStatus[i] == 1) { + strNoFoundCk += "(状态已禁用)" + } + if (arrEnvOnebyOne[i]) { + strNoFoundCk += "(账号已启用一对一推送)" + } + strNoFoundCk +="\n"; + + } + } + + if (strNoFoundCk) { + console.log("没有出现在今日CK队列中的账号: \n" + strNoFoundCk); + strMessage+="没有出现在今日CK队列中的账号: \n" + strNoFoundCk; + } + + console.log("\n今日执行任务的账号顺序: \n" + strCk); + strMessage+="\n今日执行任务的账号顺序: \n" + strCk; + + if ($.isNode()) { + await notify.sendNotify(`${$.name}`, strMessage); + } + return; +})() +.catch((e) => $.logErr(e)) +.finally(() => $.done()); + +function inArray(search, array) { + var lnSeq = -1; + for (var i in array) { + if (array[i] == search) { + lnSeq = i; + } + } + return parseInt(lnSeq); +} + +function getuuid(strRemark, PtPin) { + var strTempuuid = ""; + if (strRemark) { + var Tempindex = strRemark.indexOf("@@"); + if (Tempindex != -1) { + //console.log(PtPin + ": 检测到NVJDC的一对一格式,瑞思拜~!"); + var TempRemarkList = strRemark.split("@@"); + for (let j = 1; j < TempRemarkList.length; j++) { + if (TempRemarkList[j]) { + if (TempRemarkList[j].length > 4) { + if (TempRemarkList[j].substring(0, 4) == "UID_") { + strTempuuid = TempRemarkList[j]; + break; + } + } + } + } + } + } + if (!strTempuuid && TempCKUid) { + //console.log("正在从CK_WxPusherUid文件中检索资料..."); + for (let j = 0; j < TempCKUid.length; j++) { + if (PtPin == decodeURIComponent(TempCKUid[j].pt_pin)) { + strTempuuid = TempCKUid[j].Uid; + break; + } + } + } + return strTempuuid; +} + +// prettier-ignore +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + class s { + constructor(t) { + this.env = t + } + send(t, e = "GET") { + t = "string" == typeof t ? { + url: t + } + : t; + let s = this.get; + return "POST" === e && (s = this.post), + new Promise((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + get(t) { + return this.send.call(this.env, t) + } + post(t) { + return this.send.call(this.env, t, "POST") + } + } + return new class { + constructor(t, e) { + this.name = t, + this.http = new s(this), + this.data = null, + this.dataFile = "box.dat", + this.logs = [], + this.isMute = !1, + this.isNeedRewrite = !1, + this.logSeparator = "\n", + this.startTime = (new Date).getTime(), + Object.assign(this, e), + this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) + try { + s = JSON.parse(this.getdata(t)) + } catch {} + return s + } + setjson(t, e) { + try { + return this.setdata(JSON.stringify(t), e) + } catch { + return !1 + } + } + getScript(t) { + return new Promise(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, + r = e && e.timeout ? e.timeout : r; + const[o, h] = i.split("@"), + n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) + return {}; { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) + return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) + return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const[, s, i] = /^@(.*?)\.(.*?)$/.exec(t), + r = s ? this.getval(s) : ""; + if (r) + try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const[, i, r] = /^@(.*?)\.(.*?)$/.exec(e), + o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), + s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), + s = this.setval(JSON.stringify(o), i) + } + } else + s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), + this.cktough = this.cktough ? this.cktough : require("tough-cookie"), + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, + t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), + this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), + e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) + this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + }); + else if (this.isQuanX()) + t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) + new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) + return t; + if ("string" == typeof t) + return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } + : this.isSurge() ? { + url: t + } + : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), + s && t.push(s), + i && t.push(i), + console.log(t.join("\n")), + this.logs = this.logs.concat(t) + } + } + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), + console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), + this.log(), + (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + } + (t, e) +} diff --git a/jd_bean_sign.js b/jd_bean_sign.js index 096f32a..ecbf3b3 100644 --- a/jd_bean_sign.js +++ b/jd_bean_sign.js @@ -1,315 +1,2066 @@ /* -京东多合一签到,自用,可N个京东账号 -活动入口:各处的签到汇总 Node.JS专用 -IOS软件用户请使用 https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js -更新时间:2021-6-18 -推送通知默认简洁模式(多账号只发送一次)。如需详细通知,设置环境变量 JD_BEAN_SIGN_NOTIFY_SIMPLE 为false即可(N账号推送N次通知)。 -Modified From github https://github.com/ruicky/jd_sign_bot - */ -const $ = new Env('京东多合一签到'); -const notify = $.isNode() ? require('./sendNotify') : ''; -//Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; -const exec = require('child_process').execSync -const fs = require('fs') -const download = require('download'); -let resultPath = "./result.txt"; -let JD_DailyBonusPath = "./JD_DailyBonus.js"; -let outPutUrl = './'; -let NodeSet = 'CookieSet.json'; -let cookiesArr = [], cookie = '', allMessage = '', jrBodyArr = [], jrBody = ''; +cron 0 0 * * * jd_bean_sign.js +金融签到有一定使用门槛,需要请仔细阅读下方文字: +JRBODY抓取网站:ms.jr.jd.com/gw/generic/hy/h5/m/appSign(进入金融APP签到页面手动签到);抓取请求body,格式:"reqData=xxx" +变量填写示例:JRBODY: reqData=xxx&reqData=xxx&&reqData=xxx(比如第三个号没有,则留空,长度要与CK一致) -if ($.isNode()) { - Object.keys(jdCookieNode).forEach((item) => { - cookiesArr.push(jdCookieNode[item]) +强烈建议用文件,环境变量太长了 +云函数用户在config分支新建diy/JRBODY.txt即可(也就是diy文件夹下新建JRBODY.txt).每行一个jrbody,结尾行写'Finish' +例子: +reqData=xxx +(这个号没有,这行空着) +reqData=xxx +Finish + +其他环境用户除了JRBODY环境变量可以选用JRBODY.txt文件,放在同目录下,格式同上. +注:优先识别环境变量,如使用txt文件请不要设置环境变量.JRBODY换行符(应为unix换行符)可能影响脚本读取! + +出现任何问题请先删除CookieSet.json(云函数不用操作) +云函数提示写入失败正常,无任何影响 + */ +console.log('京东多合一签到SCF开始') +const sendNotify = require('./sendNotify.js').sendNotify +const fs = require('fs') +const jr_file = 'JRBODY.txt' +const readline = require('readline') +let cookiesArr = [] +let notification = '' +const stopVar = process.env.JD_BEAN_STOP ? process.env.JD_BEAN_STOP : '2000-5000'; +console.log('Stop:',stopVar) + +async function processLineByLine(jrbodys) { + const fileStream = fs.createReadStream(jr_file) + const rl = readline.createInterface({ + input: fileStream, + crlfDelay: Infinity }) - if (process.env.JD_BEAN_SIGN_BODY) { - if (process.env.JD_BEAN_SIGN_BODY.indexOf('&') > -1) { - jrBodyArr = process.env.JD_BEAN_SIGN_BODY.split('&'); - } else if (process.env.JD_BEAN_SIGN_BODY.indexOf('\n') > -1) { - jrBodyArr = process.env.JD_BEAN_SIGN_BODY.split('\n'); - } else { - jrBodyArr = [process.env.JD_BEAN_SIGN_BODY]; + for await (let line of rl) { + line = line.trim() + if (line == 'Finish'){ + console.log(`识别到读取结束符号,结束.共读取${jrbodys.length}个`) + return + } + jrbodys.push(line) + } +} +(async () => { + const jdCookieNode = require('./jdCookie.js') + Object.keys(jdCookieNode).forEach((item) => { + let ck = jdCookieNode[item].trim() + if(ck.substring(ck.length-1) !== ';'){ + ck = ck + ';' + } + cookiesArr.push(ck) + }) + let jrbodys = [] + if(process.env.JRBODY) { + jrbodys = process.env.JRBODY.split('&') + }else{ + console.log(`未检测到JRBODY环境变量,开始检测${jr_file}`) + try { + await fs.accessSync('./'+jr_file, fs.constants.F_OK) + console.log(`${jr_file} '存在,读取配置'`) + await processLineByLine(jrbodys) + } catch (err) { + console.log(`${jr_file} '不存在,跳过'`) } } - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; -} -!(async() => { - if (!cookiesArr[0]) { - $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); - return; + if (jrbodys.length != cookiesArr.length) { + console.error(`CK和JRBODY长度不匹配,不使用JRBODY,请阅读脚本开头说明.当前ck长度:${cookiesArr.length},JRBODY长度:${jrbodys.length}`) + jrbodys = undefined } - process.env.JD_BEAN_SIGN_NOTIFY_SIMPLE = process.env.JD_BEAN_SIGN_NOTIFY_SIMPLE ? process.env.JD_BEAN_SIGN_NOTIFY_SIMPLE : 'true'; - await requireConfig(); - // 下载最新代码 - await downFile(); - if (!await fs.existsSync(JD_DailyBonusPath)) { - console.log(`\nJD_DailyBonus.js 文件不存在,停止执行${$.name}\n`); - await notify.sendNotify($.name, `本次执行${$.name}失败,JD_DailyBonus.js 文件下载异常,详情请查看日志`) - return - } - const content = await fs.readFileSync(JD_DailyBonusPath, 'utf8') for (let i = 0; i < cookiesArr.length; i++) { - cookie = cookiesArr[i]; - if (cookie) { - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) - $.index = i + 1; - $.nickName = ''; - $.isLogin = true; - await TotalBean(); - console.log(`*****************开始京东账号${$.index} ${$.nickName || $.UserName}京豆签到*******************\n`); - if (!$.isLogin) { - $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); - if ($.isNode()) { - await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); - } - continue + const data = { + 'cookie':cookiesArr[i] + } + if (jrbodys) { + if(jrbodys[i].startsWith('reqData=')){ + data['jrBody'] = jrbodys[i] + }else{ + console.log(`跳过第${i+1}个JRBODY,为空或格式不正确`) } - jrBody = '' - if (jrBodyArr && jrBodyArr.length) { - for (let key in Object.keys(jrBodyArr)) { - let vo = JSON.parse(jrBodyArr[key]) - if (decodeURIComponent(vo.pin) == $.UserName) { - jrBody = vo.body || '' + } + cookiesArr[i] = data + } + console.log('main block finished') +})() +.then(() => { +console.log('Nobyda签到部分开始') +/************************* + +京东多合一签到脚本 + +更新时间: 2021.09.09 20:20 v2.1.3 +有效接口: 20+ +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +电报频道: @NobyDa +问题反馈: @NobyDa_bot +如果转载: 请注明出处 + +************************* +【 QX, Surge, Loon 说明 】 : +************************* + +初次使用时, app配置文件添加脚本配置, 并启用Mitm后: + +Safari浏览器打开登录 https://home.m.jd.com/myJd/newhome.action 点击"我的"页面 +或者使用旧版网址 https://bean.m.jd.com/bean/signIndex.action 点击签到并且出现签到日历 +如果通知获取Cookie成功, 则可以使用此签到脚本. 注: 请勿在京东APP内获取!!! + +获取京东金融签到Body说明: 正确添加脚本配置后, 进入"京东金融"APP, 在"首页"点击"签到"并签到一次, 待通知提示成功即可. + +由于cookie的有效性(经测试网页Cookie有效周期最长31天),如果脚本后续弹出cookie无效的通知,则需要重复上述步骤。 +签到脚本将在每天的凌晨0:05执行, 您可以修改执行时间。 因部分接口京豆限量领取, 建议调整为凌晨签到。 + +BoxJs或QX Gallery订阅地址: https://raw.githubusercontent.com/NobyDa/Script/master/NobyDa_BoxJs.json + +************************* +【 配置多京东账号签到说明 】 : +************************* + +正确配置QX、Surge、Loon后, 并使用此脚本获取"账号1"Cookie成功后, 请勿点击退出账号(可能会导致Cookie失效), 需清除浏览器资料或更换浏览器登录"账号2"获取即可; 账号3或以上同理. +注: 如需清除所有Cookie, 您可开启脚本内"DeleteCookie"选项 (第114行) + +************************* +【 JSbox, Node.js 说明 】 : +************************* + +开启抓包app后, Safari浏览器登录 https://home.m.jd.com/myJd/newhome.action 点击个人中心页面后, 返回抓包app搜索关键字 info/GetJDUserInfoUnion 复制请求头Cookie字段填入json串数据内即可 + +如需获取京东金融签到Body, 可进入"京东金融"APP (iOS), 在"首页"点击"签到"并签到一次, 返回抓包app搜索关键字 h5/m/appSign 复制请求体填入json串数据内即可 +*/ + +var Key = ''; //该参数已废弃; 仅用于下游脚本的兼容, 请使用json串数据 ↓ + +var DualKey = ''; //该参数已废弃; 仅用于下游脚本的兼容, 请使用json串数据 ↓ + +var OtherKey = JSON.stringify(cookiesArr); //无限账号Cookie json串数据, 请严格按照json格式填写, 具体格式请看以下样例: + +/*以下样例为双账号("cookie"为必须,其他可选), 第一个账号仅包含Cookie, 第二个账号包含Cookie和金融签到Body: + +var OtherKey = `[{ + "cookie": "pt_key=xxx;pt_pin=yyy;" +}, { + "cookie": "pt_key=yyy;pt_pin=xxx;", + "jrBody": "reqData=xxx" +}]` + + 注1: 以上选项仅针对于JsBox或Node.js, 如果使用QX,Surge,Loon, 请使用脚本获取Cookie. + 注2: 多账号用户抓取"账号1"Cookie后, 请勿点击退出账号(可能会导致Cookie失效), 需清除浏览器资料或更换浏览器登录"账号2"抓取. + 注3: 如果使用Node.js, 需自行安装'request'模块. 例: npm install request -g + 注4: Node.js或JSbox环境下已配置数据持久化, 填写Cookie运行一次后, 后续更新脚本无需再次填写, 待Cookie失效后重新抓取填写即可. + 注5: 脚本将自动处理"持久化数据"和"手动填写cookie"之间的重复关系, 例如填写多个账号Cookie后, 后续其中一个失效, 仅需填写该失效账号的新Cookie即可, 其他账号不会被清除. + +************************* +【Surge 4.2+ 脚本配置】: +************************* + +[Script] +京东多合一签到 = type=cron,cronexp=5 0 * * *,wake-system=1,timeout=60,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +获取京东Cookie = type=http-request,requires-body=1,pattern=^https:\/\/(api\.m|me-api|ms\.jr)\.jd\.com\/(client\.action\?functionId=signBean|user_new\/info\/GetJDUserInfoUnion\?|gw\/generic\/hy\/h5\/m\/appSign\?),script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +[MITM] +hostname = ms.jr.jd.com, me-api.jd.com, api.m.jd.com + +************************* +【Loon 2.1+ 脚本配置】: +************************* + +[Script] +cron "5 0 * * *" tag=京东多合一签到, script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +http-request ^https:\/\/(api\.m|me-api|ms\.jr)\.jd\.com\/(client\.action\?functionId=signBean|user_new\/info\/GetJDUserInfoUnion\?|gw\/generic\/hy\/h5\/m\/appSign\?) tag=获取京东Cookie, requires-body=true, script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +[MITM] +hostname = ms.jr.jd.com, me-api.jd.com, api.m.jd.com + +************************* +【 QX 1.0.10+ 脚本配置 】 : +************************* + +[task_local] +# 京东多合一签到 +5 0 * * * https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js, tag=京东多合一签到, img-url=https://raw.githubusercontent.com/NobyDa/mini/master/Color/jd.png,enabled=true + +[rewrite_local] +# 获取京东Cookie. +^https:\/\/(api\.m|me-api)\.jd\.com\/(client\.action\?functionId=signBean|user_new\/info\/GetJDUserInfoUnion\?) url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +# 获取钢镚签到body. +^https:\/\/ms\.jr\.jd\.com\/gw\/generic\/hy\/h5\/m\/appSign\? url script-request-body https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +[mitm] +hostname = ms.jr.jd.com, me-api.jd.com, api.m.jd.com + +*************************/ + +var LogDetails = false; //是否开启响应日志, true则开启 + +var stop = stopVar; //自定义延迟签到, 单位毫秒. 默认分批并发无延迟; 该参数接受随机或指定延迟(例: '2000'则表示延迟2秒; '2000-5000'则表示延迟最小2秒,最大5秒内的随机延迟), 如填入延迟则切换顺序签到(耗时较长), Surge用户请注意在SurgeUI界面调整脚本超时; 注: 该参数Node.js或JSbox环境下已配置数据持久化, 留空(var stop = '')即可清除. + +var DeleteCookie = false; //是否清除所有Cookie, true则开启. + +var boxdis = true; //是否开启自动禁用, false则关闭. 脚本运行崩溃时(如VPN断连), 下次运行时将自动禁用相关崩溃接口(仅部分接口启用), 崩溃时可能会误禁用正常接口. (该选项仅适用于QX,Surge,Loon) + +var ReDis = false; //是否移除所有禁用列表, true则开启. 适用于触发自动禁用后, 需要再次启用接口的情况. (该选项仅适用于QX,Surge,Loon) + +var out = 0; //接口超时退出, 用于可能发生的网络不稳定, 0则关闭. 如QX日志出现大量"JS Context timeout"后脚本中断时, 建议填写6000 + +var $nobyda = nobyda(); + +var merge = {}; + +var KEY = ''; + +async function all(cookie, jrBody) { + KEY = cookie; + merge = {}; + $nobyda.num++; + switch (stop) { + case 0: + await Promise.all([ + JingDongBean(stop), //京东京豆 + // JingDongStore(stop), //京东超市 + JingRongSteel(stop, jrBody), //金融钢镚 + // JingDongTurn(stop), //京东转盘 + // JDFlashSale(stop), //京东闪购 + // JingDongCash(stop), //京东现金红包 + // JDMagicCube(stop, 2), //京东小魔方 + // JingDongSubsidy(stop), //京东金贴 + JingDongGetCash(stop), //京东领现金 + // JingDongShake(stop), //京东摇一摇 + JDSecKilling(stop), //京东秒杀 + // JingRongDoll(stop, 'JRDoll', '京东金融-签壹', '4D25A6F482'), + // JingRongDoll(stop, 'JRThreeDoll', '京东金融-签叁', '69F5EC743C'), + // JingRongDoll(stop, 'JRFourDoll', '京东金融-签肆', '30C4F86264'), + // JingRongDoll(stop, 'JRFiveDoll', '京东金融-签伍', '1D06AA3B0F') + ]); + await Promise.all([ + // JDUserSignPre(stop, 'JDUndies', '京东商城-内衣', '4PgpL1xqPSW1sVXCJ3xopDbB1f69'), //京东内衣馆 + // JDUserSignPre(stop, 'JDCard', '京东商城-卡包', '7e5fRnma6RBATV9wNrGXJwihzcD'), //京东卡包 + // JDUserSignPre(stop, 'JDCustomized', '京东商城-定制', '2BJK5RBdvc3hdddZDS1Svd5Esj3R'), //京东定制 + // JDUserSignPre(stop, 'JDaccompany', '京东商城-陪伴', 'kPM3Xedz1PBiGQjY4ZYGmeVvrts'), //京东陪伴 + // JDUserSignPre(stop, 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'), //京东鞋靴 + // JDUserSignPre(stop, 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'), //京东童装馆 + // JDUserSignPre(stop, 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'), //京东母婴馆 + // JDUserSignPre(stop, 'JD3C', '京东商城-数码', '4SWjnZSCTHPYjE5T7j35rxxuMTb6'), //京东数码电器馆 + // JDUserSignPre(stop, 'JDWomen', '京东商城-女装', 'DpSh7ma8JV7QAxSE2gJNro8Q2h9'), //京东女装馆 + // JDUserSignPre(stop, 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi'), //京东图书 + // JDUserSignPre(stop, 'ReceiveJD', '京东商城-领豆', 'Ni5PUSK7fzZc4EKangHhqPuprn2'), //京东-领京豆 + JingRongDoll(stop, 'JTDouble', '京东金贴-双签', '1DF13833F7'), //京东金融 金贴双签 + // JingRongDoll(stop, 'XJDouble', '金融现金-双签', 'F68B2C3E71', '', '', '', 'xianjin') //京东金融 现金双签 + ]); + await Promise.all([ + // JDUserSignPre(stop, 'JDStory', '京东失眠-补贴', 'UcyW9Znv3xeyixW1gofhW2DAoz4'), //失眠补贴 + // JDUserSignPre(stop, 'JDPhone', '京东手机-小时', '4Vh5ybVr98nfJgros5GwvXbmTUpg'), //手机小时达 + // JDUserSignPre(stop, 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'), //京东电竞 + // JDUserSignPre(stop, 'JDClothing', '京东商城-服饰', '4RBT3H9jmgYg1k2kBnHF8NAHm7m8'), //京东服饰 + // JDUserSignPre(stop, 'JDSuitcase', '京东商城-箱包', 'ZrH7gGAcEkY2gH8wXqyAPoQgk6t'), //京东箱包馆 + // JDUserSignPre(stop, 'JDSchool', '京东商城-校园', '2QUxWHx5BSCNtnBDjtt5gZTq7zdZ'), //京东校园 + // JDUserSignPre(stop, 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'), //京东健康 + // JDUserSignPre(stop, 'JDShand', '京东拍拍-二手', '3S28janPLYmtFxypu37AYAGgivfp'), //京东拍拍二手 + // JDUserSignPre(stop, 'JDClean', '京东商城-清洁', '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6'), //京东清洁馆 + // JDUserSignPre(stop, 'JDCare', '京东商城-个护', '2tZssTgnQsiUqhmg5ooLSHY9XSeN'), //京东个人护理馆 + // JDUserSignPre(stop, 'JDJiaDian', '京东商城-家电', '3uvPyw1pwHARGgndatCXddLNUxHw'), // 京东小家电 + // JDUserSignPre(stop, 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'), //京东珠宝馆 + // JDUserSignPre(stop, 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'), //京东美妆馆 + // JDUserSignPre(stop, 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'), //京东菜场 + // JDUserSignPre(stop, 'JDLive', '京东智能-生活', 'KcfFqWvhb5hHtaQkS4SD1UU6RcQ') //京东智能生活 + ]); + await JingRongDoll(stop, 'JDDouble', '金融京豆-双签', 'F68B2C3E71', '', '', '', 'jingdou'); //京东金融 京豆双签 + break; + default: + await JingDongBean(0); //京东京豆 + // await JingDongStore(Wait(stop)); //京东超市 + await JingRongSteel(Wait(stop), jrBody); //金融钢镚 + // await JingDongTurn(Wait(stop)); //京东转盘 + // await JDFlashSale(Wait(stop)); //京东闪购 + // await JingDongCash(Wait(stop)); //京东现金红包 + // await JDMagicCube(Wait(stop), 2); //京东小魔方 + await JingDongGetCash(Wait(stop)); //京东领现金 + // await JingDongSubsidy(Wait(stop)); //京东金贴 + // await JingDongShake(Wait(stop)); //京东摇一摇 + await JDSecKilling(Wait(stop)); //京东秒杀 + // await JingRongDoll(Wait(stop), 'JRThreeDoll', '京东金融-签叁', '69F5EC743C'); + // await JingRongDoll(Wait(stop), 'JRFourDoll', '京东金融-签肆', '30C4F86264'); + // await JingRongDoll(Wait(stop), 'JRFiveDoll', '京东金融-签伍', '1D06AA3B0F'); + // await JingRongDoll(Wait(stop), 'JRDoll', '京东金融-签壹', '4D25A6F482'); + // await JingRongDoll(Wait(stop), 'XJDouble', '金融现金-双签', 'F68B2C3E71', '', '', '', 'xianjin'); //京东金融 现金双签 + await JingRongDoll(Wait(stop), 'JTDouble', '京东金贴-双签', '1DF13833F7'); //京东金融 金贴双签 + // await JDUserSignPre(Wait(stop), 'JDStory', '京东失眠-补贴', 'UcyW9Znv3xeyixW1gofhW2DAoz4'); //失眠补贴 + // await JDUserSignPre(Wait(stop), 'JDPhone', '京东手机-小时', '4Vh5ybVr98nfJgros5GwvXbmTUpg'); //手机小时达 + // await JDUserSignPre(Wait(stop), 'JDCard', '京东商城-卡包', '7e5fRnma6RBATV9wNrGXJwihzcD'); //京东卡包 + // await JDUserSignPre(Wait(stop), 'JDUndies', '京东商城-内衣', '4PgpL1xqPSW1sVXCJ3xopDbB1f69'); //京东内衣馆 + // await JDUserSignPre(Wait(stop), 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'); //京东电竞 + // await JDUserSignPre(Wait(stop), 'JDCustomized', '京东商城-定制', '2BJK5RBdvc3hdddZDS1Svd5Esj3R'); //京东定制 + // await JDUserSignPre(Wait(stop), 'JDSuitcase', '京东商城-箱包', 'ZrH7gGAcEkY2gH8wXqyAPoQgk6t'); //京东箱包馆 + // await JDUserSignPre(Wait(stop), 'JDClothing', '京东商城-服饰', '4RBT3H9jmgYg1k2kBnHF8NAHm7m8'); //京东服饰 + // await JDUserSignPre(Wait(stop), 'JDSchool', '京东商城-校园', '2QUxWHx5BSCNtnBDjtt5gZTq7zdZ'); //京东校园 + // await JDUserSignPre(Wait(stop), 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'); //京东健康 + // await JDUserSignPre(Wait(stop), 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'); //京东鞋靴 + // await JDUserSignPre(Wait(stop), 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'); //京东童装馆 + // await JDUserSignPre(Wait(stop), 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'); //京东母婴馆 + // await JDUserSignPre(Wait(stop), 'JD3C', '京东商城-数码', '4SWjnZSCTHPYjE5T7j35rxxuMTb6'); //京东数码电器馆 + // await JDUserSignPre(Wait(stop), 'JDWomen', '京东商城-女装', 'DpSh7ma8JV7QAxSE2gJNro8Q2h9'); //京东女装馆 + // await JDUserSignPre(Wait(stop), 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi'); //京东图书 + // await JDUserSignPre(Wait(stop), 'JDShand', '京东拍拍-二手', '3S28janPLYmtFxypu37AYAGgivfp'); //京东拍拍二手 + // await JDUserSignPre(Wait(stop), 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'); //京东美妆馆 + // await JDUserSignPre(Wait(stop), 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'); //京东菜场 + // await JDUserSignPre(Wait(stop), 'JDaccompany', '京东商城-陪伴', 'kPM3Xedz1PBiGQjY4ZYGmeVvrts'); //京东陪伴 + // await JDUserSignPre(Wait(stop), 'JDLive', '京东智能-生活', 'KcfFqWvhb5hHtaQkS4SD1UU6RcQ'); //京东智能生活 + // await JDUserSignPre(Wait(stop), 'JDClean', '京东商城-清洁', '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6'); //京东清洁馆 + // await JDUserSignPre(Wait(stop), 'JDCare', '京东商城-个护', '2tZssTgnQsiUqhmg5ooLSHY9XSeN'); //京东个人护理馆 + // await JDUserSignPre(Wait(stop), 'JDJiaDian', '京东商城-家电', '3uvPyw1pwHARGgndatCXddLNUxHw'); // 京东小家电馆 + // await JDUserSignPre(Wait(stop), 'ReceiveJD', '京东商城-领豆', 'Ni5PUSK7fzZc4EKangHhqPuprn2'); //京东-领京豆 + // await JDUserSignPre(Wait(stop), 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'); //京东珠宝馆 + await JingRongDoll(Wait(stop), 'JDDouble', '金融京豆-双签', 'F68B2C3E71', '', '', '', 'jingdou'); //京东金融 京豆双签 + break; + } + await Promise.all([ + TotalSteel(), //总钢镚查询 + TotalCash(), //总红包查询 + TotalBean(), //总京豆查询 + TotalSubsidy(), //总金贴查询 + TotalMoney() //总现金查询 + ]); + await notify(); //通知模块 +} + +function notify() { + return new Promise(resolve => { + try { + var bean = 0; + var steel = 0; + var cash = 0; + var money = 0; + var subsidy = 0; + var success = 0; + var fail = 0; + var err = 0; + var notify = ''; + for (var i in merge) { + bean += merge[i].bean ? Number(merge[i].bean) : 0 + steel += merge[i].steel ? Number(merge[i].steel) : 0 + cash += merge[i].Cash ? Number(merge[i].Cash) : 0 + money += merge[i].Money ? Number(merge[i].Money) : 0 + subsidy += merge[i].subsidy ? Number(merge[i].subsidy) : 0 + success += merge[i].success ? Number(merge[i].success) : 0 + fail += merge[i].fail ? Number(merge[i].fail) : 0 + err += merge[i].error ? Number(merge[i].error) : 0 + notify += merge[i].notify ? "\n" + merge[i].notify : "" + } + var Cash = merge.TotalCash && merge.TotalCash.TCash ? `${merge.TotalCash.TCash}红包` : "" + var Steel = merge.TotalSteel && merge.TotalSteel.TSteel ? `${merge.TotalSteel.TSteel}钢镚` : `` + var beans = merge.TotalBean && merge.TotalBean.Qbear ? `${merge.TotalBean.Qbear}京豆${Steel?`, `:``}` : "" + var Money = merge.TotalMoney && merge.TotalMoney.TMoney ? `${merge.TotalMoney.TMoney}现金${Cash?`, `:``}` : "" + var Subsidy = merge.TotalSubsidy && merge.TotalSubsidy.TSubsidy ? `${merge.TotalSubsidy.TSubsidy}金贴${Money||Cash?", ":""}` : "" + var Tbean = bean ? `${bean.toFixed(0)}京豆${steel?", ":""}` : "" + var TSteel = steel ? `${steel.toFixed(2)}钢镚` : "" + var TCash = cash ? `${cash.toFixed(2)}红包${subsidy||money?", ":""}` : "" + var TSubsidy = subsidy ? `${subsidy.toFixed(2)}金贴${money?", ":""}` : "" + var TMoney = money ? `${money.toFixed(2)}现金` : "" + var Ts = success ? `成功${success}个${fail||err?`, `:``}` : `` + var Tf = fail ? `失败${fail}个${err?`, `:``}` : `` + var Te = err ? `错误${err}个` : `` + var one = `【签到概览】: ${Ts+Tf+Te}${Ts||Tf||Te?`\n`:`获取失败\n`}` + var two = Tbean || TSteel ? `【签到奖励】: ${Tbean+TSteel}\n` : `` + var three = TCash || TSubsidy || TMoney ? `【其他奖励】: ${TCash+TSubsidy+TMoney}\n` : `` + var four = `【账号总计】: ${beans+Steel}${beans||Steel?`\n`:`获取失败\n`}` + var five = `【其他总计】: ${Subsidy+Money+Cash}${Subsidy||Money||Cash?`\n`:`获取失败\n`}` + var DName = merge.TotalBean && merge.TotalBean.nickname ? merge.TotalBean.nickname : "获取失败" + var cnNum = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"]; + const Name = DualKey || OtherKey.length > 1 ? `【签到号${cnNum[$nobyda.num]||$nobyda.num}】: ${DName}\n` : `` + const disables = $nobyda.read("JD_DailyBonusDisables") + const amount = disables ? disables.split(",").length : 0 + const disa = !notify || amount ? `【温馨提示】: 检测到${$nobyda.disable?`上次执行意外崩溃, `:``}已禁用${notify?`${amount}个`:`所有`}接口, 如需开启请前往BoxJs或查看脚本内第118行注释.\n` : `` + $nobyda.notify("", "", Name + one + two + three + four + five + disa, { + 'media-url': $nobyda.headUrl || 'https://cdn.jsdelivr.net/gh/NobyDa/mini@master/Color/jd.png' + }); + $nobyda.headUrl = null; + if ($nobyda.isJSBox) { + $nobyda.st = (typeof($nobyda.st) == 'undefined' ? '' : $nobyda.st) + Name + one + two + three + four + five + "\n" + } + } catch (eor) { + $nobyda.notify("通知模块 " + eor.name + "‼️", JSON.stringify(eor), eor.message) + } finally { + resolve() + } + }); +} + +(async function ReadCookie() { + const EnvInfo = $nobyda.isJSBox ? "JD_Cookie" : "CookieJD"; + const EnvInfo2 = $nobyda.isJSBox ? "JD_Cookie2" : "CookieJD2"; + const EnvInfo3 = $nobyda.isJSBox ? "JD_Cookies" : "CookiesJD"; + const move = CookieMove($nobyda.read(EnvInfo) || Key, $nobyda.read(EnvInfo2) || DualKey, EnvInfo, EnvInfo2, EnvInfo3); + const cookieSet = $nobyda.read(EnvInfo3); + if (DeleteCookie) { + const write = $nobyda.write("", EnvInfo3); + throw new Error(`Cookie清除${write?`成功`:`失败`}, 请手动关闭脚本内"DeleteCookie"选项`); + } else if ($nobyda.isRequest) { + GetCookie() + } else if (Key || DualKey || (OtherKey || cookieSet || '[]') != '[]') { + if (($nobyda.isJSBox || $nobyda.isNode) && stop !== '0') $nobyda.write(stop, "JD_DailyBonusDelay"); + out = parseInt($nobyda.read("JD_DailyBonusTimeOut")) || out; + stop = Wait($nobyda.read("JD_DailyBonusDelay"), true) || Wait(stop, true); + boxdis = $nobyda.read("JD_Crash_disable") === "false" || $nobyda.isNode || $nobyda.isJSBox ? false : boxdis; + LogDetails = $nobyda.read("JD_DailyBonusLog") === "true" || LogDetails; + ReDis = ReDis ? $nobyda.write("", "JD_DailyBonusDisables") : ""; + $nobyda.num = 0; + if (Key) await all(Key); + if (DualKey && DualKey !== Key) await all(DualKey); + if ((OtherKey || cookieSet || '[]') != '[]') { + try { + OtherKey = checkFormat([...JSON.parse(OtherKey || '[]'), ...JSON.parse(cookieSet || '[]')]); + const updateSet = OtherKey.length ? $nobyda.write(JSON.stringify(OtherKey, null, 2), EnvInfo3) : ''; + for (let i = 0; i < OtherKey.length; i++) { + const ck = OtherKey[i].cookie; + const jr = OtherKey[i].jrBody; + if (ck != Key && ck != DualKey) { + await all(ck, jr) + } + } + } catch (e) { + throw new Error(`账号Cookie读取失败, 请检查Json格式. \n${e.message}`) + } + } + sendNotify("京东多合一签到SCF:",notification) + $nobyda.time(); + } else { + throw new Error('脚本终止, 未获取Cookie ‼️') + } +})().catch(e => { + $nobyda.notify("京东签到", "", e.message || JSON.stringify(e)) +}).finally(() => { + if ($nobyda.isJSBox) $intents.finish($nobyda.st); + $nobyda.done(); +}) + +function JingDongBean(s) { + merge.JDBean = {}; + return new Promise(resolve => { + if (disable("JDBean")) return resolve() + setTimeout(() => { + const JDBUrl = { + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY + }, + body: 'functionId=signBeanIndex&appid=ld' + }; + $nobyda.post(JDBUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.code == 3) { + console.log("\n" + "京东商城-京豆Cookie失效 " + Details) + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: Cookie失效‼️" + merge.JDBean.fail = 1 + } else if (data.match(/跳转至拼图/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 需要拼图验证 ⚠️" + merge.JDBean.fail = 1 + } else if (data.match(/\"status\":\"?1\"?/)) { + console.log("\n" + "京东商城-京豆签到成功 " + Details) + if (data.match(/dailyAward/)) { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.dailyAward.beanAward.beanCount + "京豆 🐶" + merge.JDBean.bean = cc.data.dailyAward.beanAward.beanCount + } else if (data.match(/continuityAward/)) { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.continuityAward.beanAward.beanCount + "京豆 🐶" + merge.JDBean.bean = cc.data.continuityAward.beanAward.beanCount + } else if (data.match(/新人签到/)) { + const quantity = data.match(/beanCount\":\"(\d+)\".+今天/) + merge.JDBean.bean = quantity ? quantity[1] : 0 + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + (quantity ? quantity[1] : "无") + "京豆 🐶" + } else { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: 无京豆 🐶" + } + merge.JDBean.success = 1 + } else { + merge.JDBean.fail = 1 + console.log("\n" + "京东商城-京豆签到失败 " + Details) + if (data.match(/(已签到|新人签到)/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/人数较多|S101/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 签到人数较多 ⚠️" + } else { + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-京豆", "JDBean", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +// function JingDongTurn(s) { +// merge.JDTurn = {}, merge.JDTurn.notify = "", merge.JDTurn.success = 0, merge.JDTurn.bean = 0; +// return new Promise((resolve, reject) => { +// if (disable("JDTurn")) return reject() +// const JDTUrl = { +// url: 'https://api.m.jd.com/client.action?functionId=wheelSurfIndex&body=%7B%22actId%22%3A%22jgpqtzjhvaoym%22%2C%22appSource%22%3A%22jdhome%22%7D&appid=ld', +// headers: { +// Cookie: KEY, +// } +// }; +// $nobyda.get(JDTUrl, async function(error, response, data) { +// try { +// if (error) { +// throw new Error(error) +// } else { +// const cc = JSON.parse(data) +// const Details = LogDetails ? "response:\n" + data : ''; +// if (cc.data && cc.data.lotteryCode) { +// console.log("\n" + "京东商城-转盘查询成功 " + Details) +// return resolve(cc.data.lotteryCode) +// } else { +// merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 查询错误 ⚠️" +// merge.JDTurn.fail = 1 +// console.log("\n" + "京东商城-转盘查询失败 " + Details) +// } +// } +// } catch (eor) { +// $nobyda.AnError("京东转盘-查询", "JDTurn", eor, response, data) +// } finally { +// reject() +// } +// }) +// if (out) setTimeout(reject, out + s) +// }).then(data => { +// return JingDongTurnSign(s, data); +// }, () => {}); +// } + +function JingDongTurn(s) { + if (!merge.JDTurn) merge.JDTurn = {}, merge.JDTurn.notify = "", merge.JDTurn.success = 0, merge.JDTurn.bean = 0; + return new Promise(resolve => { + if (disable("JDTurn")) return resolve(); + setTimeout(() => { + const JDTUrl = { + url: `https://api.m.jd.com/client.action?functionId=babelGetLottery`, + headers: { + Cookie: KEY + }, + body: 'body=%7B%22enAwardK%22%3A%2295d235f2a09578c6613a1a029b26d12d%22%2C%22riskParam%22%3A%7B%7D%7D&client=wh5' + }; + $nobyda.post(JDTUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + const also = merge.JDTurn.notify ? true : false + if (cc.code == 3) { + console.log("\n" + "京东转盘Cookie失效 " + Details) + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: Cookie失效‼️" + merge.JDTurn.fail = 1 + } else if (data.match(/(\"T216\"|活动结束)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 活动结束 ⚠️" + merge.JDTurn.fail = 1 + } else if (data.match(/\d+京豆/)) { + console.log("\n" + "京东商城-转盘签到成功 " + Details) + merge.JDTurn.bean += (cc.prizeName && cc.prizeName.split(/(\d+)/)[1]) || 0 + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: ${also?`多次`:`成功`}, 明细: ${merge.JDTurn.bean||`无`}京豆 🐶` + merge.JDTurn.success += 1 + if (cc.chances > 0) { + await JingDongTurnSign(2000) + } + } else if (data.match(/未中奖|擦肩而过/)) { + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: ${also?`多次`:`成功`}, 状态: 未中奖 🐶` + merge.JDTurn.success += 1 + if (cc.chances > 0) { + await JingDongTurnSign(2000) + } + } else { + console.log("\n" + "京东商城-转盘签到失败 " + Details) + merge.JDTurn.fail = 1 + if (data.match(/(机会已用完|次数为0)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 已转过 ⚠️" + } else if (data.match(/(T210|密码)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 无支付密码 ⚠️" + } else { + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: 失败, 原因: 未知 ⚠️${also?` (多次)`:``}` + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-转盘", "JDTurn", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingRongSteel(s, body) { + merge.JRSteel = {}; + return new Promise(resolve => { + if (disable("JRSteel")) return resolve(); + if (!body) { + merge.JRSteel.fail = 1; + merge.JRSteel.notify = "京东金融-钢镚: 失败, 未获取签到Body ⚠️"; + return resolve(); + } + setTimeout(() => { + const JRSUrl = { + url: 'https://ms.jr.jd.com/gw/generic/hy/h5/m/appSign', + headers: { + Cookie: KEY + }, + body: body || '' + }; + $nobyda.post(JRSUrl, function(error, response, data) { + try { + if (error) throw new Error(error) + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0 && cc.resultData && cc.resultData.resBusiCode == 0) { + console.log("\n" + "京东金融-钢镚签到成功 " + Details) + merge.JRSteel.notify = `京东金融-钢镚: 成功, 获得钢镚奖励 💰` + merge.JRSteel.success = 1 + } else { + console.log("\n" + "京东金融-钢镚签到失败 " + Details) + merge.JRSteel.fail = 1 + if (cc.resultCode == 0 && cc.resultData && cc.resultData.resBusiCode == 15) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/未实名/)) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 账号未实名 ⚠️" + } else if (cc.resultCode == 3) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 原因: Cookie失效‼️" + } else { + const ng = (cc.resultData && cc.resultData.resBusiMsg) || cc.resultMsg + merge.JRSteel.notify = `京东金融-钢镚: 失败, ${`原因: ${ng||`未知`}`} ⚠️` + } + } + } catch (eor) { + $nobyda.AnError("京东金融-钢镚", "JRSteel", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongShake(s) { + if (!merge.JDShake) merge.JDShake = {}, merge.JDShake.success = 0, merge.JDShake.bean = 0, merge.JDShake.notify = ''; + return new Promise(resolve => { + if (disable("JDShake")) return resolve() + setTimeout(() => { + const JDSh = { + url: 'https://api.m.jd.com/client.action?appid=vip_h5&functionId=vvipclub_shaking', + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDSh, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + const also = merge.JDShake.notify ? true : false + if (data.match(/prize/)) { + console.log("\n" + "京东商城-摇一摇签到成功 " + Details) + merge.JDShake.success += 1 + if (cc.data.prizeBean) { + merge.JDShake.bean += cc.data.prizeBean.count || 0 + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: ${also?`多次`:`成功`}, 明细: ${merge.JDShake.bean || `无`}京豆 🐶` + } else if (cc.data.prizeCoupon) { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: ${also?`多次, `:``}获得满${cc.data.prizeCoupon.quota}减${cc.data.prizeCoupon.discount}优惠券→ ${cc.data.prizeCoupon.limitStr}` + } else { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 成功, 明细: 未知 ⚠️${also?` (多次)`:``}` + } + if (cc.data.luckyBox.freeTimes != 0) { + await JingDongShake(s) + } + } else { + console.log("\n" + "京东商城-摇一摇签到失败 " + Details) + if (data.match(/true/)) { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 成功, 明细: 无奖励 🐶${also?` (多次)`:``}` + merge.JDShake.success += 1 + if (cc.data.luckyBox.freeTimes != 0) { + await JingDongShake(s) + } + } else { + merge.JDShake.fail = 1 + if (data.match(/(无免费|8000005|9000005)/)) { + merge.JDShake.notify = "京东商城-摇摇: 失败, 原因: 已摇过 ⚠️" + } else if (data.match(/(未登录|101)/)) { + merge.JDShake.notify = "京东商城-摇摇: 失败, 原因: Cookie失效‼️" + } else { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 失败, 原因: 未知 ⚠️${also?` (多次)`:``}` + } + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-摇摇", "JDShake", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDUserSignPre(s, key, title, ac) { + merge[key] = {}; + if ($nobyda.isJSBox) { + return JDUserSignPre2(s, key, title, ac); + } else { + return JDUserSignPre1(s, key, title, ac); + } +} + +function JDUserSignPre1(s, key, title, acData, ask) { + return new Promise((resolve, reject) => { + if (disable(key, title, 1)) return reject() + const JDUrl = { + url: 'https://api.m.jd.com/?client=wh5&functionId=qryH5BabelFloors', + headers: { + Cookie: KEY + }, + opts: { + 'filter': 'try{var od=JSON.parse(body);var params=(od.floatLayerList||[]).filter(o=>o.params&&o.params.match(/enActK/)).map(o=>o.params).pop()||(od.floorList||[]).filter(o=>o.template=="signIn"&&o.signInfos&&o.signInfos.params&&o.signInfos.params.match(/enActK/)).map(o=>o.signInfos&&o.signInfos.params).pop();var tId=(od.floorList||[]).filter(o=>o.boardParams&&o.boardParams.turnTableId).map(o=>o.boardParams.turnTableId).pop();var page=od.paginationFlrs;return JSON.stringify({qxAct:params||null,qxTid:tId||null,qxPage:page||null})}catch(e){return `=> 过滤器发生错误: ${e.message}`}' + }, + body: `body=${encodeURIComponent(`{"activityId":"${acData}"${ask?`,"paginationParam":"2","paginationFlrs":"${ask}"`:``}}`)}` + }; + $nobyda.post(JDUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const od = JSON.parse(data || '{}'); + const turnTableId = od.qxTid || (od.floorList || []).filter(o => o.boardParams && o.boardParams.turnTableId).map(o => o.boardParams.turnTableId).pop(); + const page = od.qxPage || od.paginationFlrs; + if (data.match(/enActK/)) { // 含有签到活动数据 + let params = od.qxAct || (od.floatLayerList || []).filter(o => o.params && o.params.match(/enActK/)).map(o => o.params).pop() + if (!params) { // 第一处找到签到所需数据 + // floatLayerList未找到签到所需数据,从floorList中查找 + let signInfo = (od.floorList || []).filter(o => o.template == 'signIn' && o.signInfos && o.signInfos.params && o.signInfos.params.match(/enActK/)) + .map(o => o.signInfos).pop(); + if (signInfo) { + if (signInfo.signStat == '1') { + console.log(`\n${title}重复签到`) + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + merge[key].fail = 1 + } else { + params = signInfo.params; + } + } else { + merge[key].notify = `${title}: 失败, 活动查找异常 ⚠️` + merge[key].fail = 1 + } + } + if (params) { + return resolve({ + params: params + }); // 执行签到处理 + } + } else if (turnTableId) { // 无签到数据, 但含有关注店铺签到 + const boxds = $nobyda.read("JD_Follow_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}关注店铺`) + return resolve(parseInt(turnTableId)) + } else { + merge[key].notify = `${title}: 失败, 需要关注店铺 ⚠️` + merge[key].fail = 1 + } + } else if (page && !ask) { // 无签到数据, 尝试带参查询 + const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}二次查询`) + return resolve(page) + } else { + merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, ${!data ? `需要手动执行` : `不含活动数据`} ⚠️` + merge[key].fail = 1 + } + } + reject() + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + disable(key, title, 2) + if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(JSON.stringify(data))); + if (typeof(data) == "number") return JDUserSign2(s, key, title, data); + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, acData, data); + }, () => disable(key, title, 2)) +} + +function JDUserSignPre2(s, key, title, acData) { + return new Promise((resolve, reject) => { + if (disable(key, title, 1)) return reject() + const JDUrl = { + url: `https://pro.m.jd.com/mall/active/${acData}/index.html`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const act = data.match(/\"params\":\"\{\\\"enActK.+?\\\"\}\"/) + const turnTable = data.match(/\"turnTableId\":\"(\d+)\"/) + const page = data.match(/\"paginationFlrs\":\"(\[\[.+?\]\])\"/) + if (act) { // 含有签到活动数据 + return resolve(act) + } else if (turnTable) { // 无签到数据, 但含有关注店铺签到 + const boxds = $nobyda.read("JD_Follow_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}关注店铺`) + return resolve(parseInt(turnTable[1])) + } else { + merge[key].notify = `${title}: 失败, 需要关注店铺 ⚠️` + merge[key].fail = 1 + } + } else if (page) { // 无签到数据, 尝试带参查询 + const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}二次查询`) + return resolve(page[1]) + } else { + merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, ${!data ? `需要手动执行` : `不含活动数据`} ⚠️` + merge[key].fail = 1 + } + } + reject() + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + disable(key, title, 2) + if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(`{${data}}`)); + if (typeof(data) == "number") return JDUserSign2(s, key, title, data) + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, acData, data) + }, () => disable(key, title, 2)) +} + +function JDUserSign1(s, key, title, body) { + return new Promise(resolve => { + setTimeout(() => { + const JDUrl = { + url: 'https://api.m.jd.com/client.action?functionId=userSign', + headers: { + Cookie: KEY + }, + body: `body=${body}&client=wh5` + }; + $nobyda.post(JDUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? `response:\n${data}` : ''; + if (data.match(/签到成功/)) { + console.log(`\n${title}签到成功(1)${Details}`) + if (data.match(/\"text\":\"\d+京豆\"/)) { + merge[key].bean = data.match(/\"text\":\"(\d+)京豆\"/)[1] + } + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean || '无'}京豆 🐶` + merge[key].success = 1 + } else { + console.log(`\n${title}签到失败(1)${Details}`) + if (data.match(/(已签到|已领取)/)) { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + } else if (data.match(/(不存在|已结束|未开始)/)) { + merge[key].notify = `${title}: 失败, 原因: 活动已结束 ⚠️` + } else if (data.match(/\"code\":\"?3\"?/)) { + merge[key].notify = `${title}: 失败, 原因: Cookie失效‼️` + } else { + const ng = data.match(/\"(errorMessage|subCodeMsg)\":\"(.+?)\"/) + merge[key].notify = `${title}: 失败, ${ng?ng[2]:`原因: 未知`} ⚠️` + } + merge[key].fail = 1 + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +async function JDUserSign2(s, key, title, tid) { + return console.log(`\n${title} >> 可能需要拼图验证, 跳过签到 ⚠️`); + await new Promise(resolve => { + $nobyda.get({ + url: `https://jdjoy.jd.com/api/turncard/channel/detail?turnTableId=${tid}&invokeKey=ztmFUCxcPMNyUq0P`, + headers: { + Cookie: KEY + } + }, function(error, response, data) { + resolve() + }) + if (out) setTimeout(resolve, out + s) + }); + return new Promise(resolve => { + setTimeout(() => { + const JDUrl = { + url: 'https://jdjoy.jd.com/api/turncard/channel/sign?invokeKey=ztmFUCxcPMNyUq0P', + headers: { + lkt: '1629984131120', + lks: 'd7db92cf40ad5a8d54b9da2b561c5f84', + Cookie: KEY + }, + body: `turnTableId=${tid}` + }; + $nobyda.post(JDUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? `response:\n${data}` : ''; + if (data.match(/\"success\":true/)) { + console.log(`\n${title}签到成功(2)${Details}`) + if (data.match(/\"jdBeanQuantity\":\d+/)) { + merge[key].bean = data.match(/\"jdBeanQuantity\":(\d+)/)[1] + } + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean || '无'}京豆 🐶` + merge[key].success = 1 + } else { + const captcha = /请进行验证/.test(data); + if (data.match(/(已经签到|已经领取)/)) { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + } else if (data.match(/(不存在|已结束|未开始)/)) { + merge[key].notify = `${title}: 失败, 原因: 活动已结束 ⚠️` + } else if (data.match(/(没有登录|B0001)/)) { + merge[key].notify = `${title}: 失败, 原因: Cookie失效‼️` + } else if (!captcha) { + const ng = data.match(/\"(errorMessage|subCodeMsg)\":\"(.+?)\"/) + merge[key].notify = `${title}: 失败, ${ng?ng[2]:`原因: 未知`} ⚠️` + } + if (!captcha) merge[key].fail = 1; + console.log(`\n${title}签到失败(2)${captcha?`\n需要拼图验证, 跳过通知记录 ⚠️`:``}${Details}`) + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, 200 + s) + if (out) setTimeout(resolve, out + s + 200) + }); +} + +function JDFlashSale(s) { + merge.JDFSale = {}; + return new Promise(resolve => { + if (disable("JDFSale")) return resolve() + setTimeout(() => { + const JDPETUrl = { + url: 'https://api.m.jd.com/client.action?functionId=partitionJdSgin', + headers: { + Cookie: KEY + }, + body: "body=%7B%22version%22%3A%22v2%22%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=6768e2cf625427615dd89649dd367d41&st=1597248593305&sv=121" + }; + $nobyda.post(JDPETUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.result && cc.result.code == 0) { + console.log("\n" + "京东商城-闪购签到成功 " + Details) + merge.JDFSale.bean = cc.result.jdBeanNum || 0 + merge.JDFSale.notify = "京东商城-闪购: 成功, 明细: " + (merge.JDFSale.bean || "无") + "京豆 🐶" + merge.JDFSale.success = 1 + } else { + console.log("\n" + "京东商城-闪购签到失败 " + Details) + if (data.match(/(已签到|已领取|\"2005\")/)) { + merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/不存在|已结束|\"2008\"|\"3001\"/)) { + await FlashSaleDivide(s); //瓜分京豆 + return + } else if (data.match(/(\"code\":\"3\"|\"1003\")/)) { + merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.match(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/) + merge.JDFSale.notify = `京东商城-闪购: 失败, ${msg ? msg[1] : `原因: 未知`} ⚠️` + } + merge.JDFSale.fail = 1 + } + } + } catch (eor) { + $nobyda.AnError("京东商城-闪购", "JDFSale", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function FlashSaleDivide(s) { + return new Promise(resolve => { + setTimeout(() => { + const Url = { + url: 'https://api.m.jd.com/client.action?functionId=partitionJdShare', + headers: { + Cookie: KEY + }, + body: "body=%7B%22version%22%3A%22v2%22%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=49baa3b3899b02bbf06cdf41fe191986&st=1597682588351&sv=111" + }; + $nobyda.post(Url, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.result.code == 0) { + merge.JDFSale.success = 1 + merge.JDFSale.bean = cc.result.jdBeanNum || 0 + merge.JDFSale.notify = "京东闪购-瓜分: 成功, 明细: " + (merge.JDFSale.bean || "无") + "京豆 🐶" + console.log("\n" + "京东闪购-瓜分签到成功 " + Details) + } else { + merge.JDFSale.fail = 1 + console.log("\n" + "京东闪购-瓜分签到失败 " + Details) + if (data.match(/已参与|已领取|\"2006\"/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 已瓜分 ⚠️" + } else if (data.match(/不存在|已结束|未开始|\"2008\"|\"2012\"/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/\"code\":\"1003\"|未获取/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.match(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/) + merge.JDFSale.notify = `京东闪购-瓜分: 失败, ${msg ? msg[1] : `原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东闪购-瓜分", "JDFSale", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongCash(s) { + merge.JDCash = {}; + return new Promise(resolve => { + if (disable("JDCash")) return resolve() + setTimeout(() => { + const JDCAUrl = { + url: 'https://api.m.jd.com/client.action?functionId=ccSignInNew', + headers: { + Cookie: KEY + }, + body: "body=%7B%22pageClickKey%22%3A%22CouponCenter%22%2C%22eid%22%3A%22O5X6JYMZTXIEX4VBCBWEM5PTIZV6HXH7M3AI75EABM5GBZYVQKRGQJ5A2PPO5PSELSRMI72SYF4KTCB4NIU6AZQ3O6C3J7ZVEP3RVDFEBKVN2RER2GTQ%22%2C%22shshshfpb%22%3A%22v1%5C%2FzMYRjEWKgYe%2BUiNwEvaVlrHBQGVwqLx4CsS9PH1s0s0Vs9AWk%2B7vr9KSHh3BQd5NTukznDTZnd75xHzonHnw%3D%3D%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22monitorSource%22%3A%22cc_sign_ios_index_config%22%7D&client=apple&clientVersion=8.5.0&d_brand=apple&d_model=iPhone8%2C2&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&scope=11&screen=1242%2A2208&sign=1cce8f76d53fc6093b45a466e93044da&st=1581084035269&sv=102" + }; + $nobyda.post(JDCAUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.busiCode == "0") { + console.log("\n" + "京东现金-红包签到成功 " + Details) + merge.JDCash.success = 1 + merge.JDCash.Cash = cc.result.signResult.signData.amount || 0 + merge.JDCash.notify = `京东现金-红包: 成功, 明细: ${merge.JDCash.Cash || `无`}红包 🧧` + } else { + console.log("\n" + "京东现金-红包签到失败 " + Details) + merge.JDCash.fail = 1 + if (data.match(/(\"busiCode\":\"1002\"|完成签到)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/(不存在|已结束)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/(\"busiCode\":\"3\"|未登录)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.split(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/)[1]; + merge.JDCash.notify = `京东现金-红包: 失败, ${msg||`原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东现金-红包", "JDCash", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDMagicCube(s, sign) { + merge.JDCube = {}; + return new Promise((resolve, reject) => { + if (disable("JDCube")) return reject() + const JDUrl = { + url: `https://api.m.jd.com/client.action?functionId=getNewsInteractionInfo&appid=smfe${sign?`&body=${encodeURIComponent(`{"sign":${sign}}`)}`:``}`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDUrl, async (error, response, data) => { + try { + if (error) throw new Error(error) + const Details = LogDetails ? "response:\n" + data : ''; + console.log(`\n京东魔方-尝试查询活动(${sign}) ${Details}`) + if (data.match(/\"interactionId\":\d+/)) { + resolve({ + id: data.match(/\"interactionId\":(\d+)/)[1], + sign: sign || null + }) + } else if (data.match(/配置异常/) && sign) { + await JDMagicCube(s, sign == 2 ? 1 : null) + reject() + } else { + resolve(null) + } + } catch (eor) { + $nobyda.AnError("京东魔方-查询", "JDCube", eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + return JDMagicCubeSign(s, data) + }, () => {}); +} + +function JDMagicCubeSign(s, id) { + return new Promise(resolve => { + setTimeout(() => { + const JDMCUrl = { + url: `https://api.m.jd.com/client.action?functionId=getNewsInteractionLotteryInfo&appid=smfe${id?`&body=${encodeURIComponent(`{${id.sign?`"sign":${id.sign},`:``}"interactionId":${id.id}}`)}`:``}`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDMCUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (data.match(/(\"name\":)/)) { + console.log("\n" + "京东商城-魔方签到成功 " + Details) + merge.JDCube.success = 1 + if (data.match(/(\"name\":\"京豆\")/)) { + merge.JDCube.bean = cc.result.lotteryInfo.quantity || 0 + merge.JDCube.notify = `京东商城-魔方: 成功, 明细: ${merge.JDCube.bean || `无`}京豆 🐶` + } else { + merge.JDCube.notify = `京东商城-魔方: 成功, 明细: ${cc.result.lotteryInfo.name || `未知`} 🎉` + } + } else { + console.log("\n" + "京东商城-魔方签到失败 " + Details) + merge.JDCube.fail = 1 + if (data.match(/(一闪而过|已签到|已领取)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 无机会 ⚠️" + } else if (data.match(/(不存在|已结束)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/(\"code\":3)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: Cookie失效‼️" + } else { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-魔方", "JDCube", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongSubsidy(s) { + merge.subsidy = {}; + return new Promise(resolve => { + if (disable("subsidy")) return resolve() + setTimeout(() => { + const subsidyUrl = { + url: 'https://ms.jr.jd.com/gw/generic/uc/h5/m/signIn7', + headers: { + Referer: "https://active.jd.com/forever/cashback/index", + Cookie: KEY + } + }; + $nobyda.get(subsidyUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.resultCode == 0 && cc.resultData.data && cc.resultData.data.thisAmount) { + console.log("\n" + "京东商城-金贴签到成功 " + Details) + merge.subsidy.subsidy = cc.resultData.data.thisAmountStr + merge.subsidy.notify = `京东商城-金贴: 成功, 明细: ${merge.subsidy.subsidy||`无`}金贴 💰` + merge.subsidy.success = 1 + } else { + console.log("\n" + "京东商城-金贴签到失败 " + Details) + merge.subsidy.fail = 1 + if (data.match(/已存在|"thisAmount":0/)) { + merge.subsidy.notify = "京东商城-金贴: 失败, 原因: 无金贴 ⚠️" + } else if (data.match(/请先登录/)) { + merge.subsidy.notify = "京东商城-金贴: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.split(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/)[1]; + merge.subsidy.notify = `京东商城-金贴: 失败, ${msg||`原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-金贴", "subsidy", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingRongDoll(s, key, title, code, type, num, award, belong) { + merge[key] = {}; + return new Promise(resolve => { + if (disable(key)) return resolve() + setTimeout(() => { + const DollUrl = { + url: "https://nu.jr.jd.com/gw/generic/jrm/h5/m/process", + headers: { + Cookie: KEY + }, + body: `reqData=${encodeURIComponent(`{"actCode":"${code}","type":${type?type:`3`}${code=='F68B2C3E71'?`,"frontParam":{"belong":"${belong}"}`:code==`1DF13833F7`?`,"frontParam":{"channel":"JR","belong":4}`:``}}`)}` + }; + $nobyda.post(DollUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + var cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0) { + if (cc.resultData.data.businessData != null) { + console.log(`\n${title}查询成功 ${Details}`) + if (cc.resultData.data.businessData.pickStatus == 2) { + if (data.match(/\"rewardPrice\":\"\d.*?\"/)) { + const JRDoll_bean = data.match(/\"rewardPrice\":\"(\d.*?)\"/)[1] + const JRDoll_type = data.match(/\"rewardName\":\"金贴奖励\"/) ? true : false + await JingRongDoll(s, key, title, code, '4', JRDoll_bean, JRDoll_type) + } else { + merge[key].success = 1 + merge[key].notify = `${title}: 成功, 明细: 无奖励 🐶` + } + } else if (code == 'F68B2C3E71' || code == '1DF13833F7') { + if (!data.match(/"businessCode":"30\dss?q"/)) { + merge[key].success = 1 + const ct = data.match(/\"count\":\"?(\d.*?)\"?,/) + if (code == 'F68B2C3E71' && belong == 'xianjin') { + merge[key].Money = ct ? ct[1] > 9 ? `0.${ct[1]}` : `0.0${ct[1]}` : 0 + merge[key].notify = `${title}: 成功, 明细: ${merge[key].Money||`无`}现金 💰` + } else if (code == 'F68B2C3E71' && belong == 'jingdou') { + merge[key].bean = ct ? ct[1] : 0; + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean||`无`}京豆 🐶` + } else if (code == '1DF13833F7') { + merge[key].subsidy = ct ? ct[1] : 0; + merge[key].notify = `${title}: 成功, 明细: ${merge[key].subsidy||`无`}金贴 💰` + } + } else { + const es = cc.resultData.data.businessMsg + const ep = cc.resultData.data.businessData.businessMsg + const tp = data.match(/已领取|300ss?q/) ? `已签过` : `${ep||es||cc.resultMsg||`未知`}` + merge[key].notify = `${title}: 失败, 原因: ${tp} ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️`; + merge[key].fail = 1 + } + } else if (cc.resultData.data.businessCode == 200) { + console.log(`\n${title}签到成功 ${Details}`) + if (!award) { + merge[key].bean = num ? num.match(/\d+/)[0] : 0 + } else { + merge[key].subsidy = num || 0 + } + merge[key].success = 1 + merge[key].notify = `${title}: 成功, 明细: ${(award?num:merge[key].bean)||`无`}${award?`金贴 💰`:`京豆 🐶`}` + } else { + console.log(`\n${title}领取异常 ${Details}`) + if (num) console.log(`\n${title} 请尝试手动领取, 预计可得${num}${award?`金贴`:`京豆`}: \nhttps://uf1.jr.jd.com/up/redEnvelopes/index.html?actCode=${code}\n`); + merge[key].fail = 1; + merge[key].notify = `${title}: 失败, 原因: 领取异常 ⚠️`; + } + } else { + console.log(`\n${title}签到失败 ${Details}`) + const redata = typeof(cc.resultData) == 'string' ? cc.resultData : '' + merge[key].notify = `${title}: 失败, ${cc.resultCode==3?`原因: Cookie失效‼️`:`${redata||'原因: 未知 ⚠️'}`}` + merge[key].fail = 1; + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongGetCash(s) { + merge.JDGetCash = {}; + return new Promise(resolve => { + if (disable("JDGetCash")) return resolve() + setTimeout(() => { + const GetCashUrl = { + url: 'https://api.m.jd.com/client.action?functionId=cash_sign&body=%7B%22remind%22%3A0%2C%22inviteCode%22%3A%22%22%2C%22type%22%3A0%2C%22breakReward%22%3A0%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=7e2f8bcec13978a691567257af4fdce9&st=1596954745073&sv=111', + headers: { + Cookie: KEY, + } + }; + $nobyda.get(GetCashUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data); + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.data.success && cc.data.result) { + console.log("\n" + "京东商城-现金签到成功 " + Details) + merge.JDGetCash.success = 1 + merge.JDGetCash.Money = cc.data.result.signCash || 0 + merge.JDGetCash.notify = `京东商城-现金: 成功, 明细: ${cc.data.result.signCash||`无`}现金 💰` + } else { + console.log("\n" + "京东商城-现金签到失败 " + Details) + merge.JDGetCash.fail = 1 + if (data.match(/\"bizCode\":201|已经签过/)) { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/\"code\":300|退出登录/)) { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: Cookie失效‼️" + } else { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-现金", "JDGetCash", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongStore(s) { + merge.JDGStore = {}; + return new Promise(resolve => { + if (disable("JDGStore")) return resolve() + setTimeout(() => { + $nobyda.get({ + url: 'https://api.m.jd.com/api?appid=jdsupermarket&functionId=smtg_sign&clientVersion=8.0.0&client=m&body=%7B%7D', + headers: { + Cookie: KEY, + Origin: `https://jdsupermarket.jd.com` + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data); + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.data && cc.data.success === true && cc.data.bizCode === 0) { + console.log(`\n京东商城-超市签到成功 ${Details}`) + merge.JDGStore.success = 1 + merge.JDGStore.bean = cc.data.result.jdBeanCount || 0 + merge.JDGStore.notify = `京东商城-超市: 成功, 明细: ${merge.JDGStore.bean||`无`}京豆 🐶` + } else { + if (!cc.data) cc.data = {} + console.log(`\n京东商城-超市签到失败 ${Details}`) + const tp = cc.data.bizCode == 811 ? `已签过` : cc.data.bizCode == 300 ? `Cookie失效` : `${cc.data.bizMsg||`未知`}` + merge.JDGStore.notify = `京东商城-超市: 失败, 原因: ${tp}${cc.data.bizCode==300?`‼️`:` ⚠️`}` + merge.JDGStore.fail = 1 + } + } catch (eor) { + $nobyda.AnError("京东商城-超市", "JDGStore", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDSecKilling(s) { //领券中心 + merge.JDSecKill = {}; + return new Promise((resolve, reject) => { + if (disable("JDSecKill")) return reject(); + setTimeout(() => { + $nobyda.post({ + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY, + Origin: 'https://h5.m.jd.com' + }, + body: 'functionId=homePageV2&appid=SecKill2020' + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data); + if (cc.code == 203 || cc.code == 3 || cc.code == 101) { + merge.JDSecKill.notify = `京东秒杀-红包: 失败, 原因: Cookie失效‼️`; + } else if (cc.result && cc.result.projectId && cc.result.taskId) { + console.log(`\n京东秒杀-红包查询成功 ${Details}`) + return resolve({ + projectId: cc.result.projectId, + taskId: cc.result.taskId + }) + } else { + merge.JDSecKill.notify = `京东秒杀-红包: 失败, 暂无有效活动 ⚠️`; + } + merge.JDSecKill.fail = 1; + console.log(`\n京东秒杀-红包查询失败 ${Details}`) + reject() + } catch (eor) { + $nobyda.AnError("京东秒杀-查询", "JDSecKill", eor, response, data) + reject() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }).then(async (id) => { + await new Promise(resolve => { + $nobyda.post({ + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY, + Origin: 'https://h5.m.jd.com' + }, + body: `functionId=doInteractiveAssignment&body=%7B%22encryptProjectId%22%3A%22${id.projectId}%22%2C%22encryptAssignmentId%22%3A%22${id.taskId}%22%2C%22completionFlag%22%3Atrue%7D&client=wh5&appid=SecKill2020` + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data); + if (cc.code == 0 && cc.subCode == 0) { + console.log(`\n京东秒杀-红包签到成功 ${Details}`); + const qt = data.match(/"discount":(\d.*?),/); + merge.JDSecKill.success = 1; + merge.JDSecKill.Cash = qt ? qt[1] : 0; + merge.JDSecKill.notify = `京东秒杀-红包: 成功, 明细: ${merge.JDSecKill.Cash||`无`}红包 🧧`; + } else { + console.log(`\n京东秒杀-红包签到失败 ${Details}`); + merge.JDSecKill.fail = 1; + merge.JDSecKill.notify = `京东秒杀-红包: 失败, ${cc.subCode==103?`原因: 已领取`:cc.msg?cc.msg:`原因: 未知`} ⚠️`; + } + } catch (eor) { + $nobyda.AnError("京东秒杀-领取", "JDSecKill", eor, response, data); + } finally { + resolve(); + } + }) + }) + }, () => {}); +} + +function TotalSteel() { + merge.TotalSteel = {}; + return new Promise(resolve => { + if (disable("TSteel")) return resolve() + $nobyda.get({ + url: 'https://coin.jd.com/m/gb/getBaseInfo.html', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + if (data.match(/(\"gbBalance\":\d+)/)) { + console.log("\n" + "京东-总钢镚查询成功 " + Details) + const cc = JSON.parse(data) + merge.TotalSteel.TSteel = cc.gbBalance + } else { + console.log("\n" + "京东-总钢镚查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户钢镚-查询", "TotalSteel", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalBean() { + merge.TotalBean = {}; + return new Promise(resolve => { + if (disable("Qbear")) return resolve() + $nobyda.get({ + url: 'https://me-api.jd.com/user_new/info/GetJDUserInfoUnion', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.msg == 'success' && cc.retcode == 0) { + merge.TotalBean.nickname = cc.data.userInfo.baseInfo.nickname || "" + merge.TotalBean.Qbear = cc.data.assetInfo.beanNum || 0 + $nobyda.headUrl = cc.data.userInfo.baseInfo.headImageUrl || "" + console.log(`\n京东-总京豆查询成功 ${Details}`) + } else { + const name = decodeURIComponent(KEY.split(/pt_pin=(.+?);/)[1] || ''); + merge.TotalBean.nickname = cc.retcode == 1001 ? `${name} (CK失效‼️)` : ""; + console.log(`\n京东-总京豆查询失败 ${Details}`) + } + } catch (eor) { + $nobyda.AnError("账户京豆-查询", "TotalBean", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalCash() { + merge.TotalCash = {}; + return new Promise(resolve => { + if (disable("TCash")) return resolve() + $nobyda.post({ + url: 'https://api.m.jd.com/client.action?functionId=myhongbao_balance', + headers: { + Cookie: KEY + }, + body: "body=%7B%22fp%22%3A%22-1%22%2C%22appToken%22%3A%22apphongbao_token%22%2C%22childActivityUrl%22%3A%22-1%22%2C%22country%22%3A%22cn%22%2C%22openId%22%3A%22-1%22%2C%22childActivityId%22%3A%22-1%22%2C%22applicantErp%22%3A%22-1%22%2C%22platformId%22%3A%22appHongBao%22%2C%22isRvc%22%3A%22-1%22%2C%22orgType%22%3A%222%22%2C%22activityType%22%3A%221%22%2C%22shshshfpb%22%3A%22-1%22%2C%22platformToken%22%3A%22apphongbao_token%22%2C%22organization%22%3A%22JD%22%2C%22pageClickKey%22%3A%22-1%22%2C%22platform%22%3A%221%22%2C%22eid%22%3A%22-1%22%2C%22appId%22%3A%22appHongBao%22%2C%22childActiveName%22%3A%22-1%22%2C%22shshshfp%22%3A%22-1%22%2C%22jda%22%3A%22-1%22%2C%22extend%22%3A%22-1%22%2C%22shshshfpa%22%3A%22-1%22%2C%22activityArea%22%3A%22-1%22%2C%22childActivityTime%22%3A%22-1%22%7D&client=apple&clientVersion=8.5.0&d_brand=apple&networklibtype=JDNetworkBaseAF&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=fdc04c3ab0ee9148f947d24fb087b55d&st=1581245397648&sv=120" + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + if (data.match(/(\"totalBalance\":\d+)/)) { + console.log("\n" + "京东-总红包查询成功 " + Details) + const cc = JSON.parse(data) + merge.TotalCash.TCash = cc.totalBalance + } else { + console.log("\n" + "京东-总红包查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户红包-查询", "TotalCash", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalSubsidy() { + merge.TotalSubsidy = {}; + return new Promise(resolve => { + if (disable("TotalSubsidy")) return resolve() + $nobyda.get({ + url: 'https://ms.jr.jd.com/gw/generic/uc/h5/m/mySubsidyBalance', + headers: { + Cookie: KEY, + Referer: 'https://active.jd.com/forever/cashback/index?channellv=wojingqb' + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0 && cc.resultData && cc.resultData.data) { + console.log("\n京东-总金贴查询成功 " + Details) + merge.TotalSubsidy.TSubsidy = cc.resultData.data.balance || 0 + } else { + console.log("\n京东-总金贴查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户金贴-查询", "TotalSubsidy", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalMoney() { + merge.TotalMoney = {}; + return new Promise(resolve => { + if (disable("TotalMoney")) return resolve() + $nobyda.get({ + url: 'https://api.m.jd.com/client.action?functionId=cash_exchangePage&body=%7B%7D&build=167398&client=apple&clientVersion=9.1.9&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=762a8e894dea8cbfd91cce4dd5714bc5&st=1602179446935&sv=102', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.code == 0 && cc.data && cc.data.bizCode == 0 && cc.data.result) { + console.log("\n京东-总现金查询成功 " + Details) + merge.TotalMoney.TMoney = cc.data.result.totalMoney || 0 + } else { + console.log("\n京东-总现金查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户现金-查询", "TotalMoney", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function disable(Val, name, way) { + const read = $nobyda.read("JD_DailyBonusDisables") + const annal = $nobyda.read("JD_Crash_" + Val) + if (annal && way == 1 && boxdis) { + var Crash = $nobyda.write("", "JD_Crash_" + Val) + if (read) { + if (read.indexOf(Val) == -1) { + var Crash = $nobyda.write(`${read},${Val}`, "JD_DailyBonusDisables") + console.log(`\n${name}-触发自动禁用 ‼️`) + merge[Val].notify = `${name}: 崩溃, 触发自动禁用 ‼️` + merge[Val].error = 1 + $nobyda.disable = 1 + } + } else { + var Crash = $nobyda.write(Val, "JD_DailyBonusDisables") + console.log(`\n${name}-触发自动禁用 ‼️`) + merge[Val].notify = `${name}: 崩溃, 触发自动禁用 ‼️` + merge[Val].error = 1 + $nobyda.disable = 1 + } + return true + } else if (way == 1 && boxdis) { + var Crash = $nobyda.write(name, "JD_Crash_" + Val) + } else if (way == 2 && annal) { + var Crash = $nobyda.write("", "JD_Crash_" + Val) + } + if (read && read.indexOf(Val) != -1) { + return true + } else { + return false + } +} + +function Wait(readDelay, ini) { + if (!readDelay || readDelay === '0') return 0 + if (typeof(readDelay) == 'string') { + var readDelay = readDelay.replace(/"|"|'|'/g, ''); //prevent novice + if (readDelay.indexOf('-') == -1) return parseInt(readDelay) || 0; + const raw = readDelay.split("-").map(Number); + const plan = parseInt(Math.random() * (raw[1] - raw[0] + 1) + raw[0], 10); + if (ini) console.log(`\n初始化随机延迟: 最小${raw[0]/1000}秒, 最大${raw[1]/1000}秒`); + // else console.log(`\n预计等待: ${(plan / 1000).toFixed(2)}秒`); + return ini ? readDelay : plan + } else if (typeof(readDelay) == 'number') { + return readDelay > 0 ? readDelay : 0 + } else return 0 +} + +function CookieMove(oldCk1, oldCk2, oldKey1, oldKey2, newKey) { + let update; + const move = (ck, del) => { + console.log(`京东${del}开始迁移!`); + update = CookieUpdate(null, ck).total; + update = $nobyda.write(JSON.stringify(update, null, 2), newKey); + update = $nobyda.write("", del); + } + if (oldCk1) { + const write = move(oldCk1, oldKey1); + } + if (oldCk2) { + const write = move(oldCk2, oldKey2); + } +} + +function checkFormat(value) { //check format and delete duplicates + let n, k, c = {}; + return value.reduce((t, i) => { + k = ((i.cookie || '').match(/(pt_key|pt_pin)=.+?;/g) || []).sort(); + if (k.length == 2) { + if ((n = k[1]) && !c[n]) { + i.userName = i.userName ? i.userName : decodeURIComponent(n.split(/pt_pin=(.+?);/)[1]); + i.cookie = k.join('') + if (i.jrBody && !i.jrBody.includes('reqData=')) { + console.log(`异常钢镚Body已过滤: ${i.jrBody}`) + delete i.jrBody; + } + c[n] = t.push(i); + } + } else { + console.log(`异常京东Cookie已过滤: ${i.cookie}`) + } + return t; + }, []) +} + +function CookieUpdate(oldValue, newValue, path = 'cookie') { + let item, type, name = (oldValue || newValue || '').split(/pt_pin=(.+?);/)[1]; + let total = $nobyda.read('CookiesJD'); + try { + total = checkFormat(JSON.parse(total || '[]')); + } catch (e) { + $nobyda.notify("京东签到", "", "Cookie JSON格式不正确, 即将清空\n可前往日志查看该数据内容!"); + console.log(`京东签到Cookie JSON格式异常: ${e.message||e}\n旧数据内容: ${total}`); + total = []; + } + for (let i = 0; i < total.length; i++) { + if (total[i].cookie && new RegExp(`pt_pin=${name};`).test(total[i].cookie)) { + item = i; + break; + } + } + if (newValue && item !== undefined) { + type = total[item][path] === newValue ? -1 : 2; + total[item][path] = newValue; + item = item + 1; + } else if (newValue && path === 'cookie') { + total.push({ + cookie: newValue + }); + type = 1; + item = total.length; + } + return { + total: checkFormat(total), + type, //-1: same, 1: add, 2:update + item, + name: decodeURIComponent(name) + }; +} + +function GetCookie() { + const req = $request; + if (req.method != 'OPTIONS' && req.headers) { + const CV = (req.headers['Cookie'] || req.headers['cookie'] || ''); + const ckItems = CV.match(/(pt_key|pt_pin)=.+?;/g); + if (/^https:\/\/(me-|)api(\.m|)\.jd\.com\/(client\.|user_new)/.test(req.url)) { + if (ckItems && ckItems.length == 2) { + const value = CookieUpdate(null, ckItems.join('')) + if (value.type !== -1) { + const write = $nobyda.write(JSON.stringify(value.total, null, 2), "CookiesJD") + $nobyda.notify(`用户名: ${value.name}`, ``, `${value.type==2?`更新`:`写入`}京东 [账号${value.item}] Cookie${write?`成功 🎉`:`失败 ‼️`}`) + } else { + console.log(`\n用户名: ${value.name}\n与历史京东 [账号${value.item}] Cookie相同, 跳过写入 ⚠️`) + } + } else { + throw new Error("写入Cookie失败, 关键值缺失\n可能原因: 非网页获取 ‼️"); + } + } else if (/^https:\/\/ms\.jr\.jd\.com\/gw\/generic\/hy\/h5\/m\/appSign\?/.test(req.url) && req.body) { + const value = CookieUpdate(CV, req.body, 'jrBody'); + if (value.type) { + const write = $nobyda.write(JSON.stringify(value.total, null, 2), "CookiesJD") + $nobyda.notify(`用户名: ${value.name}`, ``, `获取京东 [账号${value.item}] 钢镚Body${write?`成功 🎉`:`失败 ‼️`}`) + } else { + throw new Error("写入钢镚Body失败\n未获取该账号Cookie或关键值缺失‼️"); + } + } else if (req.url === 'http://www.apple.com/') { + throw new Error("类型错误, 手动运行请选择上下文环境为Cron ⚠️"); + } + } else if (!req.headers) { + throw new Error("写入Cookie失败, 请检查匹配URL或配置内脚本类型 ⚠️"); + } +} + +// Modified from yichahucha +function nobyda() { + const start = Date.now() + const isRequest = typeof $request != "undefined" + const isSurge = typeof $httpClient != "undefined" + const isQuanX = typeof $task != "undefined" + const isLoon = typeof $loon != "undefined" + const isJSBox = typeof $app != "undefined" && typeof $http != "undefined" + const isNode = typeof require == "function" && !isJSBox; + const NodeSet = 'CookieSet.json' + const node = (() => { + if (isNode) { + const request = require('request'); + const fs = require("fs"); + const path = require("path"); + return ({ + request, + fs, + path + }) + } else { + return (null) + } + })() + const notify = (title, subtitle, message, rawopts) => { + const Opts = (rawopts) => { //Modified from https://github.com/chavyleung/scripts/blob/master/Env.js + if (!rawopts) return rawopts + if (typeof rawopts === 'string') { + if (isLoon) return rawopts + else if (isQuanX) return { + 'open-url': rawopts + } + else if (isSurge) return { + url: rawopts + } + else return undefined + } else if (typeof rawopts === 'object') { + if (isLoon) { + let openUrl = rawopts.openUrl || rawopts.url || rawopts['open-url'] + let mediaUrl = rawopts.mediaUrl || rawopts['media-url'] + return { + openUrl, + mediaUrl + } + } else if (isQuanX) { + let openUrl = rawopts['open-url'] || rawopts.url || rawopts.openUrl + let mediaUrl = rawopts['media-url'] || rawopts.mediaUrl + return { + 'open-url': openUrl, + 'media-url': mediaUrl + } + } else if (isSurge) { + let openUrl = rawopts.url || rawopts.openUrl || rawopts['open-url'] + return { + url: openUrl } } } else { - jrBody = '' - } - await changeFile(content); - await execSign(); - } - } - //await deleteFile(JD_DailyBonusPath);//删除下载的JD_DailyBonus.js文件 - if ($.isNode() && allMessage && process.env.JD_BEAN_SIGN_NOTIFY_SIMPLE === 'true') { - $.msg($.name, '', allMessage); - await notify.sendNotify($.name, allMessage) - } -})() - .catch((e) => $.logErr(e)) - .finally(() => $.done()) -async function execSign() { - console.log(`\n开始执行 ${$.name} 签到,请稍等...\n`); - try { - // if (notify.SCKEY || notify.BARK_PUSH || notify.DD_BOT_TOKEN || (notify.TG_BOT_TOKEN && notify.TG_USER_ID) || notify.IGOT_PUSH_KEY || notify.QQ_SKEY) { - // await exec(`${process.execPath} ${JD_DailyBonusPath} >> ${resultPath}`); - // const notifyContent = await fs.readFileSync(resultPath, "utf8"); - // console.log(`👇👇👇👇👇👇👇👇👇👇👇LOG记录👇👇👇👇👇👇👇👇👇👇👇\n${notifyContent}\n👆👆👆👆👆👆👆👆👆LOG记录👆👆👆👆👆👆👆👆👆👆👆`); - // } else { - // console.log('没有提供通知推送,则打印脚本执行日志') - // await exec(`${process.execPath} ${JD_DailyBonusPath}`, { stdio: "inherit" }); - // } - await exec(`${process.execPath} ${JD_DailyBonusPath} >> ${resultPath}`); - const notifyContent = await fs.readFileSync(resultPath, "utf8"); - console.error(`👇👇👇👇👇👇👇👇👇👇👇签到详情👇👇👇👇👇👇👇👇👇👇👇\n${notifyContent}\n👆👆👆👆👆👆👆👆👆签到详情👆👆👆👆👆👆👆👆👆👆👆`); - // await exec("node JD_DailyBonus.js", { stdio: "inherit" }); - // console.log('执行完毕', new Date(new Date().getTime() + 8 * 3600000).toLocaleDateString()) - //发送通知 - let BarkContent = ''; - if (fs.existsSync(resultPath)) { - const barkContentStart = notifyContent.indexOf('【签到概览】') - const barkContentEnd = notifyContent.length; - if (process.env.JD_BEAN_SIGN_STOP_NOTIFY !== 'true') { - if (process.env.JD_BEAN_SIGN_NOTIFY_SIMPLE === 'true') { - if (barkContentStart > -1 && barkContentEnd > -1) { - BarkContent = notifyContent.substring(barkContentStart, barkContentEnd); - } - BarkContent = BarkContent.split('\n\n')[0]; - } else { - if (barkContentStart > -1 && barkContentEnd > -1) { - BarkContent = notifyContent.substring(barkContentStart, barkContentEnd); - } - } + return undefined } } - //不管哪个时区,这里得到的都是北京时间的时间戳; - const UTC8 = new Date().getTime() + new Date().getTimezoneOffset()*60000 + 28800000; - $.beanSignTime = new Date(UTC8).toLocaleString('zh', {hour12: false}); - //console.log(`脚本执行完毕时间:${$.beanSignTime}`) - if (BarkContent) { - allMessage += `【京东号 ${$.index}】: ${$.nickName || $.UserName}\n【签到时间】: ${$.beanSignTime}\n${BarkContent}${$.index !== cookiesArr.length ? '\n\n' : ''}`; - if (!process.env.JD_BEAN_SIGN_NOTIFY_SIMPLE || (process.env.JD_BEAN_SIGN_NOTIFY_SIMPLE && process.env.JD_BEAN_SIGN_NOTIFY_SIMPLE !== 'true')) { - await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}`, `【签到号 ${$.index}】: ${$.nickName || $.UserName}\n【签到时间】: ${$.beanSignTime}\n${BarkContent}`); - } - } - //运行完成后,删除下载的文件 - await deleteFile(resultPath);//删除result.txt - await deleteFile('./CookieSet.json') - console.log(`\n\n*****************${new Date(new Date().getTime()).toLocaleString('zh', {hour12: false})} 京东账号${$.index} ${$.nickName || $.UserName} ${$.name}完成*******************\n\n`); - } catch (e) { - console.log("京东签到脚本执行异常:" + e); - } -} -async function downFile () { - let url = ''; - await downloadUrl(); - if ($.body) { - url = 'https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js'; - } else { - url = 'https://cdn.jsdelivr.net/gh/NobyDa/Script@master/JD-DailyBonus/JD_DailyBonus.js'; - } - try { - const options = { } - if (process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { - const tunnel = require("tunnel"); - const agent = { - https: tunnel.httpsOverHttp({ - proxy: { - host: process.env.TG_PROXY_HOST, - port: process.env.TG_PROXY_PORT * 1 - } - }) - } - Object.assign(options, { agent }) - } - await download(url, outPutUrl, options); - console.log(`JD_DailyBonus.js文件下载完毕\n\n`); - } catch (e) { - console.log("JD_DailyBonus.js 文件下载异常:" + e); - } -} - -async function changeFile (content) { - console.log(`开始替换变量`) - let newContent = content.replace(/var OtherKey = `.*`/, `var OtherKey = \`[{"cookie":"${cookie}","jrBody":"${jrBody}"}]\``); - newContent = newContent.replace(/const NodeSet = 'CookieSet.json'/, `const NodeSet = '${NodeSet}'`) - if (process.env.JD_BEAN_STOP && process.env.JD_BEAN_STOP !== '0') { - newContent = newContent.replace(/var stop = '0'/, `var stop = '${process.env.JD_BEAN_STOP}'`); - } - const zone = new Date().getTimezoneOffset(); - if (zone === 0) { - //此处针对UTC-0时区用户做的 - newContent = newContent.replace(/tm\s=.*/, `tm = new Date(new Date().toLocaleDateString()).getTime() - 28800000;`); - } - try { - await fs.writeFileSync(JD_DailyBonusPath, newContent, 'utf8'); - console.log('替换变量完毕'); - } catch (e) { - console.log("京东签到写入文件异常:" + e); - } -} -async function deleteFile(path) { - // 查看文件result.txt是否存在,如果存在,先删除 - const fileExists = await fs.existsSync(path); - // console.log('fileExists', fileExists); - if (fileExists) { - const unlinkRes = await fs.unlinkSync(path); - // console.log('unlinkRes', unlinkRes) - } -} -function TotalBean() { - return new Promise(async resolve => { - const options = { - "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") - }, - "timeout": 10000 - } - $.post(options, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (data) { - data = JSON.parse(data); - if (data['retcode'] === 13) { - $.isLogin = false; //cookie过期 - return - } - if (data['retcode'] === 0) { - $.nickName = (data['base'] && data['base'].nickname) || $.UserName; - } else { - $.nickName = $.UserName - } - } else { - console.log(`京东服务器返回空数据`) - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } + console.log(`${title}\n${subtitle}\n${message}`) + notification += message + if (isQuanX) $notify(title, subtitle, message, Opts(rawopts)) + if (isSurge) $notification.post(title, subtitle, message, Opts(rawopts)) + if (isJSBox) $push.schedule({ + title: title, + body: subtitle ? subtitle + "\n" + message : message }) - }) -} -function downloadUrl(url = 'https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js') { - return new Promise(resolve => { - const options = { url, "timeout": 10000 }; - if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { - const tunnel = require("tunnel"); - const agent = { - https: tunnel.httpsOverHttp({ - proxy: { - host: process.env.TG_PROXY_HOST, - port: process.env.TG_PROXY_PORT * 1 - } - }) - } - Object.assign(options, { agent }) - } - $.get(options, async (err, resp, data) => { - try { - if (err) { - // console.log(`${JSON.stringify(err)}`) - console.log(`检测到您当前网络环境不能访问外网,将使用jsdelivr CDN下载JD_DailyBonus.js文件`); - await $.http.get({url: `https://purge.jsdelivr.net/gh/NobyDa/Script@master/JD-DailyBonus/JD_DailyBonus.js`, timeout: 10000}).then((resp) => { - if (resp.statusCode === 200) { - let { body } = resp; - body = JSON.parse(body); - if (body['success']) { - console.log(`JD_DailyBonus.js文件 CDN刷新成功`) - } else { - console.log(`JD_DailyBonus.js文件 CDN刷新失败`) - } - } - }); - } else { - $.body = data; - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -function requireConfig() { - return new Promise(resolve => { - // const file = 'jd_bean_sign.js'; - // fs.access(file, fs.constants.W_OK, (err) => { - // resultPath = err ? '/tmp/result.txt' : resultPath; - // JD_DailyBonusPath = err ? '/tmp/JD_DailyBonus.js' : JD_DailyBonusPath; - // outPutUrl = err ? '/tmp/' : outPutUrl; - // NodeSet = err ? '/tmp/CookieSet.json' : NodeSet; - // resolve() - // }); - //判断是否是云函数环境。原函数跟目录目录没有可写入权限,文件只能放到根目录下虚拟的/temp/文件夹(具有可写入权限) - resultPath = process.env.TENCENTCLOUD_RUNENV === 'SCF' ? '/tmp/result.txt' : resultPath; - JD_DailyBonusPath = process.env.TENCENTCLOUD_RUNENV === 'SCF' ? '/tmp/JD_DailyBonus.js' : JD_DailyBonusPath; - outPutUrl = process.env.TENCENTCLOUD_RUNENV === 'SCF' ? '/tmp/' : outPutUrl; - NodeSet = process.env.TENCENTCLOUD_RUNENV === 'SCF' ? '/tmp/CookieSet.json' : NodeSet; - resolve() - }) -} -function timeFormat(time) { - let date; - if (time) { - date = new Date(time) - } else { - date = new Date(); } - return date.getFullYear() + '-' + ((date.getMonth() + 1) >= 10 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)) + '-' + (date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()); -} -function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} + const write = (value, key) => { + if (isQuanX) return $prefs.setValueForKey(value, key) + if (isSurge) return $persistentStore.write(value, key) + if (isNode) { + try { + if (!node.fs.existsSync(node.path.resolve(__dirname, NodeSet))) + node.fs.writeFileSync(node.path.resolve(__dirname, NodeSet), JSON.stringify({})); + const dataValue = JSON.parse(node.fs.readFileSync(node.path.resolve(__dirname, NodeSet))); + if (value) dataValue[key] = value; + if (!value) delete dataValue[key]; + return node.fs.writeFileSync(node.path.resolve(__dirname, NodeSet), JSON.stringify(dataValue)); + } catch (er) { + return AnError('Node.js持久化写入', null, er); + } + } + if (isJSBox) { + if (!value) return $file.delete(`shared://${key}.txt`); + return $file.write({ + data: $data({ + string: value + }), + path: `shared://${key}.txt` + }) + } + } + const read = (key) => { + if (isQuanX) return $prefs.valueForKey(key) + if (isSurge) return $persistentStore.read(key) + if (isNode) { + try { + if (!node.fs.existsSync(node.path.resolve(__dirname, NodeSet))) return null; + const dataValue = JSON.parse(node.fs.readFileSync(node.path.resolve(__dirname, NodeSet))) + return dataValue[key] + } catch (er) { + return AnError('Node.js持久化读取', null, er) + } + } + if (isJSBox) { + if (!$file.exists(`shared://${key}.txt`)) return null; + return $file.read(`shared://${key}.txt`).string + } + } + const adapterStatus = (response) => { + if (response) { + if (response.status) { + response["statusCode"] = response.status + } else if (response.statusCode) { + response["status"] = response.statusCode + } + } + return response + } + const get = (options, callback) => { + options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' + if (isQuanX) { + if (typeof options == "string") options = { + url: options + } + options["method"] = "GET" + //options["opts"] = { + // "hints": false + //} + $task.fetch(options).then(response => { + callback(null, adapterStatus(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (isSurge) { + options.headers['X-Surge-Skip-Scripting'] = false + $httpClient.get(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isNode) { + node.request(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isJSBox) { + if (typeof options == "string") options = { + url: options + } + options["header"] = options["headers"] + options["handler"] = function(resp) { + let error = resp.error; + if (error) error = JSON.stringify(resp.error) + let body = resp.data; + if (typeof body == "object") body = JSON.stringify(resp.data); + callback(error, adapterStatus(resp.response), body) + }; + $http.get(options); + } + } + const post = (options, callback) => { + options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' + if (options.body) options.headers['Content-Type'] = 'application/x-www-form-urlencoded' + if (isQuanX) { + if (typeof options == "string") options = { + url: options + } + options["method"] = "POST" + //options["opts"] = { + // "hints": false + //} + $task.fetch(options).then(response => { + callback(null, adapterStatus(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (isSurge) { + options.headers['X-Surge-Skip-Scripting'] = false + $httpClient.post(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isNode) { + node.request.post(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isJSBox) { + if (typeof options == "string") options = { + url: options + } + options["header"] = options["headers"] + options["handler"] = function(resp) { + let error = resp.error; + if (error) error = JSON.stringify(resp.error) + let body = resp.data; + if (typeof body == "object") body = JSON.stringify(resp.data) + callback(error, adapterStatus(resp.response), body) + } + $http.post(options); + } + } + const AnError = (name, keyname, er, resp, body) => { + if (typeof(merge) != "undefined" && keyname) { + if (!merge[keyname].notify) { + merge[keyname].notify = `${name}: 异常, 已输出日志 ‼️` + } else { + merge[keyname].notify += `\n${name}: 异常, 已输出日志 ‼️ (2)` + } + merge[keyname].error = 1 + } + return console.log(`\n‼️${name}发生错误\n‼️名称: ${er.name}\n‼️描述: ${er.message}${JSON.stringify(er).match(/\"line\"/)?`\n‼️行列: ${JSON.stringify(er)}`:``}${resp&&resp.status?`\n‼️状态: ${resp.status}`:``}${body?`\n‼️响应: ${resp&&resp.status!=503?body:`Omit.`}`:``}`) + } + const time = () => { + const end = ((Date.now() - start) / 1000).toFixed(2) + return console.log('\n签到用时: ' + end + ' 秒') + } + const done = (value = {}) => { + if (isQuanX) return $done(value) + if (isSurge) isRequest ? $done(value) : $done() + } + return { + AnError, + isRequest, + isJSBox, + isSurge, + isQuanX, + isLoon, + isNode, + notify, + write, + read, + get, + post, + time, + done + } +}; +}).catch(e => { +console.error("ERRROR:",e) +}) diff --git a/jd_fan.js b/jd_fan.js deleted file mode 100644 index c70c96e..0000000 --- a/jd_fan.js +++ /dev/null @@ -1,34 +0,0 @@ -/* - 粉丝互动 - 蚊子腿活动,不定时更新,尽量自己改定时跑,一起冲容易挂掉 - 环境变量:RUHUI,是否自动入会,默认不如会,设置RUHUI=1,则会自动入会 - 环境变量:RUNCK,执行多少CK,默认全执行,设置RUNCK=10,则脚本只会运行前10个CK -* */ -const $ = new Env('粉丝互动'); -const notify = $.isNode() ? require('./sendNotify') : ''; -const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; -const RUHUI = $.isNode() ? (process.env.RUHUI ? process.env.RUHUI : `888`):`888`; -const RUNCK = $.isNode() ? (process.env.RUNCK ? process.env.RUNCK : `9999`):`9999`; -let cookiesArr = [],message = ''; -if ($.isNode()) { - Object.keys(jdCookieNode).forEach((item) => { - cookiesArr.push(jdCookieNode[item]) - }); - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; -} else { - cookiesArr = [ - $.getdata("CookieJD"), - $.getdata("CookieJD2"), - ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); -} -const activityList = [ - {'id':'027ba51d1ee44a3eb9dddfb06ee4f9e6','endTime':1646063999000},//2022-02-01---2022-02-28 - {'id':'dc08625c66a342a7b884b7a0e981edd8','endTime':1646063999000},//2022-02-01---2022-02-28 Origins悦木之源京东自营官方旗舰店 - {'id':'145efa9da8d74d4784f284a10f3f13c2','endTime':1646063999000},//2022-02-01---2022-02-28 戴·可·思(Dexter)母婴京东自营旗舰店 - {'id':'ad006d9123d14e92b40a898c19508bc1','endTime':1645286400000},//2022-02-01---2022-02-20 乐而雅旗舰店 - {'id':'d8594388e5454a568e49592f90c2bf5b','endTime':1646063999000},// -]; -var _0xody='jsjiami.com.v6',_0xody_=['‮_0xody'],_0x33f5=[_0xody,'w5bDp8OCwozDmQ==','KMO/w7TDlMKr','w7LCuVg=','5oqT5aSN6I645b2pGg==','YsOCU8OH','wqsJecO6QsOTw6R6','V+iMjuW/oe+9hQ==','ecKdwpDDrA==','wpfDpXPDvMONH8O6E8OkwrcqJ3lbw5zDlQ==','w4XDncKxMcKPwrXDqzFpwppuw53CjsKnYRo=','w6rCt0zCknHCt8OcwrpjYsOgInXCq3/Cgg==','5oq66KCP6YKK5L2A5Z+0','wqYAEWnCoFk=','EsKVPC/DoA==','w7PDkcOiwoLDv0Z3DF0FIHs5wpXChMOvJSbCvMO9ZcOpYcOBw5nDrsOpwqPDmT4RwqJ+Q8O8w4Etw5sR','w6wfMAU=','GBUA','wpDDkMOtSMOMw4jCscKIwrI=','wpPDhcOtUsOH','wqjDlcKVQU4=','f8OWXcOBwo7DtyA=','5Ya45LyqWQ==','w5/Dt8OXw63DlH4=','w63CvlDCiQvCn8OUwr1yQMOPImTCqmDCgzjDuQ==','I8KKHxLDsDZ8wqXCgMOmQTdSVg==','wpDDrG/Dp8KbMcOrH8Omwo4yP1Na','NkrDjlsJHA==','RzV7wptSb8O4REXCtMKuVcOeNE5Nw68=','wq9VEMK1E8K/','w6ceIBnDg8KUw67CmcO8eMKMHxvCu8O8wqdL','AnUHGE3Cv8KvFFnChQB+NMOIw5zCjMOJ','cBp2wobCusKXwrLDlDVt','QBlowrtZ','wpvCi2M0OA==','wq7DhcO0UMOy','V8KTwpE=','Ymgc','PRAWKuito+azjOWmuui0ju+8kOiuiOais+afsee/v+i1l+mHu+itug==','FV5XVTM=','wrfCssKcwpDDjA==','w4ZcF8KqeA==','dSUMNsOR','wp/CgnEKCcOJw4JNNMKTwozCug==','wrQVIw==','wrAiw6U5wqY=','CMOMFCwNYsK7cMOA','JsKfHR/DoQ==','WTggRMKhDg==','RUQ8Ah0=','cCMICMOy','w7/Dq0LCrHs=','woHCgmMLC8OGw7c=','w4PDmcKxL8OUwow=','CcOcBSoVZA==','PMOkbcOOJsKRw77DhQ==','DHIVCXPCs8KvFA==','XF3DlQ==','5YSw5L+16I+G5b+hwq8=','am4IGRUpwos9dsOTOMOlCMK5','wqXCt8K/wrLDgyTDhsK/Yw==','SMKMwprDpcOf','CcOGY8OIAw==','RzVrwptYRcOt','AMKNXsKRwoHClcKgwpNRw6EeBsObw7/CoQh+woPDuAg4UMOfwqPDnsKqwqfDqg==','wrrCoApswp/CvTPCs1/Dm8KoDcKYcm7ClcKf','RF3DmW7DoQ==','w7TCn8Oo','bcOTTsOOwoLDpzLDiMOTwoDCrBcfayfCqcOywpteOcKYLcK9Dn8yU03CkcOjJsOKOg==','wo3CusKHGMKZ','Ul3DlnI=','fmR8ZxbDvCUENcOUwpbDmg==','wrd1IcKUPQ==','w7DDpi/Cp1ofwqAdDkVfwr8/R0xWwrlTw4t8w4MIw4vDtcK9w7UPwoI4MDVdVjkZworCnUNrXMOew4HDgMO3GnMW','wp7DgcKuwr/Cthx1YBjCtSzDogQ9w7nDgsKmw7DDgER1w4/CqkoaIRXDkcK1NUrCslRzMWLDpkHCsMK8W2PCu0zChMO7PjMgwoBZdy7DmgMWVMKww5fChcKawqnDk8KrS2xbWMKrIcOY','XWEQGCM=','wrAfOG7CqFs=','QhJtwrVo','GsOJBjMQc8KzasOOBMO2RsOgKMKXwqAowpIjK8ORCUfDmnrCosK/w67DlT9rw4DCqA==','w7zDpsOGwrrDlg==','R8KoNcONw6ckTCDCk8KHe13Dm2IkYzDCoMOF','WypXwq4=','wpYoOU/CuQ==','OsKBCxnDog==','OHEDOns=','wrHChlhVJmMUVxEmcMOWATsC','McKmEjnDsg==','w4rDj8KTw4BEwoTDi8OPRsOYwpIRPMOoasO7ZQNqw5Y=','UULDgmfDpkAXw4o+wqvCmVQlw7R1wrozCcKpw61+wp/DqMOtwpHDjsK+woDCvMONDMO1wrs=','C155dSY=','WB87R8Kv','UwVXUynCtcKBwqLDn8KYwrYIw4vCkMOewp0=','wojCr8OUwoXCiA==','CHAnN3c=','CMKNXlbDhQ==','fXcXEw4=','YgFQwqpvQcOOfmnCsMKadcOuPQ==','wo3Ck8K7HcKu','wo7CqHVoB084fzc=','w5/DncKvPw==','P1VFAOiujOaykOWlvui1he+8l+itgOagueadkue/gOi3rOmHiuismw==','b8OHecOgwoc=','wrTDvCzCgMKu','w67DuljCr14=','wr3Cv8K/DMKXYQ==','w6tcIsKsQQ==','w6LDrzvClcKuWsK9wqwmbCNQCxTDnD/CsSbCgcKzEMKvLcOmw4HDrgJvRsKjw6wcwrXCjsOZwqBvw5lGXgfDn2JJwoVgUsKxMsO+wqQ3LkLDo8ORw61HIxDCp8OWIsKjcsOqMnZ0KMKOYMK2AsOBwow5wp3DjjHDvMKsD8KFw4Zbw7VQwpQzwqZuwr0/wrvDuQFXwrk+fgoxw6HCmcKJTsOAw6nDun/DpVDCp1IwwrMPHHfDlsKYwrodBMKCwqrCksKud8O+Z8K3IcKwfQrCrAnDhsOPGy0uAsOpBGzCg8K7woQZwrtcLxjCiXUtw4x1wqJrwokMAcKUw61JwrjCimHDmzPCsyDCvcKLwo9iw7JTQsO4woHDksOPfEHDgcO2wrcRwqPCqSZywqtMw49cHcOOwoZyJsKUBDDCs8Kkw7d9w7vClRnCowt/VMK8w7PCgX9fZSZdZ8KwbMKkw4zDhEjDlhDDrcOoJhLDn0oXw6wLDCJoN8OXUMOTPEcuOsOXwr7DosOxwrPDtiTCmcOow77DhA5SRRVeIRLCqMOldcKdccOxLMOcw6FZPFItwpxIfUR9wq81QnxlXMOeUCFBwpzCs8KEwrRscxDDslfCnsKCCiVpw6NHR8OlFMOOw5rDrVI5wozCmsOswqHDg8K0wqwhPGc5w7LCmcO2wpt+JcONwrVaDRTDnsOnwqrDisOvMCrDqsOXwrcAwrXChjPClcO7wpYt','wrpyBMKUHA==','w4fDusORwqfDiA==','w53ConrCixU=','wqnDt8OAdMOxw6rCisKxworCo0QSwqw=','aMKTXcOcw7ZJcQ3DsMKb','w4zDnsKTw4FLwpTDow==','asKTwofDr8Ov','WsKlbMOqw4h8Vw==','wq7DusOWwrY=','OH5xJQ/Csz8QIMOewqnDlsO1ODTDoEjDk1grw43CvAjDhSJid8KVwqVad8Krw77DpQgqP8OdcsK8SlEKwrHCqT4fwo3Csh92w4vDiTbDgsOgw4fDpmpbN3HDjMOVw4Qiw7jCicKzKMOIwoZ0wp59w5XDmMOWMgLDjcKkwqfCnMKhw5EDB8O7w7PCpMOwU3bCisKawo8gw69fPsKKw7MlwoRQw6ZkMW7Ds2ACw4Ytd8OEwojDlWzDq2oBCiU8TsKew5zDhcOwGjvCpRgHZcKTWQXDjcKCL8OEw69/wr0Twrs7w4pDw73CsA==','GMKWWcKV','wo/Dq2fDksKIIA==','Hj7Dv8OxJQ==','w5nDrcKPw5NO','Fea0r+WKvQA/77+I','NTLDlMOQEQ==','wpzCrG4vBAY7fWATXsO3','w5vDkmvComMUwq4HAgUAwqZiABoIwrVbw5ZJw5MTworDoMOqwrQPwqNHMC5GUg==','woTDicOrcUU=','wqUMw5gxwrY=','wqHCoMKuwrzCiQLDk8K/asKAMsKvUGDCqV3DuMK2woXCvlfCicKHw5xZwr1XEGfCpiDDtgTDrcO2w4/Dn8K2bMOBL8KrVMO/dQnCjMO3N3JGw5TDg3dMOhoxwrnDkMOyw4N+','dgNrwp/DoMOewqLDiBplJlDCphsBSAM=','w7tsMsKRUcKpesKtwrFxdsKBRWzCmQ==','wrUsw6Iu','LE1qcRE=','ScKvc8Orw4c=','wr7DtXPCkMKl','wojCpmM+Ig==','wpzCrhNSw6Y=','b8OwTsOowpE=','w5zCrmjCvh8=','Y2vDvmjDgg==','wqbCl8KXD8KZ','Ex8T','KMKzw6zCpV4=','JcKubnXDnA==','fhVbwptl','w5TDjHjCmkE=','w6FqOMK2Ww==','UyphwoTCjw==','wqzDmRXCu8KB','O8KABg==','wrECUcOedg==','wrEXMGzCqw==','FcOOUsOoNg==','VWNmODQ=','w7knJxPDhA==','PMKcPxnDsSE=','IUHDiw==','VwIZNsOHw4vDmXRdODZaw7o=','SAIDMcOLw4/DjG5SKw==','fsKhc8ONw6s=','wqbCtEU5','NxM0L0Y=','TBdBwptH','w43DjsKJw4ZewonDrcOPecOVw5s9E8O9d8Omdixsw4YjwrgbQ27CuFtMw5B4d8KyZSErf1HDq1XDt8OjwpEOQMOywpVYwozDin4xZMOkUVHDgMKIXWl3wqRcw6jCkzXDvsOrw58fw5UUwrU/w7HDlcOUYsK2L8O0wpDCv8KSwq51w4rCgTFsCDDDhsKww7k=','P31kAMO8w6/DpUV5E1Euwp/ClBTDmz/CqHp+MGDCoQ1Ww4vDlEkCJGrDtELCksOKM8OJwobCn8KiecO9wrTDqsOMMMKSw6h3wqrCiFwvXcOCCMKww6RvaMKNwpnDpTvDmAxTw4ZpCcKDwot/LX3Dhxkmw4/Cs3xWwprChcKmwpxKw47Cr8KmBsOwD8KiWndgDEgEwpc0BH7DuHNtISF8w7IkwoHDrsOZw55/w70Iw4FrXjkkQsOVw6dzwpfDvcOPPgMlZWROwp7CikvClMKIdy8FO2Yawp8ew63ClgjClHI9wrDCjhzCscOIwoHCgj46w7hCPVTCgGFbCcO+w5YhZ0fDrsO1eylmwp7DuMOxUWLDplrCvcKKQcOaPcOcw6HCryTDhcK1wp7CqMKnwq1qJyk9w4FGF2DCuQERwqXDomrClnx5w6kzW8KNfyTDp8O0WBhKCcOEZjfCgsOuw4PDv8O2w7cFw4LDgMKJCMKZMsKZAcKcaMKhwrdPwrfCiRvDtzvDqMOhAsK8w50=','w6FrLA==','w4DDusKFfg==','wqfChMOWwo3CjMO9wr0=','P8OdQsO0BQ==','YgFQwqpvQcOOfmnCsMKadcOuPRo=','wqzDocKYJSE=','wq7Dn8KgKAg=','Hw3Do8KqIsO9Mik7DA==','wpzCiHIyBw==','TjQyTsOXw6HDpEB1Gg==','wpHDlVrDkMK+','w7zDh8OPworDvA==','wrjDmcKuFgDDrg==','wrQtw7U/wrbDtMKA','ICfDtsOJIw==','TVBcGy4=','wqPCm8OowoPCjcO/wqd+OnXDlsO1wrXCqg==','wo3DkcKqe18=','bFhyGTo=','w4LDjMKuM8OM','dnpxLAPCnSk=','w4IqCyjDvsK6w5jCo8OQYcK8Kg==','wqrClVUwEg==','wpIyw5YwwoU=','bGR5IA8=','w7bDuETCmkU8woo9NCErw5A1','wrLDu8KZRmTCr07CqCcjJkHDgT8=','w4nDo8O3w5zDqg==','PsKqYHjDnQ==','w4zDp2rCq2w=','wrITI2zCt1cxwpoTwqU=','w7jDjMKSTko=','wrkFGWjCtw==','w6fDnMOXwpfDvlhbEAYHN04JwojCgMOwJwLCnsOqeMOWZsOTw4/Cl8Oi','w5TDr8OZaVbDljhMwqVbIHMuw4LDmD7Ch8KZDRo1SiPCusOZQznDng==','aGxWJhfCvioDb8OewpbDmcOQYHPCpw/ClBxpw5PDu07CnmlFfMKHwr0=','wr3DhcKxFgrDscO5wrHCsMK3GcKcwpsDw47DrnfCrQ==','FxUKA03Chk7CgsKXwoUnwqfCmSrDgsOlwoTCgcOMw7Avw5A=','wrAfOmjCrlBqwoI5wqLCth7Dk8O4M8Ol','wokCXcOreMObw6Zxw7onbnZ6ZsKQw5ZyDcOAw65sAzdZU3w=','f8OoPiM=','EGNydyU=','Z8KywpHDjsKe','wppHIsKGJg==','e8KUwpPDosKV','wonDmcKFfUfCiG7ChQw2Bn/DsFVvSDvCtMKSEFPCosOeMAg=','XMKjbMOnw59hQjHDt8KrJw==','wrTCpsKiwqHDkAPDk8KrT8OI','w7PCmnbCriE=','YsKPwpjDu8KRaMKE','YcKZwpPDrcK9fsOwZw==','I8KLBB3DjQ==','w5nDvcOPw73Dlg==','KGEJFRcIwpw5QMKaC8OcNg==','OsKOw4rCgHw=','E8OwNC8d','w4XDp2/Ds8Kfbw==','FRkTB1TCgRXCmsKgwp8ywrE=','R8OKbcO0wqg=','K8OkZQ==','ShjDtsOgJMOHLy5v','SMOWacOkwoo=','OyIzAcOAw7fDu04hHgNkwojDmVLDvD/Ctm1zd2fDrVoWwoU=','wo7CvgV0w5I=','wofCv3ha','wr/Ct8K/','aGxWJhbCvyAOUsOZwp/DmMK+ZGLCujjCnhxdwpnDpUTClGtFfMKHwr0=','w7lhNcKGdcK4R8Kgw7o=','wqllOMKWecK8Z8Kwwr5RZsOF','w4XDtGnDucOH','CsOYw7w=','H8KBa8KCwobDhsOgw5J7w6AFAsOAw7TCox1+woDDihIzDsO8wqnClsKmwp7DiA==','wqvDg8KnECzDuMKh','aXF7LR7CoAYE','wrLCllFsPQ==','L2N0','woUOw50SwrrDj8KWw4cMGsKcfCHDpQ==','wojDoWXDp8OXM8OzH8OmwoI=','eG58OVfDsisFfcObwpjDg8O0LyfCrAs=','wovDi8OsVQ==','w7zDj8KpXnbDsBBtwpQ/Ak8=','dsO6QEvDtkHCjMKSAyTDjAsddyPDpFk=','eQcRd8KaLcKjYjbCty1swrVj','UDsyKGvCksKDI3XCgiZXA8K5','RTQg','QiFQwpREesOiXmnCksK0UsOeFg==','wpXCs3R1','wqlYCsKzPsKoXBYzF03DucKrw77DnQ==','AMOZwr/DmMKN','wrPDq8OMdQ==','A1jDvEMy','ewxMwoLCug==','wqHCrcONwqXCrQ==','EwgXLGc=','wrEsw7YfwrzDiQ==','FMO/w53DisKm','w70FNg/DhcKD','a8KTQcOtw4E=','wpfDj8Kid1PCq20=','w5vDtsORw7PDoA==','e8KTwprDjMKqfg==','RDkhMMOE','w5hJwpYTwos=','wo/DmcKoZ2Y=','wofCn8KECsKy','D8OcDitWYMK+f8OOBcKjScObbcKBwqUsw5oxecO2MCzCgjA=','M8O5f8OKHMOFwrfChXU/w5jCj0jDp8KtT8OKF8OdwpE=','w68APVLDnMOfw7fCicKhScKWHg==','wpDCjTE=','wrfDtTHCg8KqS8KswrdtKGYPJxk=','wqLCpMK/wrw=','W8ONbcOMwqo=','PsKyY2HDiHbCt8KwMAPDpyQVXw==','MzZ0Kg/CuzkJb8OOwrDDk8KzOQ==','wpfDgcOswofCthFyJCTCjGPDqnBo','wozDncO3wofCpEgpYjPClX7CvVQiwr/ChsOtw73CgmMKwpfCtx5PYVjDk8O0LFbDtnN8YHfCu2XCjsOjFzTDrz3Dj8K/cSkew4B2SnfDjkwAHMOywpXDhsKLwq7CkcKQUTMXB8OyYcKKOjF0w5zDhS3CtsOGwqDCvgzCpWnDp8Kzw4TDv1UXUcKpTzYjKTjCliQz','wpXDoW7Ds8KfIMOWEg==','w5XDujQUIx0pcgLCn2vDmA==','b8O2LnPDgHvCp8KbPzzDti81XQ/Dogt6w5hfY8KVYMK1woZgE8OBwqDDtsOiTsK/w5nChWoKTGnDu8OiJwddwqM1cMKDC2Qyw6rCqsOFw4fDt0lqW8KMw5rDjcKvw4cW','HBDDkWPDrk0Yw5s7w6bDjU9/wrZnw7J8RcK0w61owp/DusOVw4jCicK0woLDucKISMKuw4fDkiBiw6LCjUJjwq5Aw6NqJzvCq2jCkVTDnsK9wrXDpkRH','wrAtTsOdYw==','wrHDi8OuSsON','wqnCrwpkw4E=','eyEAGcOe','wrXCrhdsw4DCp3jDuUrDn8KmCcKQOyPClcKIFMK4wrY/IsKCbsKDwrPCuMOUw7zCvcOAWjTDkXHDux3Ct23CqmIVfBB4QsKP','TsKKQsKOwoLDpsOrwoE=','LsOJb8OKOA==','w4bDqMKFw5Nf','wpTCoF4tGQ==','TQ5Fwol5','w7nDi8Oew53Dgg==','w4jDisOCw6zDvA==','VmoZADU=','XDIrAMOy','w53Dh28=','w6HDmsKlF8O5','A0fDtGwA','ABLDiMOtJcOiNCwNHcKgTsKFwpo=','Z8Kdwo/DusK9','w5TDrcKyX1Y=','w7PCs0zCiifCncOc','w7bDjMOXwpbDvUE=','wpHDoXPDosKWJg==','wrTCt0JJOw==','YxxxwprCoMKK','wrLCrMKwwrzDqgPDlMKm','DlUeCVs=','w6jDk8OVw5TDlw==','6I+N5Y2nw6LDksKN5aWC6LSabeisqui3s+WOguWOoOiDkOaap+m6o+WNhQ==','wq3CqApmw5bDkzbCu1w=','wrPCpMKgwr7Dvg==','w4LDicKhOcOdwovDvQ==','wrDCr0YDJQ==','w6N6wq8Dwos=','wq/CvxBpw5/DqQ==','w4rDu8OCw6zDtGPDuh0=','5YSN5L+j6I6d5b22w4g=','w4nDu8OXw7vDl3/Dpx3Cl10uwrjDkcKw','HBrDvsO9JMOcPC83','wrzCu8KyB8KWaMKAw7o0wpRjU1QA','wo7DgcOsUsODw4jCvQ==','wq3CqsKXwr/Djw==','5ouR5aS+6Iyg5byQe+erqOaxiQ==','fRZl','5omR5aax6I6n5b+vUA==','wqjojJ7lvLPvv7k=','wqDDgFPDv8K+','wrHDjEPDgMKt','w4fDlMKAw6BYwpI=','HnYbL3M=','wpDDjMO7woPDuAJqLDvCiyzCs3pkwrTCkMKww7vCmTNwwqDCnVoS','w4Fwwq0pwrI=','DcKrARjDsA==','w7bCokvCiTXDgMKWw7BkWsOjM3vCq0TCjzvDpMOVM8OPwrVBwrzDqMKuHUHDnsKtHRUkb2DDtlkSw6koXw/CnEjCu1TDsg==','woHCs3gDLgAQXw==','wqzCscK+A8KRaQ==','G3oBDlo=','wqrCmcKaG8KJ','wqbCsMK1wqvDgxnDlA==','DMOlYMO0KQ==','wopYCMKOOQ==','5Yer5L2qbg==','ZMKUwpLDucKVacOUYcO1O1fCl0XDjmnCkQ3DuA==','eGIVHh8uwqYoV8ODBMOtC8K7','G8KRRcKRwpPDjMO7w5VOw6YcFsOmw74=','GX4ACFPCrg==','eBd2worCvsKbwrXDmQ9bMkjCpntIWQU=','ScKZwoXDucOHZQ==','w7fCuEvCnDTCn8OKwqtkYMO5L3PCgkDCnio=','H8Kmw5LCkVXChA==','wrfDnsK2BxfDucOvwrfDrMKZEsKOwrk=','AcKXXsKEwoDDisO8w4hLw50dA8OKw5bDpQlv','wpbCtWIOPRstQi/DmQ==','AcKsw4Y=','5YmX6Le75ZWQ5ZKm5ba55a++5omJ','cMKfwp3DtsOA','woPCmn8/OQ==','5bSR56+65Yiw','fMK7wrLDvcK0','wqPCpMK6AsKcdsOhw7opwocJX1QVw7RywqI8w73CpSvCucO+KQ==','PcKKHQbDkyVTwqM=','DifDscOqIA==','w7LCs1HCnjLCkg==','wpTDhsOGwqLCsA==','wp7DrMOJwoXCsw==','A8KqQWTDuQ==','VHoQCVbCrMK1FFPCnhEv','Yua3guWKgsK0wqDDo+++lQ==','WjNmwo1hacO/WUDCj8KvQMOuCks=','wr3CqsKlwrw=','wq5kFMKZGA==','w7wGDTTDiA==','wr8fMA==','6I6C5Y6LOkzCvgPCiOWknei1jA==','woDCiHc=','w5LltZPovIHmnI0=','wo/ChmQbAg==','wqHCv8K8DQ==','w5LCgeWnt+i0twrDhOWOlOWYhkJV','IkbDk08JBDY=','H8OWGDo=','w7LDhMKDTWg=','JsKGPSPDsQ==','wp3DjsKpeULCgXjCpwoH','wo3ChGQRHMOIw6ZVD8KW','eMOLV8ORwqrDpyfDlcOMwobCtkEyNDw=','w4LDoMKYTFXDmjI=','w5zDsMKYbU3Dkw==','wpzCv3NoH0ElYAcU','wowPcsOOYMOTw64=','C8OiYcO4PQ==','w73CuVDCki/Cnw==','FxUIBUvCjRLCosKGwpQ=','w49nwroLwqp5','w4TDvMOAw73DgA==','w5bDjXw=','woUuccOIOsOgJMOuw63lvJjlp4njg6jkurzkuILot5PljZE=','RzVrwptY','woYDMnfCj18owoY=','E8O8Mh0N','w4XDt8OIw6jDvmvDpQ4=','JMK8JBDDsA==','wrDCm0JJMw==','Xw92woHCiA==','wo/DqMOkwp7ChQ==','57GG5LuD5LmD5YuAwrFI77+W','wrxTF8KpCcKiXAYMGg==','wovDgsKJeVE=','XWJeBTw=','cTQoBMOgw6Y=','KMK7w5jCh0M=','w6kpPQTDqQ==','w5bDpcKrIsOg','5Li25oqb6KK65Yep5L6x77yd6LaU5YaH','B3N7ajw=','FR3CoMO0BcOWPi42K8KFc8KHw4ERT8OWwoLCh8OQw65kDyY6SMKkBsK+ZVPDkMOow7bDncKzR8KbfMOLw5YQwptk','wpbCpn9JJlwzX0jDnj7Clw==','woXDmcOzwpvCvhFnOTvCinnCvEEhwqLClcK0wrPCi2FXwpnDtgJYY0nCk8O2IEbDung=','wovDsHTDp8KJaMKwWcO5wokwL25bwqfDiCHCrnHCpwgSYlHDnGJ2woo=','wpnDjMKyQsOM','wrfCj1JA','SMKNWsOCw7o=','w7bDnMOKwqHDlA==','wo/Cl2Z2MA==','w5PDkVXCoW4S','ZAhQwqtzT8OZb3fCocKed8Ov','w5TDksK0','RsOwYcO3wrjDgQHDo8O7wqjCh3Yz','w7MfKcKTIMKeezoXIXjDh8K7w4LDpUk=','a8OGSsOGworDsDI=','I0rDiUoEHC4=','w7rCsAdww4fDvCfCpgLDnsKZGMKZZX3DmcOcSMKmw6AgfMOIdMObwrLCsMKPw7jCusOdQXjDh2rDuVvCs1bCoHYYdQ5QCcKHSF7Du8KuwrfCnsOTfcKWQGPCjS5zw79iw4QAwrp3eMOXKGTDsTzDrMKBe8KRQcODbcOXw47Dk1xwZ1vDlsK1PX0Fw5ZbOsKwBVwnYMKEAsKmBsKZUzLCu8Oiw73CqkHCp8Kpw4HDvsK+w5nDiEoWE8OCwpvCq8KbJcKPeifDi8O+PTwTN8OZBMKdw5PCksOjTcKiwrk4woBCw4nCjcORM8Kyw4c=','w47DizIbAsOAw7xCI8Kew4PDs3fCnjLDgcK5w6EgwqBdUsKWwoced2PDu8OhwpICR27Ch8KUST/DgcKVw6TCiMOzLsOow7RtWX/DqsKswo7CocOawocDw5rCi8K0IEw+AMORwq/CksKmPUHCmFB5wovCqEDDhkLDj8OhwqXDosOAwoRawoHClcKNwp3Cg3DDgUnDjSgBwoRISsOyGxsRw53Di8OgPSMcaTNcHMOKV8O/TldWKi5QwqrDssK1OQHDlsK0w4PCjsOBw5zCmWjCkB7Dg8OHUMK/w47Cr8KiwqnDsRDDixTDmzbCgHHCmMODAVLDjSo/SEzDnnLDmsKMw4XCmjXCr8OsGRVnWsOsfQdtwobCp8K8FxVTw7zClsKlw6c9w64za8KcNDlpAsOjC1fDrcKTw6DDhTsXYD/Cl8KrwolbdUFTwotFwo4zwrnDp8KBwpjCmRfDr8Oiw73ClmxdRA3CmsO0LsOrIMKEwrPDkCLDnsOAMsKBw7wHwppbw6hOwoLCvTLCtwwJwoLCjcKYw4TCoXJDwpPCncK5','Ri97wo5TMMKkH1fClsKyF8OWVk1awrVSO3wTwrV0Uw==','wrNfFA==','w7cFYw/DtcK1w77CgcOraMKzJRnDgsKmwpgKw7NPwq7CvcKrejk9w5bDksO3wqEYKBNeVsOBw4nDo8KUMgJ3MsKkwrg=','b3cSVBdywo8tC8OEJcOh','dsKMwo3DpcKxb8OYd8O5JnrDmV3DmU/CkUfCtwJKw5Q6DsKLwoBWGQQ/w7AmNMKd','DMKzw5HCiFDCk2zCtMKte8ObHlPDjcKuw5nCplbDmyPDgMK3wp/DnMOAPsO9EsKrwqInA0k=','woTCk2QIGcKbwr0DJ8KBwpLCoCHDnH3DkMK4w75rwqQbRsOXw4pf','wrDDuXXCqhnCr8OqwppFbcONBFPCgH3Cvg==','DnzDqG8=','ZMOXSsOSwpjCvnzCk8Obwp/CqxYKaDrCusKrw5VXO8OF','w4PDvcOT','WlhYDR0=','wrjCiUNuHQ==','TxJWwoRI','wrvDnsK0','MMOiw43DrsKwNm0ewo7CkjABeQ==','EcOeVMOvPMK6w4rDtVUIw7TDr3E=','wrfChsKXwqfDqQ==','wrFfCcKtGg==','J8KQw7TCpQ==','wqcTw4QVwok=','AMKNXsKRwoHClcKgwpNZw7wbBsOIw7TDoR91woDCtxA4UMOWwqjCncOmw7fDrm7DnVt5WgDDrMO2wrM=','wqnCq8K/C8KMZcKjw70TwpUaYkYQw7VYwqAlw6HCtWDCicO0NmzDisO8w4/Dg8KpNz5UDDVIGMOzwqPDl8K3wp0QJHXCp8Kfw7/Dt8KzwqnCuEVJTSDCjh1LfGTClMOAY8OxOMKMw4TCvsKRw6HCn8KTw6sVw6bDqsOcw4YBworCtSJlwo4jRsK/wqnDlFTCoU7CjGQVwqnDlsONEjjDo23Cq8KqwofCgsKoHsOeZ1BOwoI=','LsO9R8OOFg==','ecKhKcOOFsKPw73CiC5+w4zDnAPCqMK3W8KNEMKPwpHCh8KOwrpFLMOKRMKPwoB4w7fCgRx5w5HDuUvDg14obMOWcg==','QzFYwqjCoA==','wqMfJHE=','wrbCq8OmG8K8SMKvw78+wrNtYEBWwq1dw7s2wrnCuVPCrMOQbyLCkMOTwoXClsKcKDF6SCZFDMOOwpTDp8OowqxnIw==','fCE2D8O9w63Dql91EB07w5bClUHDmCfDrnl/YDfCrloIwoXDl1UOJXrDtEg=','BcK3w5XClErDiiLDr8KtesODWF/ChcO0w5zCtAzDnD7DlsO0w5jDjcKcMcO3EQ==','VDMiwr1uJsOxWBvCrsK6V8OIQ1YDwqsfbQ==','XcObw7bDl8KXEk8xw7TCvCUuScKzQcKcOUnDsV3DvMOcMk1UQCAhw6xHSBjDkMOFVMOCGMKRVcK9w6NOwoTCnzVZQxlpPMKHwoLCo1wnacOoN8O2A0g5wpvClXJQdhXDmGnDmjbDhCPDpsOWYVpPwqEDw7nDucKTYsKnIC1Fwp7CgMOzw4LCicOgZilaw5k4GMKyB2AFBsOCCQ5OKMKFJk5tcsKWAQEXY8KXQ8OsElwxUCbCkDrCrURAw7zCuhLDjcOBLU9MVsKuKCHCvsOafXhGw7lOw4U=','w41FF8KLeQ==','w71lNcKGf8Kn','f8KIwonDucKrNsKWLMOxOX3DmFrChErCm0XDtBlCwoNxVcOG','w4p9wrsDwrd1XDPCmT9Zw7HDvsOPwpDCtFjChRtJZzXDlz1xcMK8wqrDisO5w7PCksOmw7AzGcOFw7tNXilfEcKufsK7PsKpZA==','SMKIwoTDpcOFdg4bIw==','S8Kxw4TCglzCgmjCssO5OcKEF07CicK9wpPCtBLDmQXCi8K4woDCkMKKY8KqTMO6wqswA04ubWdOw4B2C8KJQDfCkW17w7ICbUJ2EsOyE8OgXsKJw4XCrWHCthrCt8Otw6oQwojClXk4SMKRwoJywpHChQIowrLCoi8XLcO5w7zCt8KjIMK1PsOiCMKMw6gQShbCsMKIFcKsw5nCo8KgBcKEw7bDiMOkQMKqw4rDj8KYwpcpw5zDv383UUDDvArCpHDDgALDtMKjUQwqw4LCjcKMwrkDFxUzCcKbw4Brw7gkw51sw6/CgMOmNATCtmMHwq4jwq5kwpRvwrTDsDbDrRZDw7XCjxDChA5LfRHDhVXDojDCvcKMw4gKQDnDq8OTwoPDn1vCn8KUBgHCqwPDpMOsMWnDqsKIcMOqw75Sw4EXDArDvhPDusK6wqLDqUjCpMOQQGXCvRXClETDpicRw4A9UAskw4F1AMKkwodfXcKyw695wpLDiMKbwqQWw5AvB3PClxh6LsOndMK9w7LDvRt1wpXCl8OLRlTDjsOXw5MHcsO0woQFfcOlUcOSw7LCsMOzwpTCoHbDuMKVMwpDL8KFT8KzwoIWw6xpw4nDrz1IKsOpScODDsOjwoXCk0vDilzCpgnDrMOebcO+w7HDrMK0ScOGGS3Ck8Ocw5HDrcOwVgQFw4NOw5vDuR5twr1JJcOSbzrCn8KXaMOSwp1iPmjDs8OaXcO7YWTCn8O8fsKj','wq7DuRbCkMKB','AFvDp3gA','wrvDn8KEJgM=','wo4Jw7Q1wr4=','BMKww6/Ci13ClQ==','acONSA==','w6HDqMK4w7B5wqXDkMO+ccO2wqM6KQ==','wrDCq8Kg','wrfCj1hUOm0DRg83dMOUAA==','wq4YbMOaSQ==','w4rDt8OQw7zDmX7DqA==','wp7CuMKdBcKs','w6hhL8KGccK+bw==','TDcKDsOA','BBzDo8O3MsKocm07B8K5TMKUwpEPccKGwpDDl8Oaw5w8JGksGMKHRMOi','aX0SClZ8woEsQ8OLK8O4A8OyQVnDig==','wpPDi8OsVQ==','XSk6U8KmXMOJAwjCkQUOwo0IL0lhKwLCuyg=','wofCt2QTIhEwSwfDiTTCsz3CmsK/w6ArOMOdw7cm','CmsDEVbCucK9FEPCuBs9KcKpw4LCiMOKwqfCncOXcsO6wrXDmsKpbnjCmmzDvcKIdU8=','w5HDk8OKw6Zkw4zDuMOJHcO5wocaDsKwb8KvI0Qn','woXCjcKEKQ==','EjcqT8KhB8KWXFLCiDxBwoQddgN+Zl3DrTZEwpnCpEstIxLCqsOOZ8O0wrXCscKHMmvDp8OXwo/DuQdZwp86esK1D3lHw6/Dk8KHN1HCriZtR0Agw7HCicO1wpfCqsK8LVsQTFLDgMOCwochMSV5wqPCqcOLwpZeOsKpw77DjMK+wqAVw7DCqcO5wppRUXAUwqXDt8ObCcKjwrrDiWE4woE7GcKpcn92HA7DrAbDtcKPwqDCssKaw63Cl17Cr1fCrmjDpFdmbjPDlMKvwr02ZSd3wobCmgs0wqPCqcKfYcKZwq/DgQ==','w4tywrwQw688VzjCtjcFw4zDtcKVw5nCok8=','w5LDjsOQw5ZuwqTDocONVMOzwqwiGsK+LcOeJg8vw5cQwqA+KSbDokQGw5FZbsK6V34hP0zDiivDlMOxwqk+CQ==','woLDhcOswpjCpQ==','wrnDosKXVGo=','N8OoZcOdG8KX','aHIVGQ41woonbMODd8OYB8KtCnLDlifCtsKHwqfDoQMLw4/Di8O0XEhAwr3DoMOzdg==','fXMJExQ7wowvXA==','wrAqbMOjVA==','w7DCuUg=','w6XDmcOUwo/DuFZfFkAPPBUwwpLCgsOuZ0fCq8OsdMOrJ8OFw4zCoMOkwqLCuHtew7k9','wofCoFAEPw==','wrU3w6Uqwr3CgcOJwroIGMKacDXDv3/Ck3TCpCLCv8OdDMO8w4AT','USg/QsKc','wroDGWrCpVs=','csKSwos=','w6fDgcO7w43Dq0/DmzbChW4Zwp/Dqw==','wpjCsnE=','cCEMGcO+','w6HDscKbO8KnWcKfw5YIwq5mcWItw4pC','OTvDksOVHsOTGgccPQ==','wpkfaMOsbcOGw6g=','wqjCu8KlDMKZeMKt','G8Oyw5fDusKK','w4TDscKNw7xi','wrbDvsOxwprCrQ==','Z8KTwo7DvQ==','wpTDhcKnYlvDn2LCthAaCWjCr0MlDnTDt8OqTgnDuMKIZRLDg8KWbjAIG3RFwq3DtcO3MMKxwpjCq8KOC13CpMKPw5QlZT0AwpLCinVhwpjCs3PCtkDCs8KnIMOsLnPDt0RGbcOWcnN8wr3Cq2TCu8OTdh3Cs8KCw7dMacOawrYvw5QmB2HCjMKSwqkcVCB1w7pCwp90w6XDs8OjJMKkH8KEB8O2QizDvsKya3wRwpjCsMOrDlIaLcONMcKibMO/Tio9wqolw6PCjsK6w7nCssKBwoTCoXdaw7MPGcOadMKew7bDqsOYNcKzKXjCuw==','w7zCuVvCgHvDn8KOwp0yAMK+NmTCogzDn2zCs8OIH8OEw60Xw7rDv8K1AB3CiMO2M0B1SDfCoDBBw6UmWw/CgxfCm0PCuSPCohDDpzI9wrYubETCncOTwqXDti3CssK7Z8KHLMOMEhzCkARvwq8gwqA8QcK/w77Dq8Oaw6Zaw4rDgmhdw7LDlMO1JcKsa0PCnn/DiWRiTiDCtBXCjnJUwp7CgDPCusK3FsKTw4jDnMKYbsO9wonDlxrDqijCgWVtwrkRw5QqwoTCnsKODEwIIybClsKJZMOZGkPDs8Okw5x1wpjDuMKqY3nCr8KpEQfDq305ED/DosKpwqvDuMOBwoNpWcKBFMKqJMK4w7PCkwNBLsO8cFwUEjtLwqNuw6DCvD8jw4nCqcOuw7nDosKewpPDtcOFQh/CpQoYwpA3wqrDlEVnw6/Cv8OCwrTCisOmcntJwoglUjNHwq0Awoc+Jj7DjcKkw4vCosKDTEwi','wp3DlMK1ZkTCiW7ClFcSAnnDhxNmSjbCpsKQHEnCn8OVOBPDsMKN','wp7CqXR1BkU0a2EXVMOuGQdvw7Mlwp8=','UBcNQcK4','chZvwoLCo8KQw6nDjB9qIlfCsHtOTSbDnj3Dv8KCRg==','worCpEZiHUE+dw0fXMO3OxAQw70uwoxfwpbDt8KlwrzCrDfCpQ==','SsK4W8Ohw4RlWSbDt8KhfFzChz4wKkHDrcKIBcOTUcKIRGkoBcOZCw==','EEfDj0sA','wqVENcKwPA==','wrzDkjHCocKj','WUHDvGTDq0Y=','wqrCsMKn','Pj44O3HCrTPCvMK1wqEHwprCvg==','dBd0','wqUnw50Rwpk=','wp7CusKjWXzDqQpiwowxCUIJ','ZWHDt1nDkGIxw7sZwpA=','w4ttwqEEwqJoUg==','XUXDs0bDiA==','PMOof8OeDsKLw7k=','aT4tBsO6','N8OjKQs2W8KXUMO4IMOdMA==','XSNdwrvCg8K1woPDoyNfBmjClnI=','e8KGwqLDo8K8fMOQbcOPPXvCnVLDhA==','DUNz','NcOkaMORAcKew7XDjw==','wqjDlcKsBgDDrsOVwqc=','G8OFw6bDicK3HEoZwqbCtBso','5rem5Ymy5Z2T5Z2c776p','wo7CiHQB','JSnDu8OKNw==','QTIlRsK7','wqnCtcOfwq/Cqw==','byJ/wo94','c3ty','6I6M5YyqwoLDo8OAdAnlpYzotb8=','wpDCvXNiAQ==','wqAAO2zCtQ==','BwoLB1Y=','BsKCSUTDrQ==','E8Ofw7bDnsKbPFk=','w5RswpkrwpQ=','w5LCjGDCrQnCscO8wpFIecOJGg==','Ql0kLjUXwqAHesOxC8OAM8Kb','wpLDjsKh','wq7CsF5XEQ==','w6bDvsKNw4FM','wpLDjMOtwpPCsgBPKQ==','wojChmQZ','w5DDn8K2M8OOwpHDui1JwrNyw5k=','w6tlL8KD','wpzCv3NoH0ElYBoJQcO/','cT4h','GllMaDg=','cFFnHTM=','S8KVwpg=','CAnDo8Om','woTCs3UVLgYJUgg=','czglCMO6w6/Dpk4=','wrkiw6U7','FcOQFTQXccK/ew==','wpPDrW4=','wo7Ds8KyXW4=','w79JwpYwwoI=','B3QU','6I6C5Y6LPkrCu+Wll+i3gwDorozot4fljpvlj4/ogJ3mmInpupTlj5o=','wo/Di8O4','5YaB5L6z6Iy05b2gw60=','w57Di2jCrWUCwqEHOB4cw6BmFA==','w5x6wrwawqZSUjDCtQ==','wpTCjsKYwqzDgQ==','wrY4dMOPSA==','wrw5w5kUwps=','woXDhMOuwqPCpQ==','DMKYXsKA','WcKhbMOv','IsO4ZcO3BsKbw5HDh3Uow5TDtFfCpQ==','FQ4THHbChxTCu8KdwocswrM=','EBsTDw==','wo3Cin0sGA==','w7kIEh3Dn8KCw5TCg8O7T8KLMh3Cg8O8wrtRw5cdwqLCgsKrUmZ8w4rDv8K7wqYmLhF9VsOqwonDtMK4FDQz','woLDp3TDvsKMO8OrD8OUwoYyJw==','LMK5eHjDh3PCrA==','w6XDisOQworDp1xKG20BJls=','w41rwqEPwrFVXTvCvw==','FcOWAQoKdcKEf8OLHsO9','wpvDgMOTasO1','woLDiMOtwoTCmx1wKATChHvDplw=','csKSwpjDu8K/dcOvYsO8PHE=','w5jDj8KVw4xEwofDq8OHSQ==','wpHDuhvCusKJ','w4cYPx3DvA==','wpIVew==','6I6M5Yyq5reN5Yik5L2K5oG+5aWW6LWY','6I2J5Y235re95Yq65L+K5oKL5aS66LeD','wrITI0zCr1gq','w6LDt8KXYEw=','QxtjwoXCuQ==','XMKZwoLDisOefQskP8Onw4s=','wovDicKjdEM=','JhgGBFc=','wozDksKjCBA=','McK+TMK5woE=','dhx2wqLCo8KQwrLDhQ==','w6hhL8KmccK+aw==','HcOUw6bDv8KCB1o=','woLDh8OrSMOUw4bCrMKXwo/ChXU9','VD46asK7AMKJ','w70ENQ7DhcKlw7TCgMOq','w6tLLcKJQw==','aWIPPA8wwokQQMOGOA==','w4hHwqMLwpA=','woPDjMO3wrrCuBxyJQ==','FcOBIBU+','aWIPNxUywpEh','HcKRT8KHwpo=','cMKZwonDjcK5eMOc','YsObaMOowqw=','wprCuXNFCFw0','w7nCs0vCvSfCjsOc','KEDDmg==','GsOaAjYXdsK9','dsKfwonDh8K5YcOc','wrfDtTHCg8KFScK1wrs=','wpblv7HliZbnpKHliIzvva0=','wpnCuWEyOBcPWgrDiDQ=','wofmtoDliY/mlZPpl57vv7o=','wobClsOK','LMK5eHjDn3zCt8KgAgvDpzw=','wqXDvirCusKlTsK3','GER5VB/CjcK3','wrfDk8Ow','GMO6ABkL','w53DmcKsPcOMwpA=','CcKaXsKowpzDicOg','BcKzQnPDoA==','DhzDr8OzLw==','wq1eBMKIGg==','wo7DgMK0YU4=','wpTDnMOwwp8=','w6FlNsKH','w53Dk8Kl','U8KhdcOr','w547TMOB6K+75rOw5aa46LS677616K6/5qOD5p++572E6Len6YWy6K2k','S8KdwoTDv8OO','wojDhsOk','aT4VF8Omw6fDpUw=','w4zDscOQw7fDikPDpw/Cqw==','GMKLQ8KbwpfDoMOhw5lrw7sJG8Oaw6k=','LMK5eH7Dm1zCrcK/KQ==','w4HDjsKrIMOdwqzDuTtOwr5jw4jCmMKx','wpzCv3NuG2E/fyE=','w4rDkHLCtG8jwqcBDg89w71pBwAV','woLDszTCpMKA','UcKSwpfDnsKT','OsOuf8OTGcKWw6zDk1Auw4XDgA==','OsOuf8OzAcKZw7c=','RMOKcMOAwqI=','wpTDiMOxwoTCsg==','w5x9wqYI','wrPCuw55','WTIp','UVHDhkbDqk4Uw5slwpfCgxo7w7Jp','UTw6Qg==','wrFfBA==','5rem5Yur6Z6R6Keb5Yar5L6h5ZOo5ouY6IKU5Y6p5Lun','5Y2F5YSf5LyG','TDMoE8O4','ZS9gwo7CtQ==','w7DDi8O1wqnDlA==','wqDDvCrCkg==','wrnCqsKx','5baZ5YW+5L2p','NMKMBRnDpw1RwqLCnQ==','wpHCs2A=','5Yyl5Yal5rOX5bmu6ZK8','GcOWEiY=','wr/Dk8K2CxPDtcOowrrDlsK0QQ==','TsKMX8KIwpbCkg==','w4rDmMKTw4pYwqnDrMOHXw==','fXtxMA==','Bw4VB0zCjwjChcKN','w5tpwrwU','DsOJMDMYdw==','PMKhw4/ClFU=','HGM1HFHCqcKVDl7CsgdTMsOww5zCkMOTw4vCmMOMacOhw7HDm8KiLXzCl3vDu8KaeV/Co8KBw6sCHWHDjMOa','w7/Du8KT','wpTDrMOPeMOp','woPCv8KUwo7Dtg==','DcOJw5TDmsKNAHYvwrvCsAcOTsO8G8OdZibCohLCpMKedQ0WATYhw7paTjfCjcOTSg==','HMKbw7LCvGo=','IQ4vBnQ=','w4rDmMKTw4xcwonDtsOYdMOQwpIV','biEqCsOg','w5bDkGrCuHw=','w7fDnMOGwpDDpUc=','BMKtw4XCgUHCv2s=','AxQvBGc=','cBp2wobCusKXwrLDlDhoM0U=','asOCUMORwqfDqyXDmcOswo7Crk0C','wrwgw6UzwrjDksKSw6wtCsKdeA==','wqrCsMK0GsKfdcKaw7I2woRC','BsK3Q8KAwqQ=','w7PDnMKuw4xC','wqPCvmQCLg==','Gg0DF2Q=','V8KZwpjDq8OfeQ==','w5jDtMOnw5bDug==','w70aOzPDpw==','w4zDscOQw7HDjmPDvRDCgEgowrA=','LMK5eFLDhnvCpcKwIQ==','HBrDvsO9JMOBPi0gDA==','fndhIA3CuzsZX8OWwo3Dlg==','w792MsKYdQ==','wo7CrgJow4bDrg==','w4d+MsKaXg==','UBh7wrfCiA==','ecOZfcOzwqU=','YMOMWQ==','R+W/muWnh+esvQ==','5q6K5oiG5aax','wq3CscK1EQ==','w5vDgW/Cp3wewrsKIg5T','w4XDsXXDvsKebw==','fndhJgnCmyEGdA==','HcKYwoTDrcOcRR4NP8K7','w4vDi1bCilg=','ZMK3XMOXw6g=','cxZmwpY=','fGIIDxYo','woDClWEOHA==','CHQGE0s=','anUaDTU3','5omy5aaI6I2m5b+/w4Lnqbbms5g=','5omK5aaA6I6h5b+wcQ==','wqHCgMOawow=','LsOKEy03ccK/ew==','wr0ROmA=','w4B6wqQWwrU=','woUJw5I+wp0=','5oiQ5aeE5b6m5bqg','wrHCtQQ=','OcKAFg==','Rik8SsK7AcKPShA=','wrxEF8KyK8KkXScsH1fDpw==','w6DDiMOQwoI=','wqQ2w78XwqfDn8Kvw7gIDMKMTCDDvQ==','wofDi8OxRA==','w5V9w6ITwodYUDHCtBkuw67Dt8KMw4rCjAjCplhYVC3DslUhIsKew6LDnMOvw7DCisOUw7svRcOvw4Z8cHBpIcK1','wpXCqHNxGhJ+Ni8AWMK0OVBVw75lwptlwojCvQ==','CsOQw6DDj8KKEFYxwq7CoRAGQ8O+G8OGbTPCoBXCpg==','bcOTV8KMwobCqjnDmMKUwozCrVU=','GsOJBjMQc8KzasOOBMO2RsOydsKPwrlzwp8xIcObEEXDn2TCr8Kzw67CmnAlworDpg==','wqzDqSrCg8K4EsO3w7F6MmEfCRPDlWfCujvDi8KQTcOjfMKwwpQ=','VUdACA==','wqPCpMKOAsKcfMKlw70FwoVIXUINwqM=','NsOrw43Dr8KsOHoPwpDCnjAWEA==','w5LCjGDCrQnCscO8wpFIZMOND0PCixQ=','wprDh0LDusKj','wp7DqTHChsKc','WMOVc8OWwq4=','wqtzAMKDGA==','LMO1TcObAcKMw5HDhGAqw4PDoEbCvcKuRMKKNcORwojCj8KKwrhUIcOIVMKBwrJ3wr7CrkYww4DDv3bDhhBl','w5LDkF/Cv00=','w4tnK8KHQQ==','aGxTKBXCoQYOb8OSwovDtsOyd27CoRfCvAtkwpXDvk/ChWAjdsKOwoFdZMKywrTDhgA/PQ==','QjJ6wq7CnA==','w4fDrcKwa1fDiBxNwr8RNVc5w6XDmDzCmcK0Cy8/SAPCoMOGAwvDnsK4w4bConRywrLDnMOVwqjCiA==','FcKnw5jCoWE=','dMKsVsONw5o=','wp0ibcOHWg==','w5zDncKXQVg=','w43DhGnCgXw=','wqnCuxB3woHDnyXCuU7DsMKmFsKZLQ==','SDJhwpdTYsOuVHXCicKuV8OP','FRkTB1TCgRXCmsKwwoc2wrU=','CFpRaRvCicKm','w7jDrcKgX10=','wofCt2QULg==','CU7DrFYP','L8OseMORXcK9w6rDhWMIw57DjkHCug==','w4TDjMKOM8OVwpHDug==','fDIyCsOiw6fDv1JYHgd1','w7tlKMKJIsKIfMKrwrBfbcKXdG0=','w4vDu8OKw7HDi2LDrA3Ch0Ypwr/Diw==','w6IfMw==','5b2s5aaj5YON5reI6KaJ5ZeU5ZKc5Lq55Yuz','RULDtGfDrkQ=','wr3Cr30+Lw==','wqrDkcKxCSLDs8OzwqfDk8K5D8Kc','XFfDnGzDu0s=','w7/DssKWEcOw','ZzIMCMO3','wonCvXRqW2ojdjk3XsO1MA0=','wpsIAVDCpQ==','fhdnwqjCo8KRwqLDpBJvKA==','5reL6KWhwp4=','TsKrbcOAw4hlUw==','wpbCtWIOPRstQi/DmWw=','w7vCrxZ1w5fCoA==','NMKMBR/Doy1Lwr3CtsOjezc=','fDIyDMOmw4fDpU1z','wosPdcOs','w6nCksOcwpzCoMOrw7M=','VMKSwpPDi8OEfgM0NMOgw5Y=','PsKxeVjDjQ==','wrAgEnLCiQ==','wrfCqsKywrE=','wokbdcO8','5rSC6KSS5ZWK5ZOQ5LmS5Yq05bSx5a2V5omW','OcKAFjPDpzY=','XMKjbMOnw59hQjHDusKublI=','w7DDiMOXwojConRaBmoBIE4=','UVHDhmLDuUoCw4cTwqXCgxo=','emYIEUkdwoEtZsOGOMO4','wqvDgMKOCwjDtcOo','wrDCvVZ5Aw==','L8OseMORXMK+w7zDjlcuw4PDlQ==','GRjDm8OuLMO7KQ==','wpTDocKPGh0=','wqnCiMOZwoDCmsOnwqt0Jm7DjMOwwqQ=','wo/Dq2c=','5b6O5aa75YCO5Yuc6Lac5Za35ZGc5LiW5Yiu','w5vDgW/Cp3wewrsKLwsaw6g=','w47Dg2jCpTk2wqsXKAscw70=','eMOCTcOJwqzDqzzDmMO2wobCsUw=','wr7CrMOuwrrCsQ==','w6BqPsKlf8KlasKNwql+bQ==','bcOASsOLwp3DrSfDhcO+wo7Ctlk=','CUtua0XCocK2woPDjsKmwoU7','w57DksKnHcOXwpfDqh1zwqxt','W8KpdsOnw5pgUyw=','Nk7Dk0oKBQ==','wrHCvw17w4fDtQ==','annDvmLDgw==','wpgPcsOreMObw6Zxw7AsPk90e8OUw7h5D8O8w6lsIhtFQ3pSHDzDrsOFRcO+Kg==','wqTDg8KIZUY=','wrvDrlrDvMKp','G8KhaMO+w4BsCyXDn8K9cVbDnHQhP3PDpcORIMKDGsKfVHIFVsKZO8K4w40=','E0Vq','SGjDsULDpw==','w7bDhMKDTlY=','wrQww581wqrDng==','XsKSwoA=','wpdjPMKVLMKOeiAEOXzDjsKq','wrheFQ==','w4VXBMK3Q8KPXMKbwoZfR8K2RA==','B8KWw4rCjFs=','L8Oiw5fDqcK8MngEwoHCgQ==','w7nCs0vCnSfCjsOY','wqnDl1XDlg==','Q8KZwqDDisO7','wovDkMOrUcORwpXDt8OBwqrCl3I1wp9mEcKgwokVEMOPwq7CtG0gCjg=','wprCpm5xRQg1fCgcUMOuMVIfw7g5','wo7DjsK1Zg==','5Ym+6Ladw7g=','Y8ONW8OlwoTDqzfDtcOUwonCrQ==','H0V5eQ==','wq7CvcKlAcKOZcK4w6oTwpUa','VD46SsKjD8KSVS3CgBhB','wpbCtWIIOTs3XQk=','D8OEw7vDnw==','w5vCr2x0IExs','cj8jJMO7w6HDr2JyGRw=','w4PDvsKDQ10=','wrLDicKARHM=','w6IXJwjDgQ==','wo3DlcK0e0XCg2LCgAE=','5YmD6Lap5ZWG5ZGW5bSI5a+e5oqP','wrzCuRd1w4XDtCPCr33DlsK9GA==','woXDrW7DvsKJOsO6EsOTwogzKG4=','ZAlOwobCocKXwrI=','NcOHw5PDiMKy','wqHCpMKlwqPCkC3DgsKmRcODJsKvT2I=','wpHDmcOPwp7Cuhty','wpvCuXE=','5b6t5aWZ5YO+6aCe5Y2u5LyS5oGp5YmR','wqhAJcKsHsKs','wpDDiMOwwpzClB1zPT3Ci17DvV9jwpnCi8Kww6o=','w6jDjMOKwoTDpV0=','wr3ChMORwq7Cpw==','wqEVMULCjw==','QjRo','5oqG5aaq6I2B5bybwpHnqavmsbM=','aTA1CMOXw6HDvltzETp6w4jDl3rDhiPCtw==','eMKSwpjDisK3ecOJbMO+AHrCkFg=','w5zDi3XCp3kfwqoX','w5PDk8KmIw==','XcOMAzYdLQ==','wrxTF8KvDcKCRhkq','w6vCo1bCnQ==','XMOSw73DjsKTHFEIwqvDqA==','wovDh8OmwrTCuAd2IjzCrHnDtVY=','wp3DjsKzYkTCikLCiB4a','wo/DsXjDhsKb','wrEfM3w=','UcKvfw==','wp/Ck2IRBMOGw7tKPw==','w7hlMsKW','wp/Cs2N4','OsOuf8OTGcKWw6zDk10r','KsOWS8OLwo/CuQ==','wrITI2zCt1cxwpoewqDCpww=','MVrDlEo=','PAIxO0Y=','wq7CgsODwoDCn8OmwrppIWDDjcO/','wpfDpXPDvMOLAcO2EcO+','worClVQQLA==','K8KoSHnDrw==','e8KTwpo=','6Ky657+H5raf5YmL5o2B6Yan5beM5a+u5oi5','5oqL6KKr5q+f5pad56yU5YqR','w5zDusKR','e8OCV8OW','wqPCscK2','5baJ56+H5YmG','AAfDsA==','QjRowrtSeA==','HElpaQDCicKmwp7DicKmwoMu','w47Dg2jCpT4kwqcSGQ8=','KcOJw73DmcKz','QsOScMOIwqQ=','dsKfwonDoMKuZcONesOUKGDClw==','wqcRJG7DtW0twoIowqQ=','w57Di8Krw4xHwonDtg==','w4hywpgXwpA=','wrHDvsOCwqDCvA==','GsOrMAgy','ME7DjkVROyd3RXo=','w7sAGBXDnMKYw6k=','wrxTF8KpCcKiXAYBH03DoQ==','CUtua0LCs8K6wobDv8Ki','G0NzaQXCiMK3woPDjsKowoIhw7o=','wpbDtEbDu8KbNQ==','woXCmMOcwrDCjQ==','5q6b5Yqk5Lqw','DgfDs8O+','wqjDsjk=','6aKo5Y6N5LyX5oCe5YiY5be45ayH5oig','w6LDgMOIwpfDtEc=','wqbCj8OTwozCkcOAwqg=','wpLDm8KZeE/ClGLCiCcBCGbDsRQ=','GlYqLmc=','w5nDu8KSb0HDtDM=','IsOOHwk7','Yn0kEB4swownesOTJcOnA8Kw','G8KJRsKIwoY=','YRkrUMKX','w4PDpcKaY00=','w4TDvMOAw73DgEXDrw==','PMKXVULDsQ==','w7fCuFvCnD7CtcOf','wrzCkcObwoDCnQ==','wpDDtGzDvsKO','w6zCs0/ClSfCmcOc','w6ltN8KWdcK4','wrfDnsKmBx3Dk8O6','OCA4Om3CoyTCrcKrwrADwpjCvyM=','EsOXEjoBX8K0','XENkDzg=','w57DosOIw7HDjA==','ZMKMwpHDoMKs','w4NeBMK2X8KBS8KKwphOQ8K0RVs=','wq9VE8KsHsKoTQ==','w6fDocK4w7FlwqvDh8Ovb8Onwqc4KMOOIw==','wqlREMKrSsKZTRIsEF0=','w4XDncKxMcKNwqrDqzl0wqRm','wpHCv3gOOBo8XyXDkiTClCc=','woPCt2UMfiA8Vg/DkzU=','wrrCkcO7woDChMOmwro=','w4zDkcOywrbDtQ==','AiA1DHI=','w7LDs8O2woHDgQ==','w6NrPA==','5oup6KC86K+q57yS5raK5YmZ5o2N6YW/','wpHDmcOFwpvCthU=','wrxaDsK3CQ==','worDnGfDnsKi','KMO5ecOTAcKYw7HDjG0=','F8OWERoLYg==','wpA3w6crwqQ=','KHhJjsZjekhiamPiJ.cBromtx.ZvI6Q=='];if(function(_0x43f3a3,_0xab312e,_0xf6b9ed){function _0x2038e6(_0x4007cc,_0x2e546b,_0x4a171e,_0x57d451,_0x271311,_0x248e8a){_0x2e546b=_0x2e546b>>0x8,_0x271311='po';var _0x210c74='shift',_0x416300='push',_0x248e8a='‮';if(_0x2e546b<_0x4007cc){while(--_0x4007cc){_0x57d451=_0x43f3a3[_0x210c74]();if(_0x2e546b===_0x4007cc&&_0x248e8a==='‮'&&_0x248e8a['length']===0x1){_0x2e546b=_0x57d451,_0x4a171e=_0x43f3a3[_0x271311+'p']();}else if(_0x2e546b&&_0x4a171e['replace'](/[KHhJZekhPJBrtxZIQ=]/g,'')===_0x2e546b){_0x43f3a3[_0x416300](_0x57d451);}}_0x43f3a3[_0x416300](_0x43f3a3[_0x210c74]());}return 0xcef42;};return _0x2038e6(++_0xab312e,_0xf6b9ed)>>_0xab312e^_0xf6b9ed;}(_0x33f5,0x16a,0x16a00),_0x33f5){_0xody_=_0x33f5['length']^0x16a;};function _0x3102(_0x1e60d4,_0x12c6dd){_0x1e60d4=~~'0x'['concat'](_0x1e60d4['slice'](0x1));var _0x38a049=_0x33f5[_0x1e60d4];if(_0x3102['WLdifC']===undefined){(function(){var _0x3c7230=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x12094e='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x3c7230['atob']||(_0x3c7230['atob']=function(_0x5d686a){var _0x3578b3=String(_0x5d686a)['replace'](/=+$/,'');for(var _0x1ca5be=0x0,_0x2e3ad7,_0x11fb5e,_0x4298ed=0x0,_0x169b84='';_0x11fb5e=_0x3578b3['charAt'](_0x4298ed++);~_0x11fb5e&&(_0x2e3ad7=_0x1ca5be%0x4?_0x2e3ad7*0x40+_0x11fb5e:_0x11fb5e,_0x1ca5be++%0x4)?_0x169b84+=String['fromCharCode'](0xff&_0x2e3ad7>>(-0x2*_0x1ca5be&0x6)):0x0){_0x11fb5e=_0x12094e['indexOf'](_0x11fb5e);}return _0x169b84;});}());function _0x2b3568(_0x4063b7,_0x12c6dd){var _0x3993c5=[],_0x3f1be2=0x0,_0x3320ea,_0x4aa7ef='',_0x2984f7='';_0x4063b7=atob(_0x4063b7);for(var _0x651ae2=0x0,_0x39df27=_0x4063b7['length'];_0x651ae2<_0x39df27;_0x651ae2++){_0x2984f7+='%'+('00'+_0x4063b7['charCodeAt'](_0x651ae2)['toString'](0x10))['slice'](-0x2);}_0x4063b7=decodeURIComponent(_0x2984f7);for(var _0x4f8af6=0x0;_0x4f8af6<0x100;_0x4f8af6++){_0x3993c5[_0x4f8af6]=_0x4f8af6;}for(_0x4f8af6=0x0;_0x4f8af6<0x100;_0x4f8af6++){_0x3f1be2=(_0x3f1be2+_0x3993c5[_0x4f8af6]+_0x12c6dd['charCodeAt'](_0x4f8af6%_0x12c6dd['length']))%0x100;_0x3320ea=_0x3993c5[_0x4f8af6];_0x3993c5[_0x4f8af6]=_0x3993c5[_0x3f1be2];_0x3993c5[_0x3f1be2]=_0x3320ea;}_0x4f8af6=0x0;_0x3f1be2=0x0;for(var _0x3d33e9=0x0;_0x3d33e9<_0x4063b7['length'];_0x3d33e9++){_0x4f8af6=(_0x4f8af6+0x1)%0x100;_0x3f1be2=(_0x3f1be2+_0x3993c5[_0x4f8af6])%0x100;_0x3320ea=_0x3993c5[_0x4f8af6];_0x3993c5[_0x4f8af6]=_0x3993c5[_0x3f1be2];_0x3993c5[_0x3f1be2]=_0x3320ea;_0x4aa7ef+=String['fromCharCode'](_0x4063b7['charCodeAt'](_0x3d33e9)^_0x3993c5[(_0x3993c5[_0x4f8af6]+_0x3993c5[_0x3f1be2])%0x100]);}return _0x4aa7ef;}_0x3102['GlUaOA']=_0x2b3568;_0x3102['awxvoC']={};_0x3102['WLdifC']=!![];}var _0x3a911c=_0x3102['awxvoC'][_0x1e60d4];if(_0x3a911c===undefined){if(_0x3102['SKrjvx']===undefined){_0x3102['SKrjvx']=!![];}_0x38a049=_0x3102['GlUaOA'](_0x38a049,_0x12c6dd);_0x3102['awxvoC'][_0x1e60d4]=_0x38a049;}else{_0x38a049=_0x3a911c;}return _0x38a049;};!(async()=>{var _0x1ad085={'bOfma':function(_0x3d2812,_0x17aa46){return _0x3d2812<_0x17aa46;},'poEUg':function(_0x48d885,_0x348dc1){return _0x48d885<_0x348dc1;},'zEJrd':function(_0x2a4416,_0x4c088d){return _0x2a4416===_0x4c088d;},'NpMuP':'ZKemw','sTwYg':_0x3102('‫0','J%J3'),'rvYHy':function(_0x1f2d6f,_0x24629a){return _0x1f2d6f(_0x24629a);}};$[_0x3102('‫1','1M$7')]=!![];for(let _0x1b1fe7=0x0;_0x1ad085[_0x3102('‮2','2K5g')](_0x1b1fe7,activityList[_0x3102('‫3','0cn&')]);_0x1b1fe7++){let _0x54de23=activityList[_0x1b1fe7]['id'];let _0x10a356=Date['now']();if(_0x1ad085[_0x3102('‮4','n(3f')](_0x10a356,activityList[_0x1b1fe7]['endTime'])){if(_0x1ad085[_0x3102('‫5','n(3f')](_0x1ad085[_0x3102('‮6','sNao')],_0x1ad085['NpMuP'])){let _0x18a406='https://lzkjdz-isv.isvjcloud.com/wxFansInterActionActivity/activity/'+_0x54de23+_0x3102('‮7','c[zw')+_0x54de23;console['log'](_0x3102('‫8','d3gl')+_0x18a406);$[_0x3102('‮9','o@0y')]=_0x18a406;$[_0x3102('‫a','Gi4A')]=_0x1ad085[_0x3102('‫b','COiT')];await _0x1ad085[_0x3102('‫c','OGYu')](main,$);}else{console[_0x3102('‮d','Li(D')](_0x3102('‮e','qBje'));return;}}else{console[_0x3102('‫f','*m2]')]('\x0a活动ID:'+_0x54de23+_0x3102('‫10','EtQ#'));}}})()[_0x3102('‫11','*m2]')](_0x3c170e=>{$['log']('','❌\x20'+$[_0x3102('‮12','J%J3')]+_0x3102('‫13','EtQ#')+_0x3c170e+'!','');})[_0x3102('‮14','$u&N')](()=>{$[_0x3102('‫15','sdz^')]();});async function main(_0x1d7401){var _0x8a845c={'kAgiR':function(_0x5f4286){return _0x5f4286();},'ideIB':function(_0x290286,_0x1a4654){return _0x290286<_0x1a4654;},'PojBR':function(_0x1f7af8,_0x1714f4){return _0x1f7af8(_0x1714f4);},'hEDBt':function(_0x368928,_0xbf8b06){return _0x368928(_0xbf8b06);},'qSUfe':function(_0x460664,_0x245163){return _0x460664===_0x245163;},'MGEHZ':_0x3102('‫16','Xxxm'),'NvtnD':_0x3102('‫17','1M$7')};_0x1d7401[_0x3102('‫18','EtQ#')]=cookiesArr;message='';_0x1d7401[_0x3102('‮19','*m2]')]=getUrlData(_0x1d7401[_0x3102('‮1a','7epy')],'activityId');_0x1d7401[_0x3102('‮1b','Xxxm')]=!![];for(let _0x2e5f43=0x0;_0x8a845c['ideIB'](_0x2e5f43,_0x1d7401['cookiesArr'][_0x3102('‮1c','Xxxm')])&&_0x1d7401[_0x3102('‮1d','Hlgj')]&&_0x1d7401[_0x3102('‮1e','k6UV')]&&_0x2e5f43<_0x8a845c[_0x3102('‫1f','Zt7Z')](Number,RUNCK);_0x2e5f43++){_0x1d7401[_0x3102('‫20','0cn&')]=_0x1d7401[_0x3102('‫21','OpYx')][_0x2e5f43];_0x1d7401['UserName']=decodeURIComponent(_0x1d7401['cookie']['match'](/pt_pin=(.+?);/)&&_0x1d7401[_0x3102('‮22','bgvS')]['match'](/pt_pin=(.+?);/)[0x1]);_0x1d7401[_0x3102('‮23','sg)U')]=_0x2e5f43+0x1;console[_0x3102('‮24','tBOS')](_0x3102('‫25','J5AU')+_0x1d7401[_0x3102('‫26','o@0y')]+'】'+_0x1d7401[_0x3102('‮27','Li(D')]+'********\x0a');try{await _0x8a845c[_0x3102('‫28','sdz^')](runMain,_0x1d7401);}catch(_0x1999e4){}if(_0x1d7401[_0x3102('‮29','sg)U')]){if(_0x8a845c[_0x3102('‫2a','1M$7')](_0x8a845c[_0x3102('‮2b','Hlgj')],_0x8a845c[_0x3102('‮2c','FuOh')])){_0x8a845c[_0x3102('‮2d','n(3f')](resolve);}else{doInfo();}}await _0x1d7401['wait'](0xbb8);}if(message){await notify['sendNotify'](_0x3102('‫2e','J%J3')+_0x1d7401[_0x3102('‮2f','COiT')],message);}}async function doInfo(){var _0x30b658={'BvKLG':function(_0x5ba9f3,_0x381603){return _0x5ba9f3<_0x381603;},'Exycz':function(_0x2bfba0,_0xd2621c){return _0x2bfba0!==_0xd2621c;},'gYixX':_0x3102('‫30','EtQ#'),'zYfjJ':function(_0x1e7211,_0x4da378){return _0x1e7211(_0x4da378);}};$['helpFalg']=![];for(let _0x464257=0x0;_0x30b658[_0x3102('‫31','#9UC')](_0x464257,cookiesArr[_0x3102('‮32','4IbD')]);_0x464257++){if(_0x30b658[_0x3102('‫33','qhO@')](_0x30b658[_0x3102('‮34','OGYu')],_0x30b658[_0x3102('‮35','vitW')])){console['log'](_0x3102('‮36','z@TG'));return;}else{await _0x30b658[_0x3102('‫37','p(IT')](invite3,cookiesArr[_0x464257]);await invite4(cookiesArr[_0x464257]);await invite(cookiesArr[_0x464257]);await invite2(cookiesArr[_0x464257]);}}}async function invite(_0x1b2f5c){var _0x372031={'GHiiE':_0x3102('‮38','2K5g'),'uMBLS':_0x3102('‮39','3(Uq'),'runBE':_0x3102('‫3a','n(3f'),'KmMXr':_0x3102('‫3b','4q7e'),'rKawY':_0x3102('‮3c','oulr'),'yxeqs':function(_0x25374e,_0x30cb96){return _0x25374e(_0x30cb96);},'KycWr':_0x3102('‫3d','Hlgj'),'GyyRA':'https://invite-reward.jd.com/'};let _0x35f92b=Date['now']();let _0x5d3254=_0x372031['GHiiE'];var _0x557a40={'Host':_0x372031[_0x3102('‫3e','TUqD')],'accept':'application/json,\x20text/plain,\x20*/*','content-type':_0x372031[_0x3102('‮3f','oJKr')],'origin':_0x372031['KmMXr'],'accept-language':_0x372031[_0x3102('‮40','Hlgj')],'user-agent':$[_0x3102('‮41','tBOS')]()?process['env'][_0x3102('‫42','o@0y')]?process[_0x3102('‮43','vitW')][_0x3102('‮44','7epy')]:_0x372031['yxeqs'](require,_0x3102('‮45','COiT'))['USER_AGENT']:$[_0x3102('‫46','7epy')](_0x372031['KycWr'])?$[_0x3102('‫47','$u&N')](_0x372031['KycWr']):_0x3102('‫48','dt#Z'),'referer':_0x372031['GyyRA'],'Cookie':_0x1b2f5c};var _0x14067c='functionId=InviteFriendApiService&body={\x22method\x22:\x22attendInviteActivity\x22,\x22data\x22:{\x22inviterPin\x22:\x22'+encodeURIComponent(_0x5d3254)+_0x3102('‮49','*m2]')+_0x35f92b;var _0x104579={'url':_0x3102('‫4a','o@0y')+Date[_0x3102('‮4b','COiT')](),'headers':_0x557a40,'body':_0x14067c};$['post'](_0x104579,(_0x1a637b,_0xf628ab,_0x19a480)=>{});}async function invite2(_0x3b6a2f){var _0x218499={'AqqDH':_0x3102('‫4c','OGYu'),'ELMDf':_0x3102('‮4d','(uuA'),'eunIn':_0x3102('‮4e','hMf@'),'EUDot':_0x3102('‫4f','qhO@'),'nqfja':_0x3102('‫50','*m2]'),'aIYzh':'zh-cn','upLty':function(_0x5d9e0c,_0x2a4925){return _0x5d9e0c(_0x2a4925);},'bCAoO':_0x3102('‫51','0cn&'),'lojme':_0x3102('‫52','$u&N'),'zPUOG':'\x27jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0\x20(iPad;\x20CPU\x20OS\x2014_4\x20like\x20Mac\x20OS\x20X)\x20AppleWebKit/605.1.15\x20(KHTML,\x20like\x20Gecko)\x20Mobile/15E148;supportJDSHWK/1','RHZGl':_0x3102('‫53','7epy')};let _0x1349d2=Date[_0x3102('‫54','sg)U')]();let _0x515d00=_0x218499['AqqDH'];let _0x5152b8={'Host':_0x218499[_0x3102('‫55','#9UC')],'accept':_0x218499['eunIn'],'content-type':_0x218499[_0x3102('‫56','Hlgj')],'origin':_0x218499['nqfja'],'accept-language':_0x218499[_0x3102('‮57','o@0y')],'user-agent':$['isNode']()?process[_0x3102('‫58','bZAg')][_0x3102('‫59','AqFu')]?process['env'][_0x3102('‫5a','Zt7Z')]:_0x218499['upLty'](require,_0x218499[_0x3102('‮5b','Gi4A')])['USER_AGENT']:$['getdata'](_0x218499[_0x3102('‫5c','COiT')])?$['getdata'](_0x3102('‮5d','qhO@')):_0x218499[_0x3102('‮5e','[TKT')],'referer':_0x3102('‫5f','d3gl')+encodeURIComponent(_0x515d00),'Cookie':_0x3b6a2f};let _0x2d8d7d=_0x3102('‮60','J%J3')+_0x218499[_0x3102('‫61','Zt7Z')](encodeURIComponent,_0x515d00)+_0x3102('‫62','Zt7Z')+_0x1349d2;var _0x26f692={'url':_0x218499[_0x3102('‮63','FuOh')],'headers':_0x5152b8,'body':_0x2d8d7d};$[_0x3102('‮64','Li(D')](_0x26f692,(_0x1ebd0d,_0x302ed2,_0x14d196)=>{});}function invite3(_0x262d3e){var _0x50b4ba={'BALii':_0x3102('‫65','J%J3'),'vWIwL':'attendInviteActivity','jdHcJ':'api.m.jd.com','DtZVe':_0x3102('‮66','4IbD'),'eoFDf':_0x3102('‮67','qhO@'),'SJeop':_0x3102('‫68','o@0y'),'SCWKY':function(_0x15fdb5,_0x55f14c){return _0x15fdb5(_0x55f14c);},'PbpRE':'./JS_USER_AGENTS','QfLmT':'JSUA','DtBOS':_0x3102('‮69','AqFu')};let _0x2a5e47=+new Date();let _0x43adbf=[_0x50b4ba[_0x3102('‮6a','J5AU')]];let _0x4a72f5=_0x43adbf[Math['floor'](Math[_0x3102('‮6b','J5AU')]()*_0x43adbf['length'])];let _0x264cb0={'url':_0x3102('‮6c','hMf@')+_0x2a5e47,'body':_0x3102('‮6d','bgvS')+JSON[_0x3102('‮6e','z@TG')]({'method':_0x50b4ba['vWIwL'],'data':{'inviterPin':encodeURIComponent(_0x4a72f5),'channel':0x1,'token':'','frontendInitStatus':''}})+_0x3102('‫6f','qhO@')+_0x2a5e47,'headers':{'Host':_0x50b4ba[_0x3102('‮70','f52I')],'Accept':'application/json,\x20text/plain,\x20*/*','Content-type':_0x50b4ba[_0x3102('‮71','$u&N')],'Origin':_0x50b4ba[_0x3102('‮72','bZAg')],'Accept-Language':_0x50b4ba[_0x3102('‮73','[TKT')],'User-Agent':$[_0x3102('‮74','qhO@')]()?process[_0x3102('‮75','7epy')][_0x3102('‫76','XCf(')]?process[_0x3102('‫77','Gi4A')][_0x3102('‮78','Hlgj')]:_0x50b4ba['SCWKY'](require,_0x50b4ba[_0x3102('‮79','k6UV')])['USER_AGENT']:$[_0x3102('‫7a','sg)U')](_0x50b4ba[_0x3102('‫7b','J%J3')])?$[_0x3102('‫7c','J5AU')](_0x50b4ba[_0x3102('‫7d','4IbD')]):_0x50b4ba['DtBOS'],'Referer':_0x3102('‮7e','2K5g'),'Accept-Encoding':_0x3102('‫7f','(uuA'),'Cookie':_0x262d3e}};$[_0x3102('‮80','oulr')](_0x264cb0,(_0x35b43c,_0x5880de,_0x44dbda)=>{});}function invite4(_0x440dbf){var _0x2b5a7e={'GCQFA':function(_0x3d5696,_0x7b1094){return _0x3d5696*_0x7b1094;},'VfDQh':_0x3102('‮81','qBje'),'NPpkX':_0x3102('‮82','3(Uq'),'aYFki':'api.m.jd.com','pvFct':_0x3102('‫83','c[zw'),'duqaI':_0x3102('‫84','XCf('),'mpJzj':function(_0x30bbfb,_0x1add87){return _0x30bbfb(_0x1add87);},'ZEDCH':_0x3102('‮85','J%J3'),'aCEAi':_0x3102('‫86','qBje'),'oJjYH':'https://assignment.jd.com/','RWrmz':_0x3102('‫87','bgvS')};let _0x1015d0=[_0x3102('‮88','XCf(')];let _0x4fd291=_0x1015d0[Math[_0x3102('‮89','n(3f')](_0x2b5a7e[_0x3102('‫8a','EtQ#')](Math[_0x3102('‮6b','J5AU')](),_0x1015d0[_0x3102('‮8b','Zt7Z')]))];let _0x2f28b1={'url':_0x2b5a7e['VfDQh'],'body':_0x3102('‮8c','(uuA')+JSON[_0x3102('‫8d','(uuA')]({'method':_0x2b5a7e[_0x3102('‮8e','k6UV')],'data':{'channel':'1','encryptionInviterPin':encodeURIComponent(_0x4fd291),'type':0x1}})+'&appid=market-task-h5&uuid=&_t='+Date[_0x3102('‫8f','0cn&')](),'headers':{'Host':_0x2b5a7e['aYFki'],'Accept':_0x3102('‮90','oJKr'),'Content-Type':_0x2b5a7e[_0x3102('‮91','3(Uq')],'Origin':_0x3102('‮92','[TKT'),'Accept-Language':_0x2b5a7e[_0x3102('‮93','qBje')],'User-Agent':$[_0x3102('‮94','Li(D')]()?process[_0x3102('‫95','hMf@')][_0x3102('‮96','sg)U')]?process[_0x3102('‮97','Hlgj')]['JS_USER_AGENT']:_0x2b5a7e[_0x3102('‫98','4IbD')](require,_0x3102('‮99','J%J3'))[_0x3102('‮9a','2K5g')]:$[_0x3102('‫9b','k6UV')](_0x2b5a7e['ZEDCH'])?$[_0x3102('‫9c','J%J3')](_0x2b5a7e['ZEDCH']):_0x2b5a7e[_0x3102('‮9d','AqFu')],'Referer':_0x2b5a7e[_0x3102('‫9e','XCf(')],'Accept-Encoding':_0x2b5a7e[_0x3102('‫9f','n(3f')],'Cookie':_0x440dbf}};$[_0x3102('‫a0','hMf@')](_0x2f28b1,(_0x35df1e,_0x153eca,_0x5cf0a1)=>{});}async function runMain(_0x55e0d9){var _0x43644b={'KXEUD':function(_0x85ae8a,_0x3d994b){return _0x85ae8a===_0x3d994b;},'bsTFD':function(_0x326f7a,_0x24f2d3){return _0x326f7a+_0x24f2d3;},'mHTCR':function(_0x15bde1,_0x313ee0){return _0x15bde1+_0x313ee0;},'HiNbI':'giftLevel','xdLKW':function(_0x1b148f,_0x301663){return _0x1b148f(_0x301663);},'mwAMG':'JDUA','luqnW':_0x3102('‮a1','EtQ#'),'IAlMv':_0x3102('‮a2','0cn&'),'AypqX':'fThFB','SlYVx':function(_0x39d3db,_0x126875,_0x2dbdaa){return _0x39d3db(_0x126875,_0x2dbdaa);},'MEjdf':_0x3102('‮a3','EtQ#'),'gsQhN':function(_0xf9619e,_0x55a420,_0x5dcc45){return _0xf9619e(_0x55a420,_0x5dcc45);},'oErTH':_0x3102('‮a4','Hlgj'),'pRtOE':function(_0x1c5235,_0x20e7ab){return _0x1c5235!==_0x20e7ab;},'zWxwg':_0x3102('‮a5','qBje'),'xNGSM':_0x3102('‮a6','FuOh'),'AKNdg':_0x3102('‮a7','Hlgj'),'HBhGD':function(_0x4a1552,_0x3f4817,_0x398e1a){return _0x4a1552(_0x3f4817,_0x398e1a);},'azHNU':'wxActionCommon/getShopInfoVO','ammTr':function(_0x32ecf6,_0xa3c541,_0x51b5ff){return _0x32ecf6(_0xa3c541,_0x51b5ff);},'OXjJh':_0x3102('‫a8','TUqD'),'icdjy':function(_0x1a5145,_0x56f128){return _0x1a5145===_0x56f128;},'IhkaM':'lJolG','Rbaju':function(_0x1d10b8,_0x4a9eaf){return _0x1d10b8+_0x4a9eaf;},'uhefh':function(_0x8ce719,_0x34157b){return _0x8ce719<_0x34157b;},'YGfXs':function(_0x3667da,_0x16303e){return _0x3667da+_0x16303e;},'zaTxd':function(_0x503995,_0x2cef7f){return _0x503995+_0x2cef7f;},'qrZDR':function(_0x330527,_0x494952){return _0x330527+_0x494952;},'dOvkS':function(_0x27a24b,_0x2f00cd){return _0x27a24b+_0x2f00cd;},'nxVJG':function(_0x579ddc,_0x79aad8){return _0x579ddc+_0x79aad8;},'eeRtj':'One','cCvFr':_0x3102('‮a9','$u&N'),'btxtn':_0x3102('‫aa','COiT'),'pngHe':_0x3102('‮ab','f52I'),'vHPKv':function(_0x160dc2,_0x45f8d2){return _0x160dc2+_0x45f8d2;},'FnjWK':'BBZwu','AHTTA':function(_0x1de8be,_0x2e4520){return _0x1de8be===_0x2e4520;},'Qbnpl':function(_0x33797b,_0x27e965){return _0x33797b(_0x27e965);},'tVbay':function(_0x16e91c,_0x2a8f6c,_0x29e0df){return _0x16e91c(_0x2a8f6c,_0x29e0df);},'tbQJE':'wxFansInterActionActivity/activityContent','XBLCA':function(_0x2c75e7,_0x16b18f,_0x527ac9,_0x52cd22){return _0x2c75e7(_0x16b18f,_0x527ac9,_0x52cd22);},'JYuwD':function(_0x9cf844,_0xb6bca0){return _0x9cf844(_0xb6bca0);}};_0x55e0d9['UA']=_0x55e0d9[_0x3102('‮ac','RYmF')]()?process[_0x3102('‫ad','J%J3')][_0x3102('‫ae','OpYx')]?process[_0x3102('‮af','FuOh')][_0x3102('‫ae','OpYx')]:_0x43644b[_0x3102('‮b0','[TKT')](require,_0x3102('‮b1','Xxxm'))[_0x3102('‫b2','RYmF')]:_0x55e0d9[_0x3102('‫b3','bgvS')](_0x43644b[_0x3102('‫b4','RYmF')])?_0x55e0d9[_0x3102('‮b5','Zt7Z')](_0x43644b['mwAMG']):_0x43644b['luqnW'],_0x55e0d9[_0x3102('‫b6','4IbD')]='';_0x55e0d9[_0x3102('‫b7','sdz^')]='';_0x55e0d9[_0x3102('‮b8','FuOh')]='';_0x55e0d9[_0x3102('‮b9','hMf@')]='';_0x55e0d9[_0x3102('‮ba','p(IT')]='';_0x55e0d9[_0x3102('‮bb','Zt7Z')]='';_0x55e0d9[_0x3102('‫bc','bZAg')]='';_0x55e0d9['activityType']='';_0x55e0d9[_0x3102('‮bd','AqFu')]='https://img10.360buyimg.com/imgzone/jfs/t1/7020/27/13511/6142/5c5138d8E4df2e764/5a1216a3a5043c5d.png';console['log'](_0x3102('‮be','dt#Z')+_0x55e0d9['thisActivityUrl']);_0x55e0d9[_0x3102('‮bf','*m2]')]=_0x43644b[_0x3102('‮c0','2K5g')];_0x55e0d9['token']=await getToken(_0x55e0d9);if(!_0x55e0d9[_0x3102('‮c1','qBje')]){if(_0x3102('‮c2','R%hz')===_0x43644b[_0x3102('‮c3','o@0y')]){console[_0x3102('‮c4','#9UC')](_0x3102('‫c5','z@TG'));return;}else{const _0x241dee=url[_0x3102('‫c6','Hlgj')](/\?.*/)[0x0]['substring'](0x1);const _0x34b328=_0x241dee[_0x3102('‮c7','Li(D')]('&');for(let _0x5b3c78=0x0;_0x5b3c78<_0x34b328['length'];_0x5b3c78++){const _0x4f283d=_0x34b328[_0x5b3c78][_0x3102('‮c8','OpYx')]('=');if(_0x43644b[_0x3102('‫c9','sNao')](_0x4f283d[0x0],name)){return _0x34b328[_0x5b3c78]['substr'](_0x43644b['bsTFD'](_0x34b328[_0x5b3c78][_0x3102('‮ca','AqFu')]('='),0x1));}}return'';}}await _0x43644b[_0x3102('‫cb','bgvS')](getHtml,_0x55e0d9);if(!_0x55e0d9[_0x3102('‮cc','0cn&')]||!_0x55e0d9[_0x3102('‫cd','(uuA')]){console[_0x3102('‫ce','EtQ#')]('初始化失败1');return;}let _0x55dfd3=await _0x43644b[_0x3102('‮cf','Hlgj')](takePostRequest,_0x55e0d9,_0x43644b[_0x3102('‫d0','XCf(')]);_0x55e0d9[_0x3102('‫d1','n(3f')]=_0x55dfd3[_0x3102('‫d2','*m2]')]['venderId']||'';_0x55e0d9[_0x3102('‮d3','vitW')]=_0x55dfd3[_0x3102('‫d4','J5AU')][_0x3102('‮d5','Hlgj')]||'';console[_0x3102('‮d6','4IbD')]('venderId:'+_0x55e0d9['venderId']);let _0x4ef89c=await _0x43644b[_0x3102('‫d7','p(IT')](takePostRequest,_0x55e0d9,_0x43644b[_0x3102('‮d8','#9UC')]);_0x55e0d9[_0x3102('‫d9','z@TG')]=_0x4ef89c[_0x3102('‮da','2K5g')][_0x3102('‮db','3(Uq')];_0x55e0d9[_0x3102('‫dc','4IbD')]=_0x4ef89c[_0x3102('‮dd','[TKT')][_0x3102('‮de','sdz^')];if(!_0x55e0d9[_0x3102('‮df','4q7e')]){if(_0x43644b[_0x3102('‮e0','EtQ#')](_0x3102('‫e1','bgvS'),_0x43644b['zWxwg'])){console[_0x3102('‫e2','c[zw')](_0x3102('‮e3','qBje'));return;}else{console[_0x3102('‫e4','oulr')](_0x3102('‮e5','n(3f')+i[_0x3102('‫e6','tBOS')]+i[_0x3102('‫e7','bgvS')]+i['secondLineDesc']);}}await takePostRequest(_0x55e0d9,_0x43644b['xNGSM']);let _0x348a9d=await takePostRequest(_0x55e0d9,_0x43644b[_0x3102('‫e8','Gi4A')]);let _0x3f1e12=await _0x43644b[_0x3102('‮e9','k6UV')](takePostRequest,_0x55e0d9,_0x43644b[_0x3102('‫ea','[TKT')]);let _0x1ca12e=await _0x43644b[_0x3102('‮eb','n(3f')](takePostRequest,_0x55e0d9,_0x43644b['OXjJh']);if(_0x348a9d&&_0x348a9d[_0x3102('‫ec','d3gl')]&&_0x348a9d[_0x3102('‮ed','TUqD')][_0x3102('‫ee','Zt7Z')]){_0x55e0d9[_0x3102('‫ef','OpYx')]=_0x348a9d[_0x3102('‫f0','OpYx')]['yunMidImageUrl'];}let _0x440f9c=await _0x43644b[_0x3102('‮f1','*m2]')](takePostRequest,_0x55e0d9,_0x3102('‫f2','OGYu'));_0x55e0d9[_0x3102('‮f3','4q7e')]=_0x440f9c['data']||{};_0x55e0d9[_0x3102('‫f4','sNao')]=_0x55e0d9[_0x3102('‮f5','oJKr')]['actInfo'];_0x55e0d9[_0x3102('‫f6','bgvS')]=_0x55e0d9['activityData']['actorInfo'];_0x55e0d9[_0x3102('‫f7','sdz^')]=_0x43644b[_0x3102('‫f8','oulr')](Number,_0x55e0d9['actorInfo'][_0x3102('‮f9','n(3f')])+Number(_0x55e0d9['actorInfo'][_0x3102('‫fa','hMf@')]);if(JSON[_0x3102('‮fb','XCf(')](_0x55e0d9['activityData'])==='{}'){if(_0x43644b['icdjy'](_0x3102('‫fc','f52I'),_0x43644b[_0x3102('‮fd','OGYu')])){console[_0x3102('‮fe','k6UV')](_0x3102('‫ff','z@TG'));return;}else{console['log'](_0x3102('‫100','EtQ#'));return;}}let _0x14dd78=new Date(_0x55e0d9['activityData'][_0x3102('‮101','Li(D')]['endTime']);let _0x47a65e=_0x43644b['mHTCR'](_0x43644b[_0x3102('‮102','Xxxm')](_0x43644b[_0x3102('‫103','FuOh')](_0x14dd78[_0x3102('‮104','z@TG')](),'-'),_0x43644b[_0x3102('‫105','EtQ#')](_0x14dd78['getMonth'](),0xa)?_0x43644b[_0x3102('‫106','OpYx')]('0',_0x43644b[_0x3102('‫107','bZAg')](_0x14dd78['getMonth'](),0x1)):_0x43644b[_0x3102('‫108','d3gl')](_0x14dd78[_0x3102('‮109','FuOh')](),0x1))+'-',_0x14dd78[_0x3102('‮10a','J5AU')]()<0xa?'0'+_0x14dd78['getDate']():_0x14dd78[_0x3102('‮10b','AqFu')]());_0x14dd78=new Date(_0x55e0d9[_0x3102('‫10c','oulr')][_0x3102('‮10d','qBje')][_0x3102('‫10e','OGYu')]);let _0x5efa70=_0x43644b['zaTxd'](_0x43644b['qrZDR'](_0x43644b[_0x3102('‮10f','J5AU')](_0x14dd78[_0x3102('‫110','(uuA')](),'-')+(_0x14dd78['getMonth']()<0xa?_0x43644b[_0x3102('‮111','bgvS')]('0',_0x43644b['nxVJG'](_0x14dd78[_0x3102('‮112','n(3f')](),0x1)):_0x43644b[_0x3102('‫113','sdz^')](_0x14dd78[_0x3102('‮114','(uuA')](),0x1)),'-'),_0x43644b[_0x3102('‮115','d3gl')](_0x14dd78[_0x3102('‮116','hMf@')](),0xa)?_0x43644b[_0x3102('‫117','7epy')]('0',_0x14dd78[_0x3102('‫118','Hlgj')]()):_0x14dd78[_0x3102('‫119','0cn&')]());console[_0x3102('‮11a','$u&N')](_0x55e0d9[_0x3102('‮11b','sdz^')][_0x3102('‮11c','hMf@')]+','+_0x3f1e12['data'][_0x3102('‫11d','f52I')]+_0x3102('‮11e','tBOS')+_0x55e0d9[_0x3102('‫11f','3(Uq')]+_0x3102('‮120','XCf(')+_0x5efa70+_0x3102('‮121','XCf(')+_0x47a65e+','+_0x55e0d9[_0x3102('‫122','sNao')][_0x3102('‫123','f52I')][_0x3102('‫124','p(IT')]);let _0x3ce080=[];let _0x2b4f3e=[_0x43644b['eeRtj'],_0x3102('‮125','oulr'),_0x43644b[_0x3102('‫126','sdz^')]];for(let _0x9ade55=0x0;_0x9ade55<_0x2b4f3e[_0x3102('‮127','vitW')];_0x9ade55++){let _0x8831d2=_0x55e0d9['activityData'][_0x3102('‮128','d3gl')][_0x43644b[_0x3102('‮129','sNao')]+_0x2b4f3e[_0x9ade55]]||'';if(_0x8831d2){if(_0x43644b[_0x3102('‮12a','2K5g')]!==_0x43644b[_0x3102('‫12b','COiT')]){_0x8831d2=JSON[_0x3102('‮12c','EtQ#')](_0x8831d2);_0x3ce080[_0x3102('‮12d','n(3f')](_0x8831d2[0x0][_0x3102('‮12e','J5AU')]);}else{if(err){console[_0x3102('‮11a','$u&N')](''+JSON['stringify'](err));console[_0x3102('‫12f','vitW')](_0x55e0d9[_0x3102('‮130','TUqD')]+_0x3102('‮131','k6UV'));}else{data=JSON[_0x3102('‮132','z@TG')](data);}}}}console[_0x3102('‮133','n(3f')](_0x43644b['vHPKv']('奖品列表:',_0x3ce080[_0x3102('‫134','4IbD')]()));if(_0x55e0d9[_0x3102('‮135','sg)U')][_0x3102('‫136','d3gl')]&&_0x55e0d9[_0x3102('‫137','sNao')][_0x3102('‫138','vitW')]&&_0x55e0d9[_0x3102('‫139','Hlgj')][_0x3102('‮13a','tBOS')]){if(_0x43644b[_0x3102('‫13b','f52I')]!==_0x43644b[_0x3102('‮13c','hMf@')]){let _0x1fa91a=_0x55e0d9[_0x3102('‫13d','Zt7Z')][_0x3102('‫13e','Zt7Z')][_0x43644b['mHTCR'](_0x43644b[_0x3102('‮13f','7epy')],_0x2b4f3e[i])]||'';if(_0x1fa91a){_0x1fa91a=JSON[_0x3102('‫140','n(3f')](_0x1fa91a);_0x3ce080[_0x3102('‫141','bgvS')](_0x1fa91a[0x0][_0x3102('‮142','dt#Z')]);}}else{console[_0x3102('‮143','qBje')]('已完成抽奖');return;}}if(_0x43644b['AHTTA'](_0x1ca12e['data'][_0x3102('‫144','RYmF')],0x1)&&!_0x1ca12e[_0x3102('‮145','qBje')]['openCard']){console[_0x3102('‫146','COiT')](_0x3102('‮147','[TKT'));if(_0x43644b['xdLKW'](Number,RUHUI)===0x1){console['log'](_0x3102('‫148','k6UV'));await _0x43644b[_0x3102('‮149','4IbD')](join,_0x55e0d9);_0x440f9c=await _0x43644b[_0x3102('‫14a','FuOh')](takePostRequest,_0x55e0d9,_0x43644b[_0x3102('‫14b','oJKr')]);_0x55e0d9[_0x3102('‮f5','oJKr')]=_0x440f9c[_0x3102('‫14c','f52I')]||{};await _0x55e0d9['wait'](0xbb8);}else{console[_0x3102('‮143','qBje')]('不执行入会,跳出');return;}return;}else if(_0x1ca12e[_0x3102('‮dd','[TKT')]['openCard']){console[_0x3102('‫14d','Gi4A')](_0x3102('‮14e','c[zw'));}if(_0x55e0d9['activityData']['actorInfo']&&!_0x55e0d9['activityData'][_0x3102('‫14f','1M$7')]['follow']){console[_0x3102('‮150','Hlgj')](_0x3102('‫151','0cn&'));_0x55e0d9[_0x3102('‫152','sdz^')]=_0x3102('‮153','bZAg')+_0x55e0d9['activityId']+_0x3102('‮154','d3gl')+_0x55e0d9['activityData'][_0x3102('‮155','XCf(')]['uuid'];let _0x3bd575=await _0x43644b['XBLCA'](takePostRequest,_0x55e0d9,'wxFansInterActionActivity/followShop',_0x55e0d9[_0x3102('‮156','#9UC')]);console['log'](JSON[_0x3102('‫157','OpYx')](_0x3bd575));await _0x55e0d9[_0x3102('‮158','bgvS')](0xbb8);}_0x55e0d9[_0x3102('‮159','sdz^')]=![];await _0x43644b[_0x3102('‮15a','qhO@')](doTask,_0x55e0d9);await _0x43644b['JYuwD'](luckDraw,_0x55e0d9);}async function luckDraw(_0x4c6496){var _0x53a801={'lrqvv':function(_0x636e2f,_0x3b66b4){return _0x636e2f===_0x3b66b4;},'qXSXS':function(_0x4e470b,_0x4c9e43){return _0x4e470b!==_0x4c9e43;},'UtHhV':'LLZId','NoELl':'viSWZ','eRloW':_0x3102('‫15b','c[zw'),'wnHjE':function(_0x1d012c,_0x1d4477){return _0x1d012c+_0x1d4477;},'nNiaV':_0x3102('‫15c','Xxxm'),'XgIih':'Two','nwdyF':function(_0x2f2e9a,_0x2dd61f){return _0x2f2e9a<_0x2dd61f;},'HzixN':function(_0x4dfae1,_0x383de9){return _0x4dfae1!==_0x383de9;},'ufCNB':_0x3102('‮15d','oulr'),'QUjGU':_0x3102('‫15e','Gi4A'),'sjoOV':function(_0x5d62ab,_0x507486){return _0x5d62ab>=_0x507486;},'AayXD':'ZTwkz','qiMDR':function(_0x562725,_0x35f89b,_0x79a034,_0x488b82){return _0x562725(_0x35f89b,_0x79a034,_0x488b82);},'YwDYA':_0x3102('‮15f','AqFu')};if(_0x4c6496['upFlag']){if(_0x53a801[_0x3102('‮160','qhO@')](_0x53a801[_0x3102('‮161','OpYx')],_0x53a801['NoELl'])){activityData=await takePostRequest(_0x4c6496,_0x53a801['eRloW']);_0x4c6496[_0x3102('‫162','XCf(')]=activityData[_0x3102('‫d4','J5AU')]||{};await _0x4c6496['wait'](0xbb8);}else{const _0x3b4eb0=vars[i][_0x3102('‮163','4IbD')]('=');if(_0x53a801[_0x3102('‫164','tBOS')](_0x3b4eb0[0x0],name)){return vars[i][_0x3102('‫165','oJKr')](vars[i][_0x3102('‮166','qhO@')]('=')+0x1);}}}let _0xf7a07c=_0x53a801[_0x3102('‫167','OpYx')](Number(_0x4c6496[_0x3102('‫168','FuOh')]['actorInfo'][_0x3102('‫169','7epy')]),Number(_0x4c6496[_0x3102('‫16a','[TKT')][_0x3102('‫f6','bgvS')][_0x3102('‮16b','J%J3')]));let _0x1fa8df=[_0x53a801[_0x3102('‮16c','d3gl')],_0x53a801[_0x3102('‮16d','XCf(')],_0x3102('‮16e','3(Uq')];let _0x3694f5={'One':'01','Two':'02','Three':'03'};for(let _0x10cbe9=0x0;_0x53a801[_0x3102('‫16f','OpYx')](_0x10cbe9,_0x1fa8df[_0x3102('‫170','z@TG')]);_0x10cbe9++){if(_0x53a801['HzixN'](_0x53a801[_0x3102('‮171','sg)U')],_0x53a801['QUjGU'])){if(_0x53a801[_0x3102('‫172','OGYu')](_0xf7a07c,_0x4c6496[_0x3102('‮173','sg)U')][_0x3102('‫174','sNao')][_0x3102('‫175','2K5g')+_0x1fa8df[_0x10cbe9]])&&_0x4c6496[_0x3102('‮176','#9UC')][_0x3102('‮135','sg)U')][_0x3102('‮177','J5AU')+_0x1fa8df[_0x10cbe9]+_0x3102('‮178','dt#Z')]===![]){if(_0x53a801[_0x3102('‮179','J5AU')](_0x53a801[_0x3102('‫17a','FuOh')],_0x3102('‮17b','7epy'))){console[_0x3102('‫17c','7epy')](_0x3102('‫17d','sNao')+Number(_0x3694f5[_0x1fa8df[_0x10cbe9]])+_0x3102('‮17e','XCf('));_0x4c6496[_0x3102('‮17f','J%J3')]=_0x3102('‫180','tBOS')+_0x4c6496['activityId']+_0x3102('‫181','4q7e')+_0x4c6496[_0x3102('‫162','XCf(')][_0x3102('‮182','#9UC')]['uuid']+_0x3102('‫183','z@TG')+_0x3694f5[_0x1fa8df[_0x10cbe9]];let _0x56a425=await _0x53a801[_0x3102('‫184','tBOS')](takePostRequest,_0x4c6496,_0x53a801[_0x3102('‫185','TUqD')],_0x4c6496[_0x3102('‫186','FuOh')]);if(_0x56a425[_0x3102('‮187','(uuA')]&&_0x53a801[_0x3102('‮188','*m2]')](_0x56a425[_0x3102('‫189','c[zw')],0x0)){let _0x3be5d9=_0x56a425['data'];if(!_0x3be5d9[_0x3102('‮18a','(uuA')]){console['log'](_0x3102('‫18b','J%J3'));}else{console['log'](_0x3102('‮18c','3(Uq')+_0x3be5d9[_0x3102('‫18d','R%hz')]);message+=_0x4c6496[_0x3102('‮18e','sdz^')]+',获得:'+(_0x3be5d9[_0x3102('‮18f','Li(D')]||'未知')+'\x0a';}}else{if(_0x53a801[_0x3102('‫190','bgvS')](_0x3102('‫191','[TKT'),'XJCdS')){console['log'](_0x3102('‮192','sg)U'));}else{console[_0x3102('‮193','dt#Z')]('已完成抽奖');return;}}console[_0x3102('‮194','1M$7')](JSON[_0x3102('‫195','qBje')](_0x56a425));await _0x4c6496['wait'](0xbb8);}else{_0x4c6496[_0x3102('‫196','COiT')]=useInfo[_0x3102('‮197','oJKr')][_0x3102('‮198','[TKT')];}}}else{_0x4c6496[_0x3102('‫199','oulr')]();}}}async function doTask(_0x3ed92d){var _0xc20637={'fxIHp':_0x3102('‫19a','bgvS'),'ZKLiL':_0x3102('‮19b','Hlgj'),'ZbNwm':_0x3102('‮19c','AqFu'),'XjZkS':function(_0x2d68b5,_0xd1baca){return _0x2d68b5(_0xd1baca);},'iGdby':_0x3102('‫19d','7epy'),'lMDca':_0x3102('‮19e','sdz^'),'teqjC':_0x3102('‮66','4IbD'),'xZCIh':_0x3102('‮19f','f52I'),'FQuDo':'zh-CN,zh-Hans;q=0.9','RNRQg':function(_0x35095e,_0x1d8663){return _0x35095e(_0x1d8663);},'jUkhb':'./JS_USER_AGENTS','oYQYE':_0x3102('‮1a0','#9UC'),'xeVFP':'\x27jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0\x20(iPad;\x20CPU\x20OS\x2014_4\x20like\x20Mac\x20OS\x20X)\x20AppleWebKit/605.1.15\x20(KHTML,\x20like\x20Gecko)\x20Mobile/15E148;supportJDSHWK/1','qMYSX':function(_0x4cf7aa,_0x3dfcaf){return _0x4cf7aa>_0x3dfcaf;},'YwiVB':_0x3102('‮1a1','J%J3'),'TDesB':function(_0x35c60e,_0x3ba9b4){return _0x35c60e+_0x3ba9b4;},'Xcook':_0x3102('‫1a2','AqFu'),'CWqFC':_0x3102('‮1a3','0cn&'),'VtSSe':function(_0xb6ea31,_0x4418df){return _0xb6ea31==_0x4418df;},'cXqOV':function(_0x475f62,_0x15a3f1){return _0x475f62!==_0x15a3f1;},'lHaKa':'wFQPM','wfrOv':_0x3102('‮1a4','4q7e'),'HxVUd':function(_0x36a551,_0x4202e4){return _0x36a551===_0x4202e4;},'IvEAR':_0x3102('‮1a5','f52I'),'MaQxj':function(_0x41c6f2,_0x257b0b){return _0x41c6f2(_0x257b0b);},'JykYd':function(_0x444fdf,_0x5259e1){return _0x444fdf<_0x5259e1;},'vQgSE':function(_0x5d14af,_0x34f4dd){return _0x5d14af!==_0x34f4dd;},'NNTKH':_0x3102('‫1a6','7epy'),'zcJkc':'RbXTc','cPEwH':function(_0x37887a,_0x537cb2,_0x4c4d65,_0x403878){return _0x37887a(_0x537cb2,_0x4c4d65,_0x403878);},'VXIvV':'wxFansInterActionActivity/doBrowGoodsTask','ctyrh':function(_0x3ed905,_0x55c9e5){return _0x3ed905-_0x55c9e5;},'JQMxx':function(_0x895ede,_0xf84860){return _0x895ede(_0xf84860);},'rqQtg':_0x3102('‫1a7','COiT'),'ooeAJ':'SuBoq','LhFVX':function(_0xd6e015,_0x2c23b1,_0x18c08a,_0x3ffd41){return _0xd6e015(_0x2c23b1,_0x18c08a,_0x3ffd41);},'lgstp':_0x3102('‮1a8','Zt7Z'),'skBek':function(_0x24e342,_0x51b9ff){return _0x24e342!==_0x51b9ff;},'OvAsQ':function(_0x3ba6b1,_0x2c009e){return _0x3ba6b1(_0x2c009e);},'rvTPk':function(_0x5cb859,_0x49de05){return _0x5cb859>_0x49de05;},'refGN':'wkzIf','luxQa':function(_0x423556,_0x2f4928,_0x28d8cb,_0x3d7203){return _0x423556(_0x2f4928,_0x28d8cb,_0x3d7203);},'iKGOy':function(_0x2186cf,_0x4fa833){return _0x2186cf!==_0x4fa833;},'frDhF':'jblhm','ajmwv':function(_0x5d34be,_0x121eaf,_0x4a9e89,_0x5e8e94){return _0x5d34be(_0x121eaf,_0x4a9e89,_0x5e8e94);},'CCxAw':'wxFansInterActionActivity/doSign','SknvR':_0x3102('‫1a9','tBOS'),'abMOz':'UfyrK','NqNjO':'ovsKf','dzMwS':function(_0x3be998,_0x406901){return _0x3be998!==_0x406901;},'UWAWk':_0x3102('‮1aa','J5AU'),'aRFWK':'UlTIV','DSTgE':_0x3102('‮1ab','#9UC'),'vZRbP':_0x3102('‫1ac','FuOh'),'iXgIX':_0x3102('‫1ad','Xxxm'),'Mtvqj':function(_0x5f4550,_0x3280e9){return _0x5f4550!==_0x3280e9;},'RNfoH':_0x3102('‫1ae','qhO@'),'cKNsy':function(_0xe01a3e,_0x449680){return _0xe01a3e!==_0x449680;},'kLxDp':'EWLSc','GzMYu':function(_0x398a21,_0x177634,_0x4f6971,_0x264467){return _0x398a21(_0x177634,_0x4f6971,_0x264467);},'nBgEy':function(_0xef03fe,_0x54942c){return _0xef03fe===_0x54942c;},'wlsLR':'xMmLv','MakqP':_0x3102('‫1af','TUqD')};let _0x48d4bd=0x0;if(_0x3ed92d[_0x3102('‫16a','[TKT')]['task2BrowGoods']){if(_0xc20637[_0x3102('‮1b0','k6UV')](_0xc20637[_0x3102('‮1b1','Xxxm')],_0xc20637[_0x3102('‮1b2','tBOS')])){if(_0xc20637['cXqOV'](_0x3ed92d['activityData'][_0x3102('‫1b3','dt#Z')][_0x3102('‫1b4','o@0y')],_0x3ed92d[_0x3102('‫1b5','OpYx')]['task2BrowGoods'][_0x3102('‫1b6','p(IT')])){if(_0xc20637[_0x3102('‫1b7','Xxxm')]('JFzYZ',_0xc20637['IvEAR'])){data=JSON[_0x3102('‫1b8','3(Uq')](data);}else{_0x48d4bd=_0xc20637[_0x3102('‮1b9','$u&N')](Number,_0x3ed92d['activityData'][_0x3102('‮1ba','Zt7Z')][_0x3102('‫1bb','vitW')])-Number(_0x3ed92d[_0x3102('‫1bc','4IbD')][_0x3102('‮1bd','J5AU')][_0x3102('‫1be','sg)U')]);console[_0x3102('‮1bf','OGYu')](_0x3102('‮1c0','2K5g'));_0x3ed92d[_0x3102('‮1c1','RYmF')]=!![];for(let _0x2ce9ec=0x0;_0xc20637[_0x3102('‮1c2','3(Uq')](_0x2ce9ec,_0x3ed92d['activityData']['task2BrowGoods'][_0x3102('‫1c3','bZAg')][_0x3102('‫1c4','RYmF')])&&_0x48d4bd>0x0;_0x2ce9ec++){if(_0xc20637['vQgSE'](_0xc20637[_0x3102('‫1c5','vitW')],_0xc20637[_0x3102('‫1c6','4IbD')])){_0x3ed92d['oneGoodInfo']=_0x3ed92d['activityData'][_0x3102('‫1c7','Hlgj')]['taskGoodList'][_0x2ce9ec];if(_0xc20637[_0x3102('‮1c8','Li(D')](_0x3ed92d[_0x3102('‫1c9','FuOh')]['finished'],![])){console['log'](_0x3102('‮1ca','oJKr')+(_0x3ed92d['oneGoodInfo'][_0x3102('‫1cb','TUqD')]||''));_0x3ed92d['body']=_0x3102('‫1cc','3(Uq')+_0x3ed92d['activityId']+_0x3102('‮1cd','dt#Z')+_0x3ed92d[_0x3102('‮1ce','1M$7')][_0x3102('‫1cf','4IbD')][_0x3102('‫1d0','k6UV')]+_0x3102('‮1d1','R%hz')+_0x3ed92d[_0x3102('‮1d2','z@TG')][_0x3102('‮1d3','sNao')];let _0x2ca9ba=await _0xc20637[_0x3102('‮1d4','Li(D')](takePostRequest,_0x3ed92d,_0xc20637['VXIvV'],_0x3ed92d[_0x3102('‫1d5','Gi4A')]);console[_0x3102('‮1bf','OGYu')](JSON['stringify'](_0x2ca9ba));await _0x3ed92d[_0x3102('‫1d6','k6UV')](0xbb8);_0x48d4bd--;}}else{return;}}}}else{console['log'](_0x3102('‮1d7','sNao'));}}else{_0x3ed92d[_0x3102('‮1d8','1M$7')](e,resp);}}if(_0x3ed92d['activityData']['task3AddCart']){if(_0x3ed92d[_0x3102('‮1d9','TUqD')][_0x3102('‫1da','oJKr')]['finishedCount']!==_0x3ed92d[_0x3102('‫1db','RYmF')][_0x3102('‮1dc','(uuA')][_0x3102('‮1dd','bZAg')]){_0x48d4bd=_0xc20637['ctyrh'](_0xc20637[_0x3102('‫1de','Hlgj')](Number,_0x3ed92d[_0x3102('‫16a','[TKT')][_0x3102('‮1df','Zt7Z')][_0x3102('‫1e0','2K5g')]),_0xc20637[_0x3102('‮1e1','bZAg')](Number,_0x3ed92d[_0x3102('‮f3','4q7e')]['task3AddCart'][_0x3102('‮1e2','R%hz')]));console[_0x3102('‮1e3','4q7e')](_0x3102('‫1e4','OGYu'));_0x3ed92d['upFlag']=!![];for(let _0x3f79b2=0x0;_0xc20637['JykYd'](_0x3f79b2,_0x3ed92d[_0x3102('‮1e5','tBOS')][_0x3102('‫1e6','tBOS')][_0x3102('‫1e7','7epy')][_0x3102('‮127','vitW')])&&_0xc20637[_0x3102('‮1e8','R%hz')](_0x48d4bd,0x0);_0x3f79b2++){_0x3ed92d[_0x3102('‮1e9','J5AU')]=_0x3ed92d[_0x3102('‫1ea','7epy')][_0x3102('‮1eb','p(IT')]['taskGoodList'][_0x3f79b2];if(_0x3ed92d[_0x3102('‮1ec','vitW')][_0x3102('‮1ed','TUqD')]===![]){if(_0xc20637['HxVUd'](_0xc20637['rqQtg'],_0xc20637['ooeAJ'])){let _0x36f1df=[_0xc20637['fxIHp']];let _0x51b20c=_0x36f1df[Math['floor'](Math[_0x3102('‮1ee','$u&N')]()*_0x36f1df[_0x3102('‫1ef','dt#Z')])];let _0x5b3794={'url':_0xc20637[_0x3102('‮1f0','RYmF')],'body':_0x3102('‫1f1','k6UV')+JSON[_0x3102('‮fb','XCf(')]({'method':_0xc20637[_0x3102('‫1f2','EtQ#')],'data':{'channel':'1','encryptionInviterPin':_0xc20637[_0x3102('‮1f3','4q7e')](encodeURIComponent,_0x51b20c),'type':0x1}})+_0x3102('‫1f4','TUqD')+Date[_0x3102('‫1f5','p(IT')](),'headers':{'Host':_0xc20637['iGdby'],'Accept':_0xc20637['lMDca'],'Content-Type':_0xc20637['teqjC'],'Origin':_0xc20637[_0x3102('‮1f6','RYmF')],'Accept-Language':_0xc20637[_0x3102('‮1f7','Xxxm')],'User-Agent':_0x3ed92d[_0x3102('‮1f8','[TKT')]()?process[_0x3102('‮1f9','z@TG')][_0x3102('‮1fa','COiT')]?process[_0x3102('‫1fb','COiT')][_0x3102('‫1fc','J5AU')]:_0xc20637['RNRQg'](require,_0xc20637[_0x3102('‮1fd','qhO@')])[_0x3102('‫1fe','AqFu')]:_0x3ed92d['getdata'](_0xc20637['oYQYE'])?_0x3ed92d[_0x3102('‫1ff','0cn&')](_0x3102('‮200','4q7e')):_0xc20637[_0x3102('‫201','z@TG')],'Referer':_0x3102('‮202','oulr'),'Accept-Encoding':_0x3102('‮203','Hlgj'),'Cookie':cookie}};_0x3ed92d[_0x3102('‫204','EtQ#')](_0x5b3794,(_0x55d9dd,_0x153687,_0x496e6d)=>{});}else{console[_0x3102('‫17c','7epy')](_0x3102('‫205','bZAg')+(_0x3ed92d[_0x3102('‮206','7epy')]['skuName']||''));_0x3ed92d[_0x3102('‫207','p(IT')]=_0x3102('‮208','J%J3')+_0x3ed92d['activityId']+'&uuid='+_0x3ed92d[_0x3102('‫209','qBje')][_0x3102('‫20a','3(Uq')][_0x3102('‮20b','AqFu')]+_0x3102('‮20c','Hlgj')+_0x3ed92d[_0x3102('‫20d','4IbD')][_0x3102('‮20e','Xxxm')];let _0x2ca9ba=await _0xc20637[_0x3102('‫20f','EtQ#')](takePostRequest,_0x3ed92d,_0xc20637[_0x3102('‮210','OGYu')],_0x3ed92d['body']);console['log'](JSON[_0x3102('‫211','EtQ#')](_0x2ca9ba));await _0x3ed92d['wait'](0xbb8);_0x48d4bd--;}}}}else{console['log'](_0x3102('‫212','4q7e'));}}if(_0x3ed92d['activityData']['task6GetCoupon']){if(_0xc20637['skBek'](_0x3ed92d[_0x3102('‫213','dt#Z')]['task6GetCoupon'][_0x3102('‮214','4q7e')],_0x3ed92d['activityData']['task6GetCoupon'][_0x3102('‮215','FuOh')])){_0x48d4bd=_0xc20637[_0x3102('‫216','AqFu')](Number,_0x3ed92d[_0x3102('‫213','dt#Z')][_0x3102('‮217','Gi4A')][_0x3102('‫218','n(3f')])-Number(_0x3ed92d['activityData']['task6GetCoupon']['finishedCount']);console[_0x3102('‮219','3(Uq')](_0x3102('‮21a','sg)U'));_0x3ed92d[_0x3102('‫21b','COiT')]=!![];for(let _0x4e8080=0x0;_0x4e8080<_0x3ed92d['activityData'][_0x3102('‮217','Gi4A')][_0x3102('‫21c','n(3f')][_0x3102('‫21d','oJKr')]&&_0xc20637['rvTPk'](_0x48d4bd,0x0);_0x4e8080++){if(_0xc20637['skBek'](_0xc20637[_0x3102('‫21e','R%hz')],_0xc20637[_0x3102('‫21f','Li(D')])){console[_0x3102('‮220','o@0y')](_0x3102('‮221','z@TG'));}else{_0x3ed92d['oneCouponInfo']=_0x3ed92d['activityData']['task6GetCoupon'][_0x3102('‮222','4IbD')][_0x4e8080];if(_0xc20637['HxVUd'](_0x3ed92d[_0x3102('‫223','hMf@')][_0x3102('‮224','tBOS')],![])){_0x3ed92d[_0x3102('‫225','vitW')]='activityId='+_0x3ed92d['activityId']+_0x3102('‮226','sdz^')+_0x3ed92d[_0x3102('‫209','qBje')][_0x3102('‫227','COiT')][_0x3102('‫228','0cn&')]+_0x3102('‮229','AqFu')+_0x3ed92d[_0x3102('‫22a','n(3f')][_0x3102('‮22b','EtQ#')]['couponId'];let _0x2ca9ba=await _0xc20637[_0x3102('‮22c','4q7e')](takePostRequest,_0x3ed92d,'wxFansInterActionActivity/doGetCouponTask',_0x3ed92d[_0x3102('‫22d','Li(D')]);console[_0x3102('‮22e','TUqD')](JSON[_0x3102('‮22f','*m2]')](_0x2ca9ba));await _0x3ed92d[_0x3102('‮230','J5AU')](0xbb8);_0x48d4bd--;}}}}else{console[_0x3102('‮193','dt#Z')]('领取优惠券已完成');}}_0x3ed92d[_0x3102('‫231','Hlgj')]='activityId='+_0x3ed92d[_0x3102('‮232','Zt7Z')]+_0x3102('‫233','7epy')+_0x3ed92d[_0x3102('‫234','Li(D')]['actorInfo'][_0x3102('‫235','$u&N')];if(_0x3ed92d['activityData']['task1Sign']&&_0xc20637[_0x3102('‫236','OpYx')](_0x3ed92d[_0x3102('‫237','R%hz')][_0x3102('‫238','4q7e')]['finishedCount'],0x0)){if(_0xc20637['iKGOy'](_0xc20637[_0x3102('‫239','*m2]')],_0xc20637[_0x3102('‫23a','sNao')])){console[_0x3102('‮23b','hMf@')](_0x3102('‫23c','oJKr'));}else{console[_0x3102('‮133','n(3f')](_0x3102('‮23d','*m2]'));let _0x593d75=await _0xc20637['ajmwv'](takePostRequest,_0x3ed92d,_0xc20637['CCxAw'],_0x3ed92d['body']);console[_0x3102('‮23e','Xxxm')](JSON['stringify'](_0x593d75));await _0x3ed92d[_0x3102('‮23f','7epy')](0xbb8);_0x3ed92d['upFlag']=!![];}}else{if(_0xc20637['iKGOy'](_0xc20637['SknvR'],_0xc20637['abMOz'])){console[_0x3102('‫240','J%J3')](_0x3102('‫241','sdz^'));}else{console[_0x3102('‫242','2K5g')](data);_0x3ed92d[_0x3102('‫243','o@0y')](e,resp);}}if(_0x3ed92d[_0x3102('‫244','p(IT')][_0x3102('‫245','tBOS')]){if(_0x3102('‮246','AqFu')!==_0xc20637[_0x3102('‫247','7epy')]){if(_0x3ed92d[_0x3102('‮248','hMf@')][_0x3102('‮249','Li(D')]['finishedCount']!==_0x3ed92d[_0x3102('‫1bc','4IbD')][_0x3102('‫245','tBOS')][_0x3102('‫24a','XCf(')]){if(_0xc20637[_0x3102('‫24b','bgvS')](_0xc20637[_0x3102('‫24c','n(3f')],_0xc20637[_0x3102('‮24d','sdz^')])){_0x48d4bd=_0xc20637['ctyrh'](Number(_0x3ed92d[_0x3102('‮248','hMf@')][_0x3102('‫24e','$u&N')][_0x3102('‫24f','OGYu')]),Number(_0x3ed92d[_0x3102('‮250','COiT')][_0x3102('‫251','p(IT')][_0x3102('‮252','p(IT')]));console[_0x3102('‮133','n(3f')]('开始做分享任务');_0x3ed92d[_0x3102('‮253','4q7e')]=!![];for(let _0x22e61c=0x0;_0xc20637[_0x3102('‮254','R%hz')](_0x22e61c,_0x48d4bd);_0x22e61c++){console['log']('执行第'+_0xc20637['TDesB'](_0x22e61c,0x1)+_0x3102('‮255','tBOS'));let _0x593d75=await takePostRequest(_0x3ed92d,_0xc20637['DSTgE'],_0x3ed92d[_0x3102('‮256','2K5g')]);console[_0x3102('‮22e','TUqD')](JSON['stringify'](_0x593d75));await _0x3ed92d[_0x3102('‮158','bgvS')](0xbb8);}}else{console[_0x3102('‫257','f52I')](_0x3102('‮258','o@0y'));}}else{console['log']('分享任务已完成');}}else{let _0x34bcc2=setcookie[_0x3102('‮259','oJKr')](_0x53633f=>_0x53633f[_0x3102('‮25a','R%hz')](_0x3102('‫25b','EtQ#'))!==-0x1)[0x0];if(_0x34bcc2&&_0xc20637[_0x3102('‫25c','c[zw')](_0x34bcc2[_0x3102('‮25d','Xxxm')](_0xc20637[_0x3102('‮25e','sdz^')]),-0x1)){_0x3ed92d[_0x3102('‮25f','(uuA')]=_0x34bcc2[_0x3102('‮260','d3gl')](';')&&_0xc20637[_0x3102('‮261','qBje')](_0x34bcc2[_0x3102('‮262','Xxxm')](';')[0x0],';')||'';}let _0x478d33=setcookie['filter'](_0x3efdb2=>_0x3efdb2[_0x3102('‫263','sg)U')](_0x3102('‫b7','sdz^'))!==-0x1)[0x0];if(_0x478d33&&_0xc20637[_0x3102('‮264','sNao')](_0x478d33[_0x3102('‮265','0cn&')]('LZ_TOKEN_KEY='),-0x1)){let _0x57bb7e=_0x478d33[_0x3102('‮266','R%hz')](';')&&_0x478d33[_0x3102('‮267','4q7e')](';')[0x0]||'';_0x3ed92d['LZ_TOKEN_KEY']=_0x57bb7e[_0x3102('‫268','0cn&')](_0xc20637['Xcook'],'');}let _0x436111=setcookie[_0x3102('‫269','J5AU')](_0x5a0e4b=>_0x5a0e4b[_0x3102('‫26a','bZAg')](_0x3102('‫26b','OpYx'))!==-0x1)[0x0];if(_0x436111&&_0x436111[_0x3102('‫26c','sdz^')](_0xc20637[_0x3102('‮26d','#9UC')])>-0x1){let _0x105d05=_0x436111[_0x3102('‫26e','sg)U')](';')&&_0x436111[_0x3102('‫26f','hMf@')](';')[0x0]||'';_0x3ed92d[_0x3102('‫270','J5AU')]=_0x105d05[_0x3102('‫271','COiT')](_0x3102('‫272','XCf('),'');}}}if(_0x3ed92d['activityData'][_0x3102('‫273','COiT')]){if(_0xc20637['dzMwS'](_0x3ed92d[_0x3102('‫162','XCf(')][_0x3102('‫274','vitW')][_0x3102('‮275','3(Uq')],_0x3ed92d[_0x3102('‫234','Li(D')][_0x3102('‮276','3(Uq')][_0x3102('‮277','R%hz')])){if(_0xc20637[_0x3102('‮278','oJKr')](_0xc20637[_0x3102('‮279','OpYx')],_0xc20637[_0x3102('‮27a','oJKr')])){console[_0x3102('‫27b','J5AU')](_0x3102('‫27c','OGYu'));_0x3ed92d[_0x3102('‫27d','n(3f')]=!![];let _0x103167=await _0xc20637[_0x3102('‮27e','COiT')](takePostRequest,_0x3ed92d,_0xc20637[_0x3102('‮27f','4q7e')],_0x3ed92d['body']);console['log'](JSON[_0x3102('‫280','Zt7Z')](_0x103167));await _0x3ed92d['wait'](0xbb8);}else{_0x3ed92d[_0x3102('‫281','sdz^')](e,resp);}}else{if(_0xc20637[_0x3102('‮282','[TKT')](_0xc20637[_0x3102('‫283','oJKr')],_0xc20637[_0x3102('‮284','AqFu')])){console[_0x3102('‫285','0cn&')](_0x3102('‫286','o@0y')+drawDetail[_0x3102('‮287','7epy')]);message+=_0x3ed92d[_0x3102('‫288','k6UV')]+_0x3102('‮289','sdz^')+(drawDetail[_0x3102('‮28a','hMf@')]||'未知')+'\x0a';}else{console[_0x3102('‮23b','hMf@')]('设置活动提醒已完成');}}}if(_0x3ed92d[_0x3102('‫1bc','4IbD')][_0x3102('‫28b','4q7e')]){if(_0x3ed92d[_0x3102('‫237','R%hz')][_0x3102('‫28c','vitW')]['finishedCount']!==_0x3ed92d['activityData'][_0x3102('‫28d','0cn&')]['upLimit']){if(_0xc20637['cKNsy']('bJFZc',_0xc20637['kLxDp'])){console[_0x3102('‮fe','k6UV')](_0x3102('‮28e','[TKT'));_0x3ed92d[_0x3102('‫28f','Li(D')]=!![];let _0x414ad1=await _0xc20637[_0x3102('‮290','1M$7')](takePostRequest,_0x3ed92d,_0x3102('‫291','oJKr'),_0x3ed92d[_0x3102('‮292','OGYu')]);console[_0x3102('‫293','OpYx')](JSON[_0x3102('‫294','oulr')](_0x414ad1));await _0x3ed92d[_0x3102('‮158','bgvS')](0xbb8);}else{data=JSON[_0x3102('‮295','oulr')](data);if(_0xc20637[_0x3102('‫296','EtQ#')](data[_0x3102('‮297','7epy')],!![])){console['log'](_0x3102('‮298','COiT')+(data[_0x3102('‫299','sg)U')][_0x3102('‮29a','0cn&')][_0x3102('‮29b','1M$7')]||''));_0x3ed92d[_0x3102('‮29c','4q7e')]=data[_0x3102('‫29d','$u&N')][_0x3102('‫29e','o@0y')]&&data['result'][_0x3102('‫29e','o@0y')][0x0]&&data[_0x3102('‫29f','COiT')][_0x3102('‫2a0','OGYu')][0x0]['interestsInfo']&&data['result'][_0x3102('‫2a1','c[zw')][0x0]['interestsInfo'][_0x3102('‮2a2','FuOh')]||'';}}}else{if(_0xc20637[_0x3102('‮2a3','o@0y')](_0xc20637[_0x3102('‮2a4','*m2]')],_0xc20637[_0x3102('‮2a5','oulr')])){console[_0x3102('‫2a6','z@TG')](''+JSON['stringify'](err));console[_0x3102('‮2a7','(uuA')](_0x3ed92d['name']+_0x3102('‮2a8','4IbD'));}else{console['log']('逛会场已完成');}}}}function getUrlData(_0x30527b,_0x1ffbc9){var _0x5b3428={'IXLHh':function(_0x1ae4e8,_0x5a9222){return _0x1ae4e8!==_0x5a9222;},'MxFRq':_0x3102('‫2a9','p(IT'),'KCGxg':function(_0x3d6662,_0x697338){return _0x3d6662===_0x697338;},'mrNkf':'aTQZJ','EIYbq':_0x3102('‮2aa','Gi4A'),'CICAB':function(_0x468e21,_0x56b241){return _0x468e21===_0x56b241;},'RKhrl':function(_0x2b697e,_0x482982){return _0x2b697e+_0x482982;}};if(_0x5b3428[_0x3102('‫2ab','J5AU')](typeof URL,'undefined')){if(_0x3102('‫2ac','4IbD')===_0x5b3428['MxFRq']){let _0x5e91ce=new URL(_0x30527b);let _0x125f7a=_0x5e91ce[_0x3102('‫2ad','*m2]')][_0x3102('‫2ae','Li(D')](_0x1ffbc9);return _0x125f7a?_0x125f7a:'';}else{let _0x2b5314=new URL(_0x30527b);let _0x341eaa=_0x2b5314['searchParams']['get'](_0x1ffbc9);return _0x341eaa?_0x341eaa:'';}}else{const _0x5d26c7=_0x30527b[_0x3102('‫2af','[TKT')](/\?.*/)[0x0][_0x3102('‮2b0','sdz^')](0x1);const _0x55d630=_0x5d26c7[_0x3102('‫2b1','1M$7')]('&');for(let _0xc8d89b=0x0;_0xc8d89b<_0x55d630[_0x3102('‫2b2','qBje')];_0xc8d89b++){if(_0x5b3428[_0x3102('‮2b3','(uuA')](_0x5b3428[_0x3102('‫2b4','4IbD')],_0x5b3428[_0x3102('‮2b5','tBOS')])){$[_0x3102('‮133','n(3f')](_0x125f7a[_0x3102('‮2b6','*m2]')]);if(_0x125f7a[_0x3102('‫2b7','vitW')]&&_0x125f7a[_0x3102('‮2b8','sdz^')][_0x3102('‫2b9','Zt7Z')]){for(let _0x541c4e of _0x125f7a[_0x3102('‮187','(uuA')]['giftInfo'][_0x3102('‫2ba','c[zw')]){console[_0x3102('‮2bb','RYmF')](_0x3102('‮2bc','1M$7')+_0x541c4e[_0x3102('‮2bd','(uuA')]+_0x541c4e[_0x3102('‮2be','Gi4A')]+_0x541c4e['secondLineDesc']);}}}else{const _0x45bb27=_0x55d630[_0xc8d89b][_0x3102('‫2bf','z@TG')]('=');if(_0x5b3428['CICAB'](_0x45bb27[0x0],_0x1ffbc9)){return _0x55d630[_0xc8d89b]['substr'](_0x5b3428[_0x3102('‮2c0','Zt7Z')](_0x55d630[_0xc8d89b][_0x3102('‮2c1','o@0y')]('='),0x1));}}}return'';}}async function getToken(_0x266088){var _0x1dca80={'lIbKH':function(_0x258d23,_0x5af71c){return _0x258d23(_0x5af71c);},'xObYG':_0x3102('‫2c2','d3gl'),'NSlFB':_0x3102('‮2c3','dt#Z'),'hYziv':function(_0x1f764c,_0x5ef667){return _0x1f764c===_0x5ef667;},'gDzbg':'RCMKm','EXnJx':'nrWmw','onzow':function(_0x3870ab,_0xccb91d){return _0x3870ab!==_0xccb91d;},'qJtMS':'BcVYX','SjpGD':_0x3102('‮2c4','RYmF'),'BdVpa':'https://api.m.jd.com/client.action?functionId=isvObfuscator','jEBTB':_0x3102('‮2c5','bZAg'),'SfkbY':_0x3102('‮2c6','7epy')};let _0xcf8d6f={'url':_0x1dca80[_0x3102('‮2c7','J%J3')],'body':_0x266088[_0x3102('‮2c8','RYmF')],'headers':{'Host':_0x3102('‫2c9','#9UC'),'accept':_0x1dca80[_0x3102('‫2ca','COiT')],'user-agent':_0x3102('‮2cb','tBOS'),'accept-language':_0x3102('‮2cc','n(3f'),'content-type':_0x1dca80[_0x3102('‮2cd','(uuA')],'Cookie':_0x266088[_0x3102('‮2ce','Li(D')]}};return new Promise(_0x4af005=>{var _0x17438f={'dIcOg':'yu7sDDcldBJVg53L5e1xVvA+83L/sWpkWyh/yXCX0UU=','jwQMn':function(_0x23f996,_0x44e923){return _0x1dca80[_0x3102('‫2cf','o@0y')](_0x23f996,_0x44e923);},'znOvb':_0x3102('‮2d0','sdz^'),'vtduP':_0x1dca80[_0x3102('‮2d1','oJKr')],'mBudz':_0x3102('‮2d2','TUqD'),'nDiua':_0x3102('‮2d3','FuOh'),'GNcla':_0x1dca80['NSlFB'],'ckTJH':function(_0xd4667b,_0x40b4c6){return _0x1dca80['hYziv'](_0xd4667b,_0x40b4c6);},'sVrec':_0x1dca80['gDzbg'],'YIrwk':_0x1dca80[_0x3102('‫2d4','Li(D')],'pOCpk':function(_0x46a2ce,_0x5ac330){return _0x1dca80[_0x3102('‫2d5','1M$7')](_0x46a2ce,_0x5ac330);},'rVhvd':_0x1dca80['qJtMS'],'YZCWP':function(_0x11df4c,_0x196a6e){return _0x11df4c(_0x196a6e);},'sgpzE':_0x1dca80[_0x3102('‫2d6','c[zw')]};_0x266088['post'](_0xcf8d6f,async(_0x255122,_0x4cfe3c,_0x556923)=>{var _0x57a1a5={'BMjuV':_0x3102('‫2d7','Hlgj'),'TXCaT':_0x17438f[_0x3102('‮2d8','1M$7')],'RqLlM':_0x3102('‫2d9','XCf('),'dXyNQ':function(_0x5b5f13,_0x179575){return _0x17438f['jwQMn'](_0x5b5f13,_0x179575);},'IkjNl':_0x3102('‮2da','RYmF'),'gBgTc':_0x17438f['znOvb'],'CSuDY':_0x17438f[_0x3102('‮2db','p(IT')],'CtErS':_0x17438f[_0x3102('‮2dc','qBje')],'errcx':_0x3102('‮2dd','p(IT'),'QoqcD':_0x17438f['nDiua'],'hJkzr':_0x17438f[_0x3102('‫2de','R%hz')]};if(_0x17438f[_0x3102('‫2df','c[zw')](_0x3102('‮2e0','sNao'),_0x17438f['sVrec'])){let _0x4280e0=LZTOKENVALUE['split'](';')&&LZTOKENVALUE[_0x3102('‮2e1','(uuA')](';')[0x0]||'';_0x266088[_0x3102('‫2e2','o@0y')]=_0x4280e0['replace'](_0x57a1a5[_0x3102('‫2e3','J%J3')],'');}else{try{if(_0x255122){console[_0x3102('‮24','tBOS')](''+JSON[_0x3102('‮2e4','Hlgj')](_0x255122));console[_0x3102('‮193','dt#Z')](_0x266088[_0x3102('‫2e5','vitW')]+_0x3102('‮2e6','#9UC'));}else{if(_0x3102('‮2e7','7epy')!==_0x17438f['YIrwk']){_0x556923=JSON[_0x3102('‫2e8','f52I')](_0x556923);}else{let _0x1185f4=+new Date();let _0x16abb3=[_0x57a1a5[_0x3102('‮2e9','tBOS')]];let _0x537abd=_0x16abb3[Math['floor'](Math[_0x3102('‮2ea','J%J3')]()*_0x16abb3[_0x3102('‮8b','Zt7Z')])];let _0x2191f1={'url':'https://api.m.jd.com/?t='+_0x1185f4,'body':_0x3102('‮6d','bgvS')+JSON[_0x3102('‫280','Zt7Z')]({'method':_0x57a1a5['RqLlM'],'data':{'inviterPin':_0x57a1a5[_0x3102('‮2eb','J5AU')](encodeURIComponent,_0x537abd),'channel':0x1,'token':'','frontendInitStatus':''}})+_0x3102('‫2ec','f52I')+_0x1185f4,'headers':{'Host':_0x3102('‮39','3(Uq'),'Accept':_0x57a1a5['IkjNl'],'Content-type':_0x57a1a5[_0x3102('‫2ed','COiT')],'Origin':_0x57a1a5[_0x3102('‫2ee','oJKr')],'Accept-Language':_0x57a1a5[_0x3102('‮2ef','0cn&')],'User-Agent':_0x266088['isNode']()?process[_0x3102('‫1fb','COiT')][_0x3102('‫2f0','oulr')]?process['env']['JS_USER_AGENT']:require(_0x57a1a5['errcx'])[_0x3102('‫2f1','TUqD')]:_0x266088[_0x3102('‫2f2','XCf(')](_0x57a1a5[_0x3102('‮2f3','z@TG')])?_0x266088[_0x3102('‫2f4','TUqD')](_0x3102('‮2f5','n(3f')):_0x3102('‫2f6','#9UC'),'Referer':'https://invite-reward.jd.com/','Accept-Encoding':_0x57a1a5['hJkzr'],'Cookie':cookie}};_0x266088[_0x3102('‮2f7','d3gl')](_0x2191f1,(_0x46b0b6,_0x1198cf,_0x17bb3f)=>{});}}}catch(_0xa689e8){_0x266088[_0x3102('‮2f8','4q7e')](_0xa689e8,_0x4cfe3c);}finally{if(_0x17438f['pOCpk'](_0x17438f[_0x3102('‫2f9','2K5g')],_0x17438f[_0x3102('‫2fa','XCf(')])){console[_0x3102('‫f','*m2]')](_0x3102('‮2fb','#9UC')+activityId+',已过期');}else{_0x17438f[_0x3102('‫2fc','2K5g')](_0x4af005,_0x556923[_0x17438f['sgpzE']]||'');}}}});});}async function getHtml(_0x120e05){var _0x3d6c0f={'OxMVz':'yu7sDDcldBJVg53L5e1xVvA+83L/sWpkWyh/yXCX0UU=','bggij':_0x3102('‫2fd','Hlgj'),'NCYRY':_0x3102('‮2fe','tBOS'),'JwsqO':'application/x-www-form-urlencoded','wWsou':_0x3102('‫2c2','d3gl'),'qrssg':_0x3102('‮2ff','EtQ#'),'CakCB':_0x3102('‮200','4q7e'),'CiSAd':'\x27jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0\x20(iPad;\x20CPU\x20OS\x2014_4\x20like\x20Mac\x20OS\x20X)\x20AppleWebKit/605.1.15\x20(KHTML,\x20like\x20Gecko)\x20Mobile/15E148;supportJDSHWK/1','bLNeg':'https://invite-reward.jd.com/','cSpJz':function(_0x187630){return _0x187630();},'BxWGY':function(_0x110475,_0x5db4a8){return _0x110475(_0x5db4a8);},'SYLcM':function(_0x572cd6,_0x2a69d0){return _0x572cd6===_0x2a69d0;},'QtNeK':_0x3102('‫300','[TKT'),'XnkgF':function(_0x3a355a,_0x100f38){return _0x3a355a!==_0x100f38;},'Qgwqg':_0x3102('‫301','Gi4A'),'dAsFH':_0x3102('‫302','FuOh'),'AtpNU':'keep-alive'};let _0x36f29b={'url':_0x120e05[_0x3102('‫303','J5AU')],'headers':{'Host':_0x120e05[_0x3102('‫304','[TKT')],'Accept':_0x3d6c0f[_0x3102('‫305','p(IT')],'Cookie':'IsvToken='+_0x120e05[_0x3102('‮306','TUqD')]+';'+_0x120e05['cookie'],'User-Agent':_0x120e05['UA'],'Accept-Language':_0x3102('‫307','f52I'),'Accept-Encoding':_0x3d6c0f[_0x3102('‮308','*m2]')],'Connection':_0x3d6c0f[_0x3102('‮309','dt#Z')]}};return new Promise(_0x45c351=>{var _0x134c7c={'MYzgH':function(_0x540ef6){return _0x3d6c0f[_0x3102('‮30a','7epy')](_0x540ef6);},'BSckC':function(_0x69097b,_0x516d8c){return _0x3d6c0f[_0x3102('‮30b','0cn&')](_0x69097b,_0x516d8c);},'HrRry':function(_0x399b04,_0x47890b){return _0x3d6c0f[_0x3102('‫30c','RYmF')](_0x399b04,_0x47890b);},'EpMAg':_0x3d6c0f['QtNeK'],'htbdu':function(_0x515259,_0xa78f51,_0x2548ef){return _0x515259(_0xa78f51,_0x2548ef);},'PNTeE':function(_0x1fcb38,_0x32e8af){return _0x1fcb38!==_0x32e8af;},'nncTK':'PLUMx','hDKHJ':function(_0x3a5d71,_0x18a0f5){return _0x3a5d71(_0x18a0f5);}};if(_0x3d6c0f['XnkgF'](_0x3102('‮30d','J%J3'),'tqcMB')){_0x120e05[_0x3102('‮30e','OpYx')](_0x36f29b,(_0x14c447,_0x2f5c26,_0x264fe3)=>{if(_0x134c7c['HrRry'](_0x134c7c[_0x3102('‫30f','qhO@')],'GyKkx')){_0x134c7c['MYzgH'](doInfo);}else{try{_0x134c7c[_0x3102('‫310','sNao')](dealCK,_0x120e05,_0x2f5c26);}catch(_0xde2d1){if(_0x134c7c[_0x3102('‮311','o@0y')](_0x134c7c[_0x3102('‫312','tBOS')],_0x134c7c[_0x3102('‮313','J5AU')])){_0x134c7c[_0x3102('‮314','FuOh')](_0x45c351,_0x264fe3);}else{_0x120e05['logErr'](_0xde2d1,_0x2f5c26);}}finally{_0x134c7c[_0x3102('‮315','f52I')](_0x45c351,_0x264fe3);}}});}else{let _0x18adee=Date[_0x3102('‮316','1M$7')]();let _0x4f2716=_0x3d6c0f[_0x3102('‮317','k6UV')];var _0x593c58={'Host':_0x3d6c0f[_0x3102('‫318','Li(D')],'accept':_0x3d6c0f[_0x3102('‫319','Zt7Z')],'content-type':_0x3d6c0f[_0x3102('‫31a','#9UC')],'origin':_0x3d6c0f[_0x3102('‮31b','OGYu')],'accept-language':_0x3d6c0f['qrssg'],'user-agent':_0x120e05[_0x3102('‮31c','1M$7')]()?process[_0x3102('‫1fb','COiT')]['JS_USER_AGENT']?process[_0x3102('‮31d','$u&N')][_0x3102('‫31e','4IbD')]:require('./JS_USER_AGENTS')[_0x3102('‫31f','4IbD')]:_0x120e05['getdata'](_0x3d6c0f[_0x3102('‮320','TUqD')])?_0x120e05[_0x3102('‫1ff','0cn&')](_0x3102('‮321','*m2]')):_0x3d6c0f[_0x3102('‫322','OpYx')],'referer':_0x3d6c0f[_0x3102('‮323','o@0y')],'Cookie':thisCookie};var _0x123fb6=_0x3102('‮324','XCf(')+encodeURIComponent(_0x4f2716)+_0x3102('‮325','4IbD')+_0x18adee;var _0x2e7b29={'url':'https://api.m.jd.com/?t='+Date[_0x3102('‮326','J5AU')](),'headers':_0x593c58,'body':_0x123fb6};_0x120e05[_0x3102('‮327','Xxxm')](_0x2e7b29,(_0x440254,_0x3dd84d,_0x43d589)=>{});}});}function dealCK(_0x53e38f,_0x2b6585){var _0x264d55={'vEqef':'token','rQZGD':function(_0x2b14c7,_0x4f1ca8){return _0x2b14c7===_0x4f1ca8;},'pobJm':_0x3102('‫328','R%hz'),'xnkim':_0x3102('‮329','Zt7Z'),'LOaNb':function(_0xa60e23,_0x41b998){return _0xa60e23>_0x41b998;},'RDIRU':'lz_jdpin_token=','sLgPA':function(_0x21c218,_0x1b3c75){return _0x21c218+_0x1b3c75;},'FrEHx':function(_0x512bc1,_0x53026a){return _0x512bc1>_0x53026a;},'OqGjK':'LZ_TOKEN_KEY=','dqSDR':_0x3102('‮32a','o@0y')};if(_0x264d55[_0x3102('‮32b','bZAg')](_0x2b6585,undefined)){return;}let _0x3b6f22=_0x2b6585[_0x264d55[_0x3102('‫32c','bZAg')]][_0x3102('‮32d','2K5g')]||_0x2b6585[_0x264d55[_0x3102('‮32e','*m2]')]][_0x3102('‫32f','4IbD')]||'';if(_0x3b6f22){if(_0x264d55[_0x3102('‫330','4q7e')](_0x264d55[_0x3102('‮331','oJKr')],_0x264d55['xnkim'])){let _0x4f31a8=_0x3b6f22[_0x3102('‫332','bZAg')](_0x3bf95d=>_0x3bf95d[_0x3102('‫333','[TKT')]('lz_jdpin_token')!==-0x1)[0x0];if(_0x4f31a8&&_0x264d55[_0x3102('‫334','2K5g')](_0x4f31a8[_0x3102('‮166','qhO@')](_0x264d55[_0x3102('‮335','#9UC')]),-0x1)){_0x53e38f[_0x3102('‮336','R%hz')]=_0x4f31a8[_0x3102('‫337','EtQ#')](';')&&_0x264d55[_0x3102('‮338','#9UC')](_0x4f31a8[_0x3102('‫339','vitW')](';')[0x0],';')||'';}let _0x18bef9=_0x3b6f22['filter'](_0x22e993=>_0x22e993[_0x3102('‫33a','#9UC')](_0x3102('‫33b','OGYu'))!==-0x1)[0x0];if(_0x18bef9&&_0x264d55[_0x3102('‫33c','*m2]')](_0x18bef9['indexOf'](_0x264d55[_0x3102('‮33d','[TKT')]),-0x1)){let _0x2db698=_0x18bef9['split'](';')&&_0x18bef9[_0x3102('‫33e','#9UC')](';')[0x0]||'';_0x53e38f['LZ_TOKEN_KEY']=_0x2db698['replace'](_0x3102('‫33f','tBOS'),'');}let _0x31d34d=_0x3b6f22['filter'](_0x290f2a=>_0x290f2a['indexOf'](_0x3102('‫340','EtQ#'))!==-0x1)[0x0];if(_0x31d34d&&_0x31d34d['indexOf'](_0x264d55[_0x3102('‮341','sg)U')])>-0x1){let _0x3dc3ac=_0x31d34d['split'](';')&&_0x31d34d[_0x3102('‫342','sNao')](';')[0x0]||'';_0x53e38f['LZ_TOKEN_VALUE']=_0x3dc3ac['replace']('LZ_TOKEN_VALUE=','');}}else{resolve(data[_0x264d55[_0x3102('‫343','tBOS')]]||'');}}}async function takePostRequest(_0xedb1c5,_0x184edd,_0x15c7a4='activityId='+_0xedb1c5[_0x3102('‮344','Li(D')]+'&pin='+encodeURIComponent(_0xedb1c5['pin'])){var _0x11b81f={'nLzLD':function(_0x9fc5b2,_0x55c51f){return _0x9fc5b2+_0x55c51f;},'grpBE':function(_0x30b791,_0x51f6c5,_0x1f3a6d){return _0x30b791(_0x51f6c5,_0x1f3a6d);},'nNOqE':_0x3102('‮345','Xxxm'),'vdukX':function(_0x486fb3,_0x3edf82){return _0x486fb3(_0x3edf82);},'GwAmW':function(_0x2c1471,_0x2fd87c){return _0x2c1471===_0x2fd87c;},'MDlzT':_0x3102('‮346','Li(D'),'mIowS':_0x3102('‫347','oJKr'),'pNlGF':_0x3102('‮348','Xxxm'),'WbHNj':'wxCommonInfo/initActInfo','GwAFY':_0x3102('‮349','#9UC'),'lhnkM':'wxCollectCard/shopInfo','mLIWg':_0x3102('‮34a','bZAg'),'WMkdE':_0x3102('‮34b','OpYx'),'hIBpd':_0x3102('‫34c','Li(D'),'KiSVC':function(_0x391d48,_0x267218){return _0x391d48(_0x267218);},'DuWFa':function(_0x1d76b8,_0x119e9a){return _0x1d76b8(_0x119e9a);},'Sdfha':_0x3102('‮34d','k6UV'),'OJVmT':_0x3102('‫34e','sNao')};let _0x4a96ac='https://'+_0xedb1c5['host']+'/'+_0x184edd;switch(_0x184edd){case _0x11b81f[_0x3102('‫34f','p(IT')]:case _0x11b81f[_0x3102('‫350','hMf@')]:case _0x11b81f['WbHNj']:case _0x11b81f[_0x3102('‫351','COiT')]:case _0x11b81f[_0x3102('‫352','hMf@')]:case _0x3102('‮353','EtQ#'):_0x15c7a4=_0x3102('‮354','TUqD')+_0xedb1c5[_0x3102('‫355','Gi4A')];break;case _0x11b81f[_0x3102('‮356','0cn&')]:_0x15c7a4=_0x3102('‮357','hMf@')+_0xedb1c5[_0x3102('‮358','hMf@')]+'&token='+_0x11b81f[_0x3102('‫359','1M$7')](encodeURIComponent,_0xedb1c5[_0x3102('‮35a','sg)U')])+_0x3102('‫35b','(uuA');break;case _0x11b81f[_0x3102('‮35c','qhO@')]:case _0x11b81f[_0x3102('‮35d','sdz^')]:_0x15c7a4='venderId='+_0xedb1c5['venderId']+_0x3102('‮35e','4q7e')+_0xedb1c5[_0x3102('‮35f','OpYx')]+'&pin='+_0x11b81f[_0x3102('‫360','7epy')](encodeURIComponent,_0xedb1c5[_0x3102('‮361','Zt7Z')])+'&activityId='+_0xedb1c5['activityId']+_0x3102('‫362','2K5g')+_0x11b81f[_0x3102('‫363','7epy')](encodeURIComponent,_0xedb1c5['thisActivityUrl'])+_0x3102('‮364','4IbD');break;case _0x11b81f[_0x3102('‫365','dt#Z')]:_0x15c7a4=_0x3102('‫366','3(Uq')+encodeURIComponent(_0xedb1c5[_0x3102('‮367','J%J3')]);break;case _0x3102('‮368','#9UC'):_0x15c7a4=_0x3102('‫369','J5AU')+_0xedb1c5[_0x3102('‫bc','bZAg')]+_0x3102('‫36a','J5AU')+_0xedb1c5['activityId']+_0x3102('‮36b','4q7e')+encodeURIComponent(_0xedb1c5[_0x3102('‮36c','AqFu')]);break;case _0x3102('‮36d','d3gl'):_0x15c7a4=_0x3102('‮36e','bZAg')+_0xedb1c5[_0x3102('‮36f','#9UC')];break;case _0x11b81f[_0x3102('‮370','Hlgj')]:_0x15c7a4=_0x3102('‫371','4IbD');break;}const _0x31cf31={'X-Requested-With':_0x3102('‮372','[TKT'),'Connection':_0x3102('‫373','4q7e'),'Accept-Encoding':_0x3102('‫374','#9UC'),'Content-Type':'application/x-www-form-urlencoded','Origin':'https://'+_0xedb1c5[_0x3102('‫375','oulr')],'User-Agent':_0xedb1c5['UA'],'Cookie':_0xedb1c5['cookie']+'\x20LZ_TOKEN_KEY='+_0xedb1c5[_0x3102('‮376','Xxxm')]+_0x3102('‮377','sNao')+_0xedb1c5[_0x3102('‮378','qBje')]+_0x3102('‫379','c[zw')+_0xedb1c5[_0x3102('‮37a','qBje')]+';\x20'+_0xedb1c5[_0x3102('‫37b','o@0y')],'Host':_0xedb1c5[_0x3102('‮37c','Hlgj')],'Referer':_0xedb1c5[_0x3102('‫37d','COiT')],'Accept-Language':_0x3102('‮37e','AqFu'),'Accept':'application/json'};let _0x231938={'url':_0x4a96ac,'method':_0x3102('‮37f','oulr'),'headers':_0x31cf31,'body':_0x15c7a4};return new Promise(async _0x4102f0=>{if(_0x11b81f[_0x3102('‮380','$u&N')](_0x3102('‮381','FuOh'),_0x11b81f['MDlzT'])){_0xedb1c5[_0x3102('‮327','Xxxm')](_0x231938,(_0x150450,_0x5ca279,_0x2c21e0)=>{var _0x32c434={'VSYch':function(_0x3aae4b,_0x5e47dd){return _0x11b81f[_0x3102('‮382','R%hz')](_0x3aae4b,_0x5e47dd);}};try{_0x11b81f[_0x3102('‫383','OpYx')](dealCK,_0xedb1c5,_0x5ca279);if(_0x2c21e0){_0x2c21e0=JSON['parse'](_0x2c21e0);}}catch(_0x153b5c){console[_0x3102('‫e4','oulr')](_0x2c21e0);_0xedb1c5[_0x3102('‫384','[TKT')](_0x153b5c,_0x5ca279);}finally{if(_0x11b81f['nNOqE']!==_0x11b81f[_0x3102('‮385','AqFu')]){return vars[i][_0x3102('‫386','OGYu')](_0x32c434[_0x3102('‫387','TUqD')](vars[i][_0x3102('‮388','EtQ#')]('='),0x1));}else{_0x11b81f[_0x3102('‮389','sg)U')](_0x4102f0,_0x2c21e0);}}});}else{_0xedb1c5[_0x3102('‮38a','hMf@')](e,resp);}});}async function join(_0x2f16af){var _0x1201b0={'RHCWW':function(_0x4673e1,_0x33a53d,_0x3689da){return _0x4673e1(_0x33a53d,_0x3689da);},'umhRL':function(_0xbf82ba,_0x334d92){return _0xbf82ba(_0x334d92);},'uDdpW':function(_0x38c2d8,_0x36d67c){return _0x38c2d8===_0x36d67c;},'mSbvu':function(_0x151f18,_0x274bc3){return _0x151f18==_0x274bc3;},'xGNUs':_0x3102('‫38b','4IbD'),'TYzEz':function(_0x54487f,_0x24d134){return _0x54487f==_0x24d134;},'yQcdp':_0x3102('‫38c','bgvS'),'SpQJD':'OricF','eXftD':_0x3102('‫38d','EtQ#'),'Ufbvn':_0x3102('‫38e','J%J3'),'XmbzO':function(_0x28de84,_0x14fec4){return _0x28de84(_0x14fec4);},'NKycZ':function(_0x5d28ea,_0x3ae8ef){return _0x5d28ea===_0x3ae8ef;},'WnSnA':function(_0x594152,_0x3b9fcd){return _0x594152(_0x3b9fcd);},'NWRUo':_0x3102('‮38f','sdz^'),'Roqko':_0x3102('‫390','Zt7Z'),'tuixr':_0x3102('‫391','OGYu'),'Qctld':_0x3102('‫392','tBOS'),'fpFzJ':'application/x-www-form-urlencoded'};_0x2f16af[_0x3102('‮393','f52I')]='';await _0x2f16af[_0x3102('‫394','Gi4A')](0x3e8);await _0x1201b0[_0x3102('‫395','7epy')](getshopactivityId,_0x2f16af);let _0x2b4b3d='';if(_0x2f16af[_0x3102('‫396','sNao')])_0x2b4b3d=_0x3102('‮397','#9UC')+_0x2f16af[_0x3102('‮398','n(3f')];let _0x54ac48={'url':_0x3102('‮399','n(3f')+_0x2f16af[_0x3102('‫39a','4q7e')]+_0x3102('‫39b','3(Uq')+_0x2f16af['venderId']+_0x3102('‫39c','sNao')+_0x2b4b3d+_0x3102('‫39d','RYmF'),'headers':{'Content-Type':_0x1201b0[_0x3102('‮39e','k6UV')],'Origin':_0x1201b0[_0x3102('‫39f','oulr')],'Host':_0x1201b0[_0x3102('‫3a0','dt#Z')],'accept':_0x1201b0['Qctld'],'User-Agent':_0x2f16af['UA'],'content-type':_0x1201b0[_0x3102('‮3a1','4IbD')],'Referer':_0x3102('‮3a2','dt#Z')+_0x2f16af['venderId']+_0x3102('‮3a3','d3gl')+_0x2f16af['venderId'],'Cookie':_0x2f16af['cookie']}};return new Promise(async _0x5b01d1=>{var _0x5f4f12={'nQYgY':function(_0x108cd4,_0x4ca18e){return _0x1201b0[_0x3102('‫3a4','Zt7Z')](_0x108cd4,_0x4ca18e);},'dxDUo':function(_0x3ce091,_0x4c977c){return _0x1201b0[_0x3102('‮3a5','XCf(')](_0x3ce091,_0x4c977c);},'gqSOb':_0x1201b0[_0x3102('‫3a6','*m2]')],'EAqLo':_0x3102('‮3a7','o@0y'),'favvX':function(_0x4d3cc0,_0x48ad83){return _0x1201b0[_0x3102('‮3a8','sg)U')](_0x4d3cc0,_0x48ad83);},'GyPdn':_0x1201b0['yQcdp'],'OrzcH':_0x1201b0['SpQJD'],'XiOMk':_0x1201b0[_0x3102('‫3a9','sg)U')],'xoAwi':_0x1201b0['Ufbvn'],'CDShD':function(_0x1a721e,_0x536acd){return _0x1201b0[_0x3102('‮3aa','(uuA')](_0x1a721e,_0x536acd);}};if(_0x1201b0['NKycZ']('Acmcf',_0x3102('‫3ab','4IbD'))){_0x2f16af[_0x3102('‫3ac','tBOS')](_0x54ac48,async(_0x2f49ce,_0x29a456,_0x2f8f06)=>{try{if(_0x5f4f12['nQYgY'](_0x3102('‮3ad','vitW'),_0x3102('‫3ae','$u&N'))){_0x2f16af[_0x3102('‮3af','2K5g')]=lzjdpintoken['split'](';')&&lzjdpintoken['split'](';')[0x0]+';'||'';}else{_0x2f8f06=JSON[_0x3102('‮3b0','hMf@')](_0x2f8f06);if(_0x5f4f12[_0x3102('‫3b1','Xxxm')](_0x2f8f06['success'],!![])){_0x2f16af[_0x3102('‮150','Hlgj')](_0x2f8f06[_0x3102('‮3b2','0cn&')]);if(_0x2f8f06[_0x3102('‫3b3','oJKr')]&&_0x2f8f06[_0x3102('‮3b4','4q7e')]['giftInfo']){if(_0x3102('‫3b5','Hlgj')!==_0x5f4f12['gqSOb']){for(let _0x302a28 of _0x2f8f06[_0x3102('‫3b6','FuOh')]['giftInfo'][_0x3102('‫3b7','Gi4A')]){if(_0x3102('‮3b8','c[zw')===_0x5f4f12[_0x3102('‮3b9','sg)U')]){console[_0x3102('‮2a7','(uuA')](_0x3102('‫3ba','AqFu'));return;}else{console['log']('入会获得:'+_0x302a28['discountString']+_0x302a28[_0x3102('‫3bb','dt#Z')]+_0x302a28['secondLineDesc']);}}}else{console[_0x3102('‮133','n(3f')]('初始化失败1');return;}}}else if(_0x5f4f12[_0x3102('‮3bc','Gi4A')](_0x2f8f06[_0x3102('‫3bd','vitW')],![])){if(_0x5f4f12[_0x3102('‫3be','3(Uq')]===_0x5f4f12[_0x3102('‮3bf','bgvS')]){for(let _0x30598f of _0x2f8f06[_0x3102('‫3c0','dt#Z')]['giftInfo'][_0x3102('‫3c1','sg)U')]){console[_0x3102('‮150','Hlgj')](_0x3102('‮3c2','d3gl')+_0x30598f[_0x3102('‫3c3','sg)U')]+_0x30598f[_0x3102('‫3c4','2K5g')]+_0x30598f[_0x3102('‫3c5','J%J3')]);}}else{_0x2f16af[_0x3102('‮d','Li(D')](_0x2f8f06[_0x3102('‫3c6','oulr')]);}}}}catch(_0x1a83f8){_0x2f16af['logErr'](_0x1a83f8,_0x29a456);}finally{if(_0x5f4f12['nQYgY'](_0x5f4f12['XiOMk'],_0x5f4f12[_0x3102('‫3c7','Gi4A')])){let _0x1d4fb5=drawInfo[_0x3102('‮da','2K5g')];if(!_0x1d4fb5['drawOk']){console['log'](_0x3102('‫3c8','2K5g'));}else{console[_0x3102('‫3c9','FuOh')](_0x3102('‫3ca','*m2]')+_0x1d4fb5[_0x3102('‫18d','R%hz')]);message+=_0x2f16af['UserName']+_0x3102('‫3cb','oJKr')+(_0x1d4fb5['name']||'未知')+'\x0a';}}else{_0x5f4f12[_0x3102('‮3cc','4q7e')](_0x5b01d1,_0x2f8f06);}}});}else{try{_0x1201b0[_0x3102('‫3cd','4q7e')](dealCK,_0x2f16af,resp);}catch(_0x51bfc3){_0x2f16af[_0x3102('‫3ce','XCf(')](_0x51bfc3,resp);}finally{_0x1201b0[_0x3102('‮3cf','c[zw')](_0x5b01d1,data);}}});}async function getshopactivityId(_0x3d4ef8){var _0x4fd5a4={'eGKsq':function(_0xb45864,_0x115d1a){return _0xb45864==_0x115d1a;},'Kckzk':function(_0x480cd9,_0x36312a){return _0x480cd9!==_0x36312a;},'tLiXr':'qJUin','kGOtl':function(_0x1e050e){return _0x1e050e();},'mxxIq':_0x3102('‮3d0','n(3f'),'XDpne':'api.m.jd.com','fhxng':'application/x-www-form-urlencoded'};let _0x47b97c={'url':'https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=getShopOpenCardInfo&body=%7B%22venderId%22%3A%22'+_0x3d4ef8['venderId']+'%22%2C%22channel%22%3A401%7D&client=H5&clientVersion=9.2.0&uuid=88888','headers':{'Content-Type':_0x4fd5a4[_0x3102('‮3d1','bgvS')],'Origin':'https://api.m.jd.com','Host':_0x4fd5a4[_0x3102('‮3d2','1M$7')],'accept':'*/*','User-Agent':_0x3d4ef8['UA'],'content-type':_0x4fd5a4['fhxng'],'Referer':_0x3102('‫3d3','0cn&')+_0x3d4ef8['venderId']+'&shopId='+_0x3d4ef8[_0x3102('‮3d4','3(Uq')],'Cookie':_0x3d4ef8[_0x3102('‫3d5','J%J3')]}};return new Promise(_0x3d4ab0=>{_0x3d4ef8['get'](_0x47b97c,async(_0xc216be,_0xac7dcb,_0xf4bbe4)=>{try{_0xf4bbe4=JSON[_0x3102('‮3d6','c[zw')](_0xf4bbe4);if(_0x4fd5a4[_0x3102('‫3d7','J%J3')](_0xf4bbe4[_0x3102('‫3d8','Gi4A')],!![])){if(_0x3102('‮3d9','Zt7Z')===_0x3102('‮3da','COiT')){console['log'](_0x3102('‮3db','OGYu')+(_0xf4bbe4['result'][_0x3102('‮3dc','hMf@')][_0x3102('‫3dd','(uuA')]||''));_0x3d4ef8[_0x3102('‫3de','d3gl')]=_0xf4bbe4[_0x3102('‮3df','c[zw')][_0x3102('‫3e0','FuOh')]&&_0xf4bbe4[_0x3102('‮3e1','z@TG')][_0x3102('‮3e2','0cn&')][0x0]&&_0xf4bbe4[_0x3102('‫3e3','qhO@')]['interestsRuleList'][0x0][_0x3102('‮3e4','bZAg')]&&_0xf4bbe4[_0x3102('‮3b4','4q7e')][_0x3102('‫3e5','d3gl')][0x0]['interestsInfo'][_0x3102('‫3e6','3(Uq')]||'';}else{console[_0x3102('‮3e7','qhO@')](_0x3102('‮3e8','3(Uq'));}}}catch(_0x5b0ac4){_0x3d4ef8[_0x3102('‮2f8','4q7e')](_0x5b0ac4,_0xac7dcb);}finally{if(_0x4fd5a4[_0x3102('‮3e9','z@TG')](_0x4fd5a4['tLiXr'],_0x4fd5a4[_0x3102('‫3ea','3(Uq')])){console[_0x3102('‫240','J%J3')](_0x3102('‮3eb','4q7e'));}else{_0x4fd5a4[_0x3102('‫3ec','hMf@')](_0x3d4ab0);}}});});};_0xody='jsjiami.com.v6'; -// prettier-ignore -function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} - diff --git a/jd_jrmx.py b/jd_jrmx.py new file mode 100644 index 0000000..6310954 --- /dev/null +++ b/jd_jrmx.py @@ -0,0 +1,273 @@ +# -*- coding:utf-8 -*- +#依赖管理-Python3-添加依赖PyExecJS +#依赖安装:进入容器执行:pip3 install PyExecJS +#想拿券的cookie环境变量JDJR_COOKIE,格式就是普通的cookie格式(pt_key=xxx;pt_pin=xxx) +#活动每天早上10点开始截止到这个月28号,建议corn 5 0 10 * * * + +""" +cron: 5 0 10 * * * +new Env('京东金融分享助力'); +""" + +import execjs +import requests +import json +import time +import os +import re +import sys +import random +import string +import urllib +from urllib.parse import quote + + +#以下部分参考Curtin的脚本:https://github.com/curtinlv/JD-Script + + +def randomuserAgent(): + global uuid,addressid,iosVer,iosV,clientVersion,iPhone,ADID,area,lng,lat + + uuid=''.join(random.sample(['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','a','b','c','z'], 40)) + addressid = ''.join(random.sample('1234567898647', 10)) + iosVer = ''.join(random.sample(["15.1.1","14.5.1", "14.4", "14.3", "14.2", "14.1", "14.0.1"], 1)) + iosV = iosVer.replace('.', '_') + clientVersion=''.join(random.sample(["10.3.0", "10.2.7", "10.2.4"], 1)) + iPhone = ''.join(random.sample(["8", "9", "10", "11", "12", "13"], 1)) + ADID = ''.join(random.sample('0987654321ABCDEF', 8)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 12)) + + + area=''.join(random.sample('0123456789', 2)) + '_' + ''.join(random.sample('0123456789', 4)) + '_' + ''.join(random.sample('0123456789', 5)) + '_' + ''.join(random.sample('0123456789', 4)) + lng='119.31991256596'+str(random.randint(100,999)) + lat='26.1187118976'+str(random.randint(100,999)) + + + UserAgent='' + if not UserAgent: + return f'jdapp;iPhone;10.0.4;{iosVer};{uuid};network/wifi;ADID/{ADID};model/iPhone{iPhone},1;addressid/{addressid};appBuild/167707;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS {iosV} like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/null;supportJDSHWK/1' + else: + return UserAgent + +#以上部分参考Curtin的脚本:https://github.com/curtinlv/JD-Script + + +def printf(text): + print(text+'\n') + sys.stdout.flush() + + +def load_send(): + global send + cur_path = os.path.abspath(os.path.dirname(__file__)) + sys.path.append(cur_path) + if os.path.exists(cur_path + "/sendNotify.py"): + try: + from sendNotify import send + except: + send=False + printf("加载通知服务失败~") + else: + send=False + printf("加载通知服务失败~") +load_send() + + + +def get_remarkinfo(): + url='http://127.0.0.1:5600/api/envs' + try: + with open('/ql/config/auth.json', 'r') as f: + token=json.loads(f.read())['token'] + headers={ + 'Accept':'application/json', + 'authorization':'Bearer '+token, + } + response=requests.get(url=url,headers=headers) + + for i in range(len(json.loads(response.text)['data'])): + if json.loads(response.text)['data'][i]['name']=='JD_COOKIE': + try: + if json.loads(response.text)['data'][i]['remarks'].find('@@')==-1: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].replace('remark=','') + else: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].split("@@")[0].replace('remark=','').replace(';','') + except: + pass + except: + printf('读取auth.json文件出错,跳过获取备注') + + +def JDSignValidator(url): + with open('JDJRSignValidator.js', 'r', encoding='utf-8') as f: + jstext = f.read() + ctx = execjs.compile(jstext) + result = ctx.call('getBody', url) + fp=result['fp'] + a=result['a'] + d=result['d'] + return fp,a,d + + +def geteid(a,d): + url=f'https://gia.jd.com/fcf.html?a={a}' + data=f'&d={d}' + headers={ + 'Host':'gia.jd.com', + 'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8', + 'Origin':'https://jrmkt.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Connection':'keep-alive', + 'Accept':'*/*', + 'User-Agent':UserAgent, + 'Referer':'https://jrmkt.jd.com/', + 'Content-Length':'376', + 'Accept-Language':'zh-CN,zh-Hans;q=0.9', + } + response=requests.post(url=url,headers=headers,data=data) + return response.text + + + +def gettoken(): + url='https://gia.jd.com/m.html' + headers={'User-Agent':UserAgent} + response=requests.get(url=url,headers=headers) + return response.text.split(';')[0].replace('var jd_risk_token_id = \'','').replace('\'','') + + +def getsharetasklist(ck,eid,fp,token): + url='https://ms.jr.jd.com/gw/generic/bt/h5/m/getShareTaskList' + data='reqData='+quote('{"extMap":{"eid":"%s","fp":"%s","sdkToken":"","token":"%s","appType":"1","pageUrl":"https://btfront.jd.com/release/shareCouponRedemption/helpList/?channelId=17&channelName=pdy&jrcontainer=h5&jrlogin=true&jrcloseweb=false"},"channelId":"17","bizGroup":18}'%(eid,fp,token)) + headers={ + 'Host':'ms.jr.jd.com', + 'Content-Type':'application/x-www-form-urlencoded', + 'Origin':'https://btfront.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Cookie':ck, + 'Connection':'keep-alive', + 'Accept':'application/json, text/plain, */*', + 'User-Agent':UserAgent, + 'Referer':'https://btfront.jd.com/', + 'Content-Length':str(len(data)), + 'Accept-Language':'zh-CN,zh-Hans;q=0.9' + } + try: + response=requests.post(url=url,headers=headers,data=data) + for i in range(len(json.loads(response.text)['resultData']['data'])): + if json.loads(response.text)['resultData']['data'][i]['couponBigWord']=='12' and json.loads(response.text)['resultData']['data'][i]['couponSmallWord']=='期': + printf('12期免息券活动id:'+str(json.loads(response.text)['resultData']['data'][i]['activityId'])) + return json.loads(response.text)['resultData']['data'][i]['activityId'] + break + except: + printf('获取任务信息出错,程序即将退出!') + os._exit(0) + + + +def obtainsharetask(ck,eid,fp,token,activityid): + url='https://ms.jr.jd.com/gw/generic/bt/h5/m/obtainShareTask' + data='reqData='+quote('{"extMap":{"eid":"%s","fp":"%s","sdkToken":"","token":"%s","appType":"1","pageUrl":"https://btfront.jd.com/release/shareCouponRedemption/helpList/?channelId=17&channelName=pdy&jrcontainer=h5&jrlogin=true&jrcloseweb=false"},"activityId":%s}'%(eid,fp,token,activityid)) + headers={ + 'Host':'ms.jr.jd.com', + 'Content-Type':'application/x-www-form-urlencoded', + 'Origin':'https://btfront.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Cookie':ck, + 'Connection':'keep-alive', + 'Accept':'application/json, text/plain, */*', + 'User-Agent':UserAgent, + 'Referer':'https://btfront.jd.com/', + 'Content-Length':str(len(data)), + 'Accept-Language':'zh-CN,zh-Hans;q=0.9' + } + try: + response=requests.post(url=url,headers=headers,data=data) + printf('obtainActivityId:'+json.loads(response.text)['resultData']['data']['obtainActivityId']) + printf('inviteCode:'+json.loads(response.text)['resultData']['data']['inviteCode']) + return json.loads(response.text)['resultData']['data']['obtainActivityId']+'@'+json.loads(response.text)['resultData']['data']['inviteCode'] + except: + printf('开启任务出错,程序即将退出!') + os._exit(0) + + +def assist(ck,eid,fp,token,obtainActivityid,invitecode): + url='https://ms.jr.jd.com/gw/generic/bt/h5/m/helpFriend' + data='reqData='+quote('{"extMap":{"eid":"%s","fp":"%s","sdkToken":"","token":"%s","appType":"10","pageUrl":"https://btfront.jd.com/release/shareCouponRedemption/sharePage/?obtainActivityId=%s&channelId=17&channelName=pdy&jrcontainer=h5&jrcloseweb=false&jrlogin=true&inviteCode=%s"},"obtainActivityId":"%s","inviteCode":"%s"}'%(eid,fp,token,obtainActivityid,invitecode,obtainActivityid,invitecode)) + headers={ + 'Host':'ms.jr.jd.com', + 'Content-Type':'application/x-www-form-urlencoded', + 'Origin':'https://btfront.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Cookie':ck, + 'Connection':'keep-alive', + 'Accept':'application/json, text/plain, */*', + 'User-Agent':UserAgent, + 'Referer':'https://btfront.jd.com/', + 'Content-Length':str(len(data)), + 'Accept-Language':'zh-CN,zh-Hans;q=0.9' + } + try: + response=requests.post(url=url,headers=headers,data=data) + if response.text.find('本次助力活动已完成')!=-1: + send('京东白条12期免息优惠券助力完成','去京东金融-白条-我的-我的优惠券看看吧') + printf('助力完成,程序即将退出!') + os._exit(0) + else: + if json.loads(response.text)['resultData']['result']['code']=='0000': + printf('助力成功') + elif json.loads(response.text)['resultData']['result']['code']=='M1003': + printf('该用户未开启白条,助力失败!') + elif json.loads(response.text)['resultData']['result']['code']=='U0002': + printf('该用户白条账户异常,助力失败!') + elif json.loads(response.text)['resultData']['result']['code']=='E0004': + printf('该活动仅限受邀用户参与,助力失败!') + else: + print(response.text) + except: + try: + print(response.text) + except: + printf('助力出错,可能是cookie过期了') + + + +if __name__ == '__main__': + remarkinfos={} + get_remarkinfo() + + + jdjrcookie=os.environ["JDJR_COOKIE"] + + UserAgent=randomuserAgent() + info=JDSignValidator('https://jrmfp.jr.jd.com/') + eid=json.loads(geteid(info[1],info[2]).split('_*')[1])['eid'] + fp=info[0] + token=gettoken() + activityid=getsharetasklist(jdjrcookie,eid,fp,token) + inviteinfo=obtainsharetask(jdjrcookie,eid,fp,token,activityid) + + + try: + cks = os.environ["JD_COOKIE"].split("&") + except: + f = open("/jd/config/config.sh", "r", encoding='utf-8') + cks = re.findall(r'Cookie[0-9]*="(pt_key=.*?;pt_pin=.*?;)"', f.read()) + f.close() + for ck in cks: + ptpin = re.findall(r"pt_pin=(.*?);", ck)[0] + try: + if remarkinfos[ptpin]!='': + printf("--账号:" + remarkinfos[ptpin] + "--") + username=remarkinfos[ptpin] + else: + printf("--无备注账号:" + urllib.parse.unquote(ptpin) + "--") + username=urllib.parse.unquote(ptpin) + except: + printf("--账号:" + urllib.parse.unquote(ptpin) + "--") + username=urllib.parse.unquote(ptpin) + UserAgent=randomuserAgent() + info=JDSignValidator('https://jrmfp.jr.jd.com/') + eid=json.loads(geteid(info[1],info[2]).split('_*')[1])['eid'] + fp=info[0] + token=gettoken() + assist(ck,eid,fp,token,inviteinfo.split('@')[0],inviteinfo.split('@')[1]) diff --git a/jd_jxlhb.js b/jd_jxlhb.js new file mode 100644 index 0000000..0fa5c67 --- /dev/null +++ b/jd_jxlhb.js @@ -0,0 +1,529 @@ +/* +京喜领88元红包 +活动入口:京喜app-》我的-》京喜领88元红包 +助力逻辑:先自己京东账号相互助力,如有剩余助力机会,则助力作者 +温馨提示:如提示助力火爆,可尝试寻找京东客服 +脚本兼容: Quantumult X, Surge, Loon, JSBox, Node.js +==============Quantumult X============== +[task_local] +#京喜领88元红包 +4 2,10 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_jxlhb.js, tag=京喜领88元红包, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +==============Loon============== +[Script] +cron "4 2,10 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_jxlhb.js,tag=京喜领88元红包 + +================Surge=============== +京喜领88元红包 = type=cron,cronexp="4 2,10 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_jxlhb.js + +===============小火箭========== +京喜领88元红包 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_jxlhb.js, cronexpr="4 2,10 * * *", timeout=3600, enable=true + */ +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t +}); +const $ = new Env('京喜领88元红包'); +const notify = $.isNode() ? require('./sendNotify') : {}; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : {}; +let cookiesArr = [], cookie = ''; +let UA, UAInfo = {}, codeInfo = {}, token; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +$.packetIdArr = []; +$.activeId = '529439'; +const BASE_URL = 'https://m.jingxi.com/cubeactive/steprewardv3' +$.appId = "e395f" +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + let res = await getAuthorShareCode('https://raw.githubusercontent.com/Aaron-lv/updateTeam/master/shareCodes/jxhb.json') + if (!res) { + $.http.get({url: 'https://purge.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/jxhb.json'}).then((resp) => {}).catch((e) => $.log('刷新CDN异常', e)); + await $.wait(1000) + res = await getAuthorShareCode('https://cdn.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/jxhb.json') + } + if (res && res.activeId) $.activeId = res.activeId; + $.authorMyShareIds = [...((res && res.codes) || [])]; + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + await requestAlgo() + await $.wait(1000) + //开启红包,获取互助码 + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true + $.nickName = '' + UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + UAInfo[$.UserName] = UA + await TotalBean(); + console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + token = await getJxToken() + await main(); + } + //互助 + console.log(`\n自己京东账号助力码:\n${JSON.stringify($.packetIdArr)}\n`); + console.log(`\n开始助力:助力逻辑 先自己京东相互助力,如有剩余助力机会,则助力作者\n`) + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.canHelp = true; + UA = UAInfo[$.UserName] + token = await getJxToken() + for (let j = 0; j < $.packetIdArr.length && $.canHelp; j++) { + console.log(`【${$.UserName}】去助力【${$.packetIdArr[j].userName}】邀请码:${$.packetIdArr[j].strUserPin}`); + if ($.UserName === $.packetIdArr[j].userName) { + console.log(`助力失败:不能助力自己`) + continue + } + $.max = false; + await enrollFriend($.packetIdArr[j].strUserPin); + await $.wait(5000); + if ($.max) { + $.packetIdArr.splice(j, 1) + j-- + continue + } + } + if ($.canHelp && ($.authorMyShareIds && $.authorMyShareIds.length)) { + console.log(`\n【${$.UserName}】有剩余助力机会,开始助力作者\n`) + for (let j = 0; j < $.authorMyShareIds.length && $.canHelp; j++) { + console.log(`【${$.UserName}】去助力作者的邀请码:${$.authorMyShareIds[j]}`); + $.max = false; + await enrollFriend($.authorMyShareIds[j]); + await $.wait(5000); + if ($.max) { + $.authorMyShareIds.splice(j, 1) + j-- + continue + } + } + } + } + //拆红包 + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + $.canOpenGrade = true; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + UA = UAInfo[$.UserName] + token = await getJxToken() + for (let grade of $.grades) { + if (!codeInfo[$.UserName]) continue; + console.log(`\n【${$.UserName}】去拆第${grade}个红包`); + await openRedPack(codeInfo[$.UserName], grade); + if (!$.canOpenGrade) break + await $.wait(15000); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function main() { + await joinActive(); + await $.wait(2000); + await getUserInfo(); +} +//参与活动 +function joinActive() { + return new Promise(resolve => { + $.get(taskurl('JoinActive', `stepreward_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&strPin=`), (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + console.log(`活动开启成功\n`); + } else { + console.log(`活动开启失败:${data.sErrMsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +//获取助力码 +function getUserInfo() { + return new Promise(resolve => { + $.get(taskurl('GetUserInfo'), (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + $.grades = [] + $.helpNum = '' + let grades = data.Data.gradeConfig + for(let key of Object.keys(grades)){ + let vo = grades[key] + $.grades.push(vo.dwGrade) + $.helpNum = vo.dwHelpTimes + } + if (data.Data.dwHelpedTimes === $.helpNum) { + console.log(`${$.grades[$.grades.length - 1]}个阶梯红包已全部拆完\n`) + } else { + console.log(`获取助力码成功:${data.Data.strUserPin}\n`); + if (data.Data.strUserPin) { + $.packetIdArr.push({ + strUserPin: data.Data.strUserPin, + userName: $.UserName + }) + } + } + if (data.Data.strUserPin) { + codeInfo[$.UserName] = data.Data.strUserPin + } + } else { + console.log(`获取助力码失败:${data.sErrMsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +//助力好友 +function enrollFriend(strPin) { + return new Promise(resolve => { + $.get(taskurl('EnrollFriend', `stepreward_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&strPin=${strPin}`), (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.log(JSON.stringify(err)); + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + console.log(`助力成功🎉:${data.sErrMsg}\n`); + } else { + if (data.iRet === 2000) $.canHelp = false;//未登录 + if (data.iRet === 2015) $.canHelp = false;//助力已达上限 + if (data.iRet === 2016) { + $.canHelp = false;//助力火爆 + console.log(`温馨提示:如提示助力火爆,可尝试寻找京东客服`); + } + if (data.iRet === 2013 || data.iRet === 2011) $.max = true; + console.log(`助力失败:${data.sErrMsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function openRedPack(strPin, grade) { + return new Promise(resolve => { + $.get(taskurl('DoGradeDraw', `grade=${grade}`), (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + console.log(`拆红包成功:${data.sErrMsg}\n`); + } else { + if (data.iRet === 2017) $.canOpenGrade = false; + console.log(`拆红包失败:${data.sErrMsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +function getAuthorShareCode(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + resolve(JSON.parse(data)) + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(); + } + }) + await $.wait(10000) + resolve(); + }) +} + +function taskurl(function_path, body = '') { + let url = `${BASE_URL}/${function_path}?activeId=${$.activeId}${body ? `&${body}` : ''}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&userDraw=0&publishFlag=1&channel=7&_t=${Date.now()}&_=${Date.now()}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + return { + url, + headers: { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": UA, + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://st.jingxi.com/", + "Cookie": cookie + } + } +} +function getStk(url) { + let arr = url.split('&').map(x => x.replace(/.*\?/, "").replace(/=.*/, "")) + return encodeURIComponent(arr.filter(x => x).sort().join(',')) +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function TotalBean() { + return new Promise(resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + "Host": "me-api.jd.com", + "Accept": "*/*", + "User-Agent": "ScriptableWidgetExtension/185 CFNetwork/1312 Darwin/21.0.0", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Cookie": cookie + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve() + } + }) + }) +} +/* +修改时间戳转换函数,京喜工厂原版修改 + */ +Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "3.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + return new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data); + data = JSON.parse(data); + if (data['status'] === 200) { + $.token = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + // console.log(`获取签名参数成功!`) + // console.log(`fp: ${$.fingerprint}`) + // console.log(`token: ${$.token}`) + // console.log(`enCryptMethodJD: ${enCryptMethodJDString}`) + } else { + console.log('request_algo 签名参数API请求失败:') + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function decrypt(time, stk, type, url) { + stk = stk || (url ? getUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.token && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.token, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.token}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.token).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length -1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + // console.log(`\nst:${st}`) + // console.log(`h5st:${["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat($.appId.toString()), "".concat(token), "".concat(hash2)].join(";")}\n`) + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2), "".concat("3.0"), "".concat(Date.now() + 2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +/** + * 获取url参数值 + * @param url + * @param name + * @returns {string} + */ +function getUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + // return pair[1]; + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} +/** + * 模拟生成 fingerprint + * @returns {string} + */ +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--; ) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0,16) +} +var _0xod8='jsjiami.com.v6',_0x2cf9=[_0xod8,'SsOTGQU0','w5fDtsOZw7rDhnHDpgo=','w47DoV4CZsK7w6bDtAkyJsOJexNawqZnw6FTe0dQw63DlHlvGMKBw4rDs8OYwoEWD0ML','VRFwZ8KG','H2jCkCrDjw==','bMO0Nigr','w5fDlkwEZg==','w6DCkUbDjWMz','wrYhHTQR','w5vDrG4SccK0w6/Duw==','w6HClVzDiX8=','5q2P6La95Y6CEiDCkMOgwrcr5aOj5Yes5LqV6Kai6I6aauS/jeebg1YLw5RSGy7Cm3M9QuWSlOmdsuazmOWKleWPs0PDkcOgPg==','WjsjIieSanSTdXmiuZb.EncDom.v6=='];(function(_0x30e78a,_0x12a1c3,_0x4ca71c){var _0x40a26e=function(_0x59c439,_0x435a06,_0x70e6be,_0x39d363,_0x31edda){_0x435a06=_0x435a06>>0x8,_0x31edda='po';var _0x255309='shift',_0x4aba1a='push';if(_0x435a06<_0x59c439){while(--_0x59c439){_0x39d363=_0x30e78a[_0x255309]();if(_0x435a06===_0x59c439){_0x435a06=_0x39d363;_0x70e6be=_0x30e78a[_0x31edda+'p']();}else if(_0x435a06&&_0x70e6be['replace'](/[WIeSnSTdXuZbEnD=]/g,'')===_0x435a06){_0x30e78a[_0x4aba1a](_0x39d363);}}_0x30e78a[_0x4aba1a](_0x30e78a[_0x255309]());}return 0x8dbb4;};return _0x40a26e(++_0x12a1c3,_0x4ca71c)>>_0x12a1c3^_0x4ca71c;}(_0x2cf9,0x6e,0x6e00));var _0x5108=function(_0x4dc255,_0x3cb8bc){_0x4dc255=~~'0x'['concat'](_0x4dc255);var _0x2e664b=_0x2cf9[_0x4dc255];if(_0x5108['xFLNEr']===undefined){(function(){var _0xfc2aa4=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x26458d='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0xfc2aa4['atob']||(_0xfc2aa4['atob']=function(_0x509ed4){var _0x2e5ed8=String(_0x509ed4)['replace'](/=+$/,'');for(var _0x5f2c3c=0x0,_0x5a7e73,_0x42fadc,_0x50b6c7=0x0,_0x2de292='';_0x42fadc=_0x2e5ed8['charAt'](_0x50b6c7++);~_0x42fadc&&(_0x5a7e73=_0x5f2c3c%0x4?_0x5a7e73*0x40+_0x42fadc:_0x42fadc,_0x5f2c3c++%0x4)?_0x2de292+=String['fromCharCode'](0xff&_0x5a7e73>>(-0x2*_0x5f2c3c&0x6)):0x0){_0x42fadc=_0x26458d['indexOf'](_0x42fadc);}return _0x2de292;});}());var _0x503f7f=function(_0x517424,_0x3cb8bc){var _0x5bb1d7=[],_0x204abf=0x0,_0x50c70e,_0x376d53='',_0x19ba11='';_0x517424=atob(_0x517424);for(var _0x2212a4=0x0,_0x34e1ad=_0x517424['length'];_0x2212a4<_0x34e1ad;_0x2212a4++){_0x19ba11+='%'+('00'+_0x517424['charCodeAt'](_0x2212a4)['toString'](0x10))['slice'](-0x2);}_0x517424=decodeURIComponent(_0x19ba11);for(var _0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x5bb1d7[_0x5372ab]=_0x5372ab;}for(_0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab]+_0x3cb8bc['charCodeAt'](_0x5372ab%_0x3cb8bc['length']))%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;}_0x5372ab=0x0;_0x204abf=0x0;for(var _0x30875f=0x0;_0x30875f<_0x517424['length'];_0x30875f++){_0x5372ab=(_0x5372ab+0x1)%0x100;_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab])%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;_0x376d53+=String['fromCharCode'](_0x517424['charCodeAt'](_0x30875f)^_0x5bb1d7[(_0x5bb1d7[_0x5372ab]+_0x5bb1d7[_0x204abf])%0x100]);}return _0x376d53;};_0x5108['NgRmMn']=_0x503f7f;_0x5108['CiKmfm']={};_0x5108['xFLNEr']=!![];}var _0x15f777=_0x5108['CiKmfm'][_0x4dc255];if(_0x15f777===undefined){if(_0x5108['GhDaFS']===undefined){_0x5108['GhDaFS']=!![];}_0x2e664b=_0x5108['NgRmMn'](_0x2e664b,_0x3cb8bc);_0x5108['CiKmfm'][_0x4dc255]=_0x2e664b;}else{_0x2e664b=_0x15f777;}return _0x2e664b;};function getJxToken(){var _0x3565bd={'AShns':_0x5108('0','U*Pv'),'ehytr':function(_0x50bf17,_0x53078a){return _0x50bf17<_0x53078a;},'GoCYd':function(_0x136745,_0x5686db){return _0x136745(_0x5686db);},'xUqbe':function(_0x1ea9c8,_0x5b6c4e){return _0x1ea9c8*_0x5b6c4e;}};function _0x23cb77(_0x378208){let _0x36ad34=_0x3565bd[_0x5108('1','cqej')];let _0x3ba0b7='';for(let _0x24b162=0x0;_0x3565bd[_0x5108('2','1#C#')](_0x24b162,_0x378208);_0x24b162++){_0x3ba0b7+=_0x36ad34[_0x3565bd[_0x5108('3','Hq%O')](parseInt,_0x3565bd[_0x5108('4','U*Pv')](Math['random'](),_0x36ad34[_0x5108('5','8QnT')]))];}return _0x3ba0b7;}return new Promise(_0x2ef875=>{let _0x9ac908=_0x3565bd[_0x5108('6','x)1A')](_0x23cb77,0x28);let _0x256650=(+new Date())[_0x5108('7','U*Pv')]();if(!cookie[_0x5108('8','8QnT')](/pt_pin=([^; ]+)(?=;?)/)){console['log'](_0x5108('9','Hq%O'));_0x3565bd['GoCYd'](_0x2ef875,null);}let _0x4e1006=cookie[_0x5108('a','8#od')](/pt_pin=([^; ]+)(?=;?)/)[0x1];let _0x57bff6=$['md5'](''+decodeURIComponent(_0x4e1006)+_0x256650+_0x9ac908+'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy')[_0x5108('b',']OsH')]();_0x3565bd['GoCYd'](_0x2ef875,{'timestamp':_0x256650,'phoneid':_0x9ac908,'farm_jstoken':_0x57bff6});});};_0xod8='jsjiami.com.v6'; +!function(n){"use strict";function t(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function r(n,t){return n<>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<>>9<<4)]=r;var e,i,a,d,h,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255);return r}function d(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(d(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="";for(r=0;r>>4&15)+"0123456789abcdef".charAt(15&t);return e}function v(n){return unescape(encodeURIComponent(n))}function m(n){return h(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}$.md5=A}(this); +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_m_sign.js b/jd_m_sign.js index ebcd994..322c1c1 100644 --- a/jd_m_sign.js +++ b/jd_m_sign.js @@ -6,7 +6,7 @@ =========================== [task_local] #京东通天塔--签到 -3 0 * * * jd_m_sign.js, tag=京东通天塔--签到, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +3 1,11 * * * jd_m_sign.js, tag=京东通天塔--签到, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true */ const $ = new Env('京东通天塔--签到'); @@ -64,14 +64,18 @@ async function jdsign() { try { console.log(`签到开始........`) await getInfo("https://pro.m.jd.com/mall/active/3S28janPLYmtFxypu37AYAGgivfp/index.html");//拍拍二手签到 - await $.wait(1000) - await getInfo("https://pro.m.jd.com/mall/active/4QjXVcRyTcRaLPaU6z2e3Sw1QzWE/index.html");//全城购签到 - await $.wait(1000) - await getInfo("https://prodev.m.jd.com/mall/active/3MFSkPGCDZrP2WPKBRZdiKm9AZ7D/index.html");//同城签到 - await $.wait(1000) + await $.wait(2000) await getInfo("https://pro.m.jd.com/mall/active/kPM3Xedz1PBiGQjY4ZYGmeVvrts/index.html");//陪伴 - await $.wait(1000) + await $.wait(2000) await getInfo("https://pro.m.jd.com/mall/active/3SC6rw5iBg66qrXPGmZMqFDwcyXi/index.html");//京东图书 + await $.wait(2000) + await getInfo("https://prodev.m.jd.com/mall/active/412SRRXnKE1Q4Y6uJRWVT6XhyseG/index.html");//京东服装 +// await getInfo("https://pro.m.jd.com/mall/active/ZrH7gGAcEkY2gH8wXqyAPoQgk6t/index.html");//箱包签到 +// await $.wait(1000) +// await getInfo("https://pro.m.jd.com/mall/active/4RXyb1W4Y986LJW8ToqMK14BdTD/index.html");//鞋靴馆签到 + +// await $.wait(1000) +// await getInfo("https://pro.m.jd.com/mall/active/3joSPpr7RgdHMbcuqoRQ8HbcPo9U/index.html");//生活特权签到 } catch (e) { $.logErr(e) } diff --git a/jd_nzmh.js b/jd_nzmh.js index acd133d..13dd88c 100644 --- a/jd_nzmh.js +++ b/jd_nzmh.js @@ -1,22 +1,35 @@ /* -#女装盲盒抽京豆任务,自行加入一下环境变量 -export jd_nzmhurl="https://anmp.jd.com/babelDiy/Zeus/2x36jyruNVDWxUiAiGAgHRrkqVX2/index.html" +女装盲盒 +活动时间:2021-3-1至2021-3-31 +活动地址:https://anmp.jd.com/babelDiy/Zeus/3z12ngsd27UR1KfRqdMrMSSg3uxg/index.html +活动入口:京东app-女装馆-赢京豆 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#女装盲盒 +35 1,23 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_nzmh.js, tag=女装盲盒, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true -cron 35 1,23 * * * +================Loon============== +[Script] +cron "35 1,23 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_nzmh.js,tag=女装盲盒 + +===============Surge================= +女装盲盒 = type=cron,cronexp="35 1,23 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_nzmh.js + +============小火箭========= +女装盲盒 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_nzmh.js, cronexpr="35 1,23 * * *", timeout=3600, enable=true */ - const $ = new Env('女装盲盒抽京豆'); const notify = $.isNode() ? require('./sendNotify') : ''; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; //Node.js用户请在jdCookie.js处填写京东ck; //IOS等用户直接用NobyDa的jd cookie -let cookiesArr = [], cookie = '', message = '', allMessage = ''; -let jd_nzmhurl = 'https://anmp.jd.com/babelDiy/Zeus/3ZHWXfEDpu5GyX1BgCEN3qQwrC4K/index.html'; +let cookiesArr = [], cookie = '', message; if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]) }) - if (process.env.jd_nzmhurl) jd_nzmhurl = process.env.jd_nzmhurl if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; } else { cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); @@ -26,11 +39,9 @@ if ($.isNode()) { $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); return; } - if (!jd_nzmhurl) { - $.log(`暂时没有女装盲盒,改日再来~`); - return; - } - console.log(`新的女装盲盒已经准备好: ${jd_nzmhurl},准备开始薅豆`); + console.log('女装盲盒\n' + + '活动时间:2021-3-1至2021-3-31\n' + + '活动地址:https://anmp.jd.com/babelDiy/Zeus/3z12ngsd27UR1KfRqdMrMSSg3uxg/index.html'); for (let i = 0; i < cookiesArr.length; i++) { if (cookiesArr[i]) { cookie = cookiesArr[i]; @@ -50,16 +61,12 @@ if ($.isNode()) { continue } try { - await jdMh(jd_nzmhurl) + await jdMh('https://anmp.jd.com/babelDiy/Zeus/3z12ngsd27UR1KfRqdMrMSSg3uxg/index.html') } catch (e) { $.logErr(e) } } } - if (allMessage) { - if ($.isNode()) await notify.sendNotify(`${$.name}`, `${allMessage}`); - $.msg($.name, '', allMessage); - } })() .catch((e) => { $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') @@ -88,7 +95,6 @@ function showMsg() { return new Promise(resolve => { if ($.beans) { message += `本次运行获得${$.beans}京豆` - allMessage += `京东账号${$.index}${$.nickName}获得${$.beans}京豆\n` $.msg($.name, '', `京东账号${$.index}${$.nickName}\n${message}`); } resolve() @@ -96,7 +102,7 @@ function showMsg() { } function getInfo(url) { - console.log(`\n女装盲盒url:${url}\n`) + console.log(`url:${url}`) return new Promise(resolve => { $.get({ url, @@ -153,9 +159,13 @@ function doTask(taskId) { console.log(`${$.name} API请求失败,请检查网路重试`) } else { data = JSON.parse(data.match(/query\((.*)\n/)[1]) - if (data.data.complete_task_list.includes(taskId)) { - console.log(`任务完成成功,当前幸运值${data.data.curbless}`) - $.userInfo.bless = data.data.curbless + if (data.errcode === 8004) { + console.log(`任务完成失败,无效任务ID`) + } else { + if (data.data.complete_task_list.includes(taskId)) { + console.log(`任务完成成功,当前幸运值${data.data.curbless}`) + $.userInfo.bless = data.data.curbless + } } } } catch (e) { @@ -205,7 +215,7 @@ function taskUrl(function_id, body = '') { 'Content-Type': 'application/json;charset=utf-8', 'Origin': 'wq.jd.com', 'User-Agent': 'JD4iPhone/167490 (iPhone; iOS 14.2; Scale/3.00)', - 'Referer': `${jd_nzmhurl}?wxAppName=jd`, + 'Referer': `https://anmp.jd.com/babelDiy/Zeus/xKACpgVjVJM7zPKbd5AGCij5yV9/index.html?wxAppName=jd`, 'Cookie': cookie } } diff --git a/jd_pet.js b/jd_pet.js index 636ed8c..8ce6155 100644 --- a/jd_pet.js +++ b/jd_pet.js @@ -1,1062 +1,1076 @@ -/* -东东萌宠 更新地址: jd_pet.js -更新时间:2021-05-21 -活动入口:京东APP我的-更多工具-东东萌宠 -已支持IOS多京东账号,Node.js支持N个京东账号 -脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js - -互助码shareCode请先手动运行脚本查看打印可看到 -一天只能帮助5个人。多出的助力码无效 - -=================================Quantumultx========================= -[task_local] -#东东萌宠 -15 6-18/6 * * * jd_pet.js, tag=东东萌宠, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdmc.png, enabled=true - -=================================Loon=================================== -[Script] -cron "15 6-18/6 * * *" script-path=jd_pet.js,tag=东东萌宠 - -===================================Surge================================ -东东萌宠 = type=cron,cronexp="15 6-18/6 * * *",wake-system=1,timeout=3600,script-path=jd_pet.js - -====================================小火箭============================= -东东萌宠 = type=cron,script-path=jd_pet.js, cronexpr="15 6-18/6 * * *", timeout=3600, enable=true - - */ -const $ = new Env('东东萌宠互助版'); -let cookiesArr = [], cookie = '', jdPetShareArr = [], isBox = false, allMessage = ''; -let message = '', subTitle = '', option = {}; -let jdNotify = false; //是否关闭通知,false打开通知推送,true关闭通知推送 -const JD_API_HOST = 'https://api.m.jd.com/client.action'; -let goodsUrl = '', taskInfoKey = []; -let notify = $.isNode() ? require('./sendNotify') : ''; -const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; -let newShareCodes = []; -let NoNeedCodes = []; -if ($.isNode()) { - Object.keys(jdCookieNode).forEach((item) => { - if (jdCookieNode[item]) { - cookiesArr.push(jdCookieNode[item]) - } - }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') - console.log = () => {}; -} else { - cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); -} - -let NowHour = new Date().getHours(); -let llhelp=true; -if ($.isNode() && process.env.CC_NOHELPAFTER8) { - console.log(NowHour); - if (process.env.CC_NOHELPAFTER8=="true"){ - if (NowHour>8){ - llhelp=false; - console.log(`现在是9点后时段,不启用互助....`); - } - } -} - -console.log(`共${cookiesArr.length}个京东账号\n`); - -!(async() => { - if (!cookiesArr[0]) { - $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { - "open-url": "https://bean.m.jd.com/bean/signIndex.action" - }); - return; - } - if (llhelp){ - console.log('开始收集您的互助码,用于账号内部互助,请稍等...'); - for (let i = 0; i < cookiesArr.length; i++) { - if (cookiesArr[i]) { - cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); - $.index = i + 1; - $.isLogin = true; - $.nickName = ''; - await TotalBean(); - - if (!$.isLogin) { - $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { - "open-url": "https://bean.m.jd.com/bean/signIndex.action" - }); - - if ($.isNode()) { - await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); - } - continue; - } - message = ''; - subTitle = ''; - goodsUrl = ''; - taskInfoKey = []; - option = {}; - await GetShareCode(); - } - } - console.log('\n互助码收集完毕,开始执行日常任务...\n'); - } - - for (let i = 0; i < cookiesArr.length; i++) { - if (cookiesArr[i]) { - cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); - $.index = i + 1; - $.isLogin = true; - $.nickName = ''; - await TotalBean(); - console.log(`开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); - if (!$.isLogin) { - $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { - "open-url": "https://bean.m.jd.com/bean/signIndex.action" - }); - - if ($.isNode()) { - await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); - } - continue; - } - message = ''; - subTitle = ''; - goodsUrl = ''; - taskInfoKey = []; - option = {}; - await jdPet(); - } - } - if ($.isNode() && allMessage && $.ctrTemp) { - await notify.sendNotify(`${$.name}`, `${allMessage}`) - } -})() -.catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') -}) -.finally(() => { - $.done(); -}) -async function jdPet() { - try { - //查询jd宠物信息 - const initPetTownRes = await request('initPetTown'); - message = `【京东账号${$.index}】${$.nickName || $.UserName}\n`; - if (initPetTownRes.code === '0' && initPetTownRes.resultCode === '0' && initPetTownRes.message === 'success') { - $.petInfo = initPetTownRes.result; - if ($.petInfo.userStatus === 0) { - await slaveHelp(); //助力好友 - $.log($.name, '', `【提示】京东账号${$.index}${$.nickName || $.UserName}\n萌宠活动未开启\n请手动去京东APP开启活动\n入口:我的->游戏与互动->查看更多开启`); - return - } - if (!$.petInfo.goodsInfo) { - $.msg($.name, '', `【提示】京东账号${$.index}${$.nickName || $.UserName}\n暂未选购新的商品`, { - "open-url": "openapp.jdmoble://" - }); - if ($.isNode()) - await notify.sendNotify(`${$.name} - ${$.index} - ${$.nickName || $.UserName}`, `【提示】京东账号${$.index}${$.nickName || $.UserName}\n暂未选购新的商品`); - return - } - goodsUrl = $.petInfo.goodsInfo && $.petInfo.goodsInfo.goodsUrl; - // option['media-url'] = goodsUrl; - // console.log(`初始化萌宠信息完成: ${JSON.stringify(petInfo)}`); - if ($.petInfo.petStatus === 5) { - await slaveHelp(); //可以兑换而没有去兑换,也能继续助力好友 - option['open-url'] = "openApp.jdMobile://"; - $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.petInfo.goodsInfo.goodsName}已可领取\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); - if ($.isNode()) { - await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}奖品已可领取`, `京东账号${$.index} ${$.nickName || $.UserName}\n${$.petInfo.goodsInfo.goodsName}已可领取`); - } - return - } else if ($.petInfo.petStatus === 6) { - await slaveHelp(); //已领取红包,但未领养新的,也能继续助力好友 - option['open-url'] = "openApp.jdMobile://"; - $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】已领取红包,但未继续领养新的物品\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); - if ($.isNode()) { - await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}奖品已可领取`, `京东账号${$.index} ${$.nickName || $.UserName}\n已领取红包,但未继续领养新的物品`); - } - return - } - //console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${$.petInfo.shareCode}\n`); - await taskInit(); - if ($.taskInit.resultCode === '9999' || !$.taskInit.result) { - console.log('初始化任务异常, 请稍后再试'); - return - } - $.taskInfo = $.taskInit.result; - - await petSport(); //遛弯 - if (llhelp){ - await slaveHelp(); //助力好友 - } - await masterHelpInit(); //获取助力的信息 - await doTask(); //做日常任务 - await feedPetsAgain(); //再次投食 - await energyCollect(); //收集好感度 - await showMsg(); - - } else if (initPetTownRes.code === '0') { - console.log(`初始化萌宠失败: ${initPetTownRes.message}`); - } - } catch (e) { - $.logErr(e) - const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; - if ($.isNode()) - await notify.sendNotify(`${$.name}`, errMsg); - $.msg($.name, '', `${errMsg}`) - } -} - -async function GetShareCode() { - try { - //查询jd宠物信息 - const initPetTownRes = await request('initPetTown'); - if (initPetTownRes.code === '0' && initPetTownRes.resultCode === '0' && initPetTownRes.message === 'success') { - $.petInfo = initPetTownRes.result; - if ($.petInfo.userStatus == 0 || $.petInfo.petStatus == 5 || $.petInfo.petStatus == 6 || !$.petInfo.goodsInfo) { - console.log(`【京东账号${$.index}(${$.UserName})的互助码】\n宠物状态不能被助力,跳过...`); - return; - } - console.log(`【京东账号${$.index}(${$.UserName})的互助码】\n${$.petInfo.shareCode}`); - newShareCodes.push($.petInfo.shareCode); - } - } catch (e) { - $.logErr(e) - const errMsg = `【京东账号${$.index} ${$.nickName || $.UserName}】\n任务执行异常,请检查执行日志 ‼️‼️`; - if ($.isNode()) - await notify.sendNotify(`${$.name}`, errMsg); - $.msg($.name, '', `${errMsg}`); - } -} - -// 收取所有好感度 -async function energyCollect() { - console.log('开始收取任务奖励好感度'); - let function_id = arguments.callee.name.toString(); - const response = await request(function_id); - // console.log(`收取任务奖励好感度完成:${JSON.stringify(response)}`); - if (response.resultCode === '0') { - message += `【第${response.result.medalNum + 1}块勋章完成进度】${response.result.medalPercent}%,还需收集${response.result.needCollectEnergy}好感\n`; - message += `【已获得勋章】${response.result.medalNum}块,还需收集${response.result.needCollectMedalNum}块即可兑换奖品“${$.petInfo.goodsInfo.goodsName}”\n`; - } -} -//再次投食 -async function feedPetsAgain() { - const response = await request('initPetTown'); //再次初始化萌宠 - if (response.code === '0' && response.resultCode === '0' && response.message === 'success') { - $.petInfo = response.result; - let foodAmount = $.petInfo.foodAmount; //剩余狗粮 - if (foodAmount - 100 >= 10) { - for (let i = 0; i < parseInt((foodAmount - 100) / 10); i++) { - const feedPetRes = await request('feedPets'); - console.log(`投食feedPetRes`); - if (feedPetRes.resultCode == 0 && feedPetRes.code == 0) { - console.log('投食成功') - } - } - const response2 = await request('initPetTown'); - $.petInfo = response2.result; - subTitle = $.petInfo.goodsInfo.goodsName; - // message += `【与爱宠相识】${$.petInfo.meetDays}天\n`; - // message += `【剩余狗粮】${$.petInfo.foodAmount}g\n`; - } else { - console.log("目前剩余狗粮:【" + foodAmount + "】g,不再继续投食,保留部分狗粮用于完成第二天任务"); - subTitle = $.petInfo.goodsInfo && $.petInfo.goodsInfo.goodsName; - // message += `【与爱宠相识】${$.petInfo.meetDays}天\n`; - // message += `【剩余狗粮】${$.petInfo.foodAmount}g\n`; - } - } else { - console.log(`初始化萌宠失败: ${JSON.stringify($.petInfo)}`); - } -} - -async function doTask() { - const { - signInit, - threeMealInit, - firstFeedInit, - feedReachInit, - inviteFriendsInit, - browseShopsInit, - taskList - } = $.taskInfo; - for (let item of taskList) { - if ($.taskInfo[item].finished) { - console.log(`任务 ${item} 已完成`) - } - } - //每日签到 - if (signInit && !signInit.finished) { - await signInitFun(); - } - // 首次喂食 - if (firstFeedInit && !firstFeedInit.finished) { - await firstFeedInitFun(); - } - // 三餐 - if (threeMealInit && !threeMealInit.finished) { - if (threeMealInit.timeRange === -1) { - console.log(`未到三餐时间`); - } else { - await threeMealInitFun(); - } - } - if (browseShopsInit && !browseShopsInit.finished) { - await browseShopsInitFun(); - } - let browseSingleShopInitList = []; - taskList.map((item) => { - if (item.indexOf('browseSingleShopInit') > -1) { - browseSingleShopInitList.push(item); - } - }); - // 去逛逛好货会场 - for (let item of browseSingleShopInitList) { - const browseSingleShopInitTask = $.taskInfo[item]; - if (browseSingleShopInitTask && !browseSingleShopInitTask.finished) { - await browseSingleShopInit(browseSingleShopInitTask); - } - } - if (inviteFriendsInit && !inviteFriendsInit.finished) { - await inviteFriendsInitFun(); - } - // 投食10次 - if (feedReachInit && !feedReachInit.finished) { - await feedReachInitFun(); - } -} -// 好友助力信息 -async function masterHelpInit() { - let res = await request(arguments.callee.name.toString()); - // console.log(`助力信息: ${JSON.stringify(res)}`); - if (res.code === '0' && res.resultCode === '0') { - if (res.result.masterHelpPeoples && res.result.masterHelpPeoples.length >= 5) { - if (!res.result.addedBonusFlag) { - console.log("开始领取额外奖励"); - let getHelpAddedBonusResult = await request('getHelpAddedBonus'); - if (getHelpAddedBonusResult.resultCode === '0') { - message += `【额外奖励${getHelpAddedBonusResult.result.reward}领取】${getHelpAddedBonusResult.message}\n`; - } - console.log(`领取30g额外奖励结果:【${getHelpAddedBonusResult.message}】`); - } else { - console.log("已经领取过5好友助力额外奖励"); - message += `【额外奖励】已领取\n`; - } - } else { - console.log("助力好友未达到5个") - message += `【额外奖励】领取失败,原因:给您助力的人未达5个\n`; - } - if (res.result.masterHelpPeoples && res.result.masterHelpPeoples.length > 0) { - console.log('帮您助力的好友的名单开始') - let str = ''; - res.result.masterHelpPeoples.map((item, index) => { - if (index === (res.result.masterHelpPeoples.length - 1)) { - str += item.nickName || "匿名用户"; - } else { - str += (item.nickName || "匿名用户") + ','; - } - }) - message += `【助力您的好友】${str}\n`; - } - } -} -/** - * 助力好友, 暂时支持一个好友, 需要拿到shareCode - * shareCode为你要助力的好友的 - * 运行脚本时你自己的shareCode会在控制台输出, 可以将其分享给他人 - */ -async function slaveHelp() { - let helpPeoples = ''; - for (let code of newShareCodes) { - if(NoNeedCodes){ - var llnoneed=false; - for (let NoNeedCode of NoNeedCodes) { - if (code==NoNeedCode){ - llnoneed=true; - break; - } - } - if(llnoneed){ - console.log(`${code}助力已满,跳过...`); - continue; - } - } - console.log(`开始助力京东账号${$.index} - ${$.nickName || $.UserName}的好友: ${code}`); - if (!code) - continue; - let response = await request(arguments.callee.name.toString(), { - 'shareCode': code - }); - if (response.code === '0' && response.resultCode === '0') { - if (response.result.helpStatus === 0) { - console.log('已给好友: 【' + response.result.masterNickName + '】助力成功'); - helpPeoples += response.result.masterNickName + ','; - } else if (response.result.helpStatus === 1) { - // 您今日已无助力机会 - console.log(`助力好友${response.result.masterNickName}失败,您今日已无助力机会`); - break; - } else if (response.result.helpStatus === 2) { - //该好友已满5人助力,无需您再次助力 - NoNeedCodes.push(code); - console.log(`该好友${response.result.masterNickName}已满5人助力,无需您再次助力`); - } else { - console.log(`助力其他情况:${JSON.stringify(response)}`); - } - } else { - if(response.message=="已经助过力"){ - console.log(`此账号今天已经跑过助力了,跳出....`); - break; - }else{ - console.log(`助力好友结果: ${response.message}`); - } - - } - } - if (helpPeoples && helpPeoples.length > 0) { - message += `【您助力的好友】${helpPeoples.substr(0, helpPeoples.length - 1)}\n`; - } -} -// 遛狗, 每天次数上限10次, 随机给狗粮, 每次遛狗结束需调用getSportReward领取奖励, 才能进行下一次遛狗 -async function petSport() { - console.log('开始遛弯'); - let times = 1 - const code = 0 - let resultCode = 0 - do { - let response = await request(arguments.callee.name.toString()) - console.log(`第${times}次遛狗完成: ${JSON.stringify(response)}`); - resultCode = response.resultCode; - if (resultCode == 0) { - let sportRevardResult = await request('getSportReward'); - console.log(`领取遛狗奖励完成: ${JSON.stringify(sportRevardResult)}`); - } - times++; - } while (resultCode == 0 && code == 0) - if (times > 1) { - // message += '【十次遛狗】已完成\n'; - } -} -// 初始化任务, 可查询任务完成情况 -async function taskInit() { - console.log('开始任务初始化'); - $.taskInit = await request(arguments.callee.name.toString(), { - "version": 1 - }); -} -// 每日签到, 每天一次 -async function signInitFun() { - console.log('准备每日签到'); - const response = await request("getSignReward"); - console.log(`每日签到结果: ${JSON.stringify(response)}`); - if (response.code === '0' && response.resultCode === '0') { - console.log(`【每日签到成功】奖励${response.result.signReward}g狗粮\n`); - // message += `【每日签到成功】奖励${response.result.signReward}g狗粮\n`; - } else { - console.log(`【每日签到】${response.message}\n`); - // message += `【每日签到】${response.message}\n`; - } -} - -// 三餐签到, 每天三段签到时间 -async function threeMealInitFun() { - console.log('准备三餐签到'); - const response = await request("getThreeMealReward"); - console.log(`三餐签到结果: ${JSON.stringify(response)}`); - if (response.code === '0' && response.resultCode === '0') { - console.log(`【定时领狗粮】获得${response.result.threeMealReward}g\n`); - // message += `【定时领狗粮】获得${response.result.threeMealReward}g\n`; - } else { - console.log(`【定时领狗粮】${response.message}\n`); - // message += `【定时领狗粮】${response.message}\n`; - } -} - -// 浏览指定店铺 任务 -async function browseSingleShopInit(item) { - console.log(`开始做 ${item.title} 任务, ${item.desc}`); - const body = { - "index": item['index'], - "version": 1, - "type": 1 - }; - const body2 = { - "index": item['index'], - "version": 1, - "type": 2 - }; - const response = await request("getSingleShopReward", body); - // console.log(`点击进去response::${JSON.stringify(response)}`); - if (response.code === '0' && response.resultCode === '0') { - const response2 = await request("getSingleShopReward", body2); - // console.log(`浏览完毕领取奖励:response2::${JSON.stringify(response2)}`); - if (response2.code === '0' && response2.resultCode === '0') { - console.log(`【浏览指定店铺】获取${response2.result.reward}g\n`); - // message += `【浏览指定店铺】获取${response2.result.reward}g\n`; - } - } -} - -// 浏览店铺任务, 任务可能为多个? 目前只有一个 -async function browseShopsInitFun() { - console.log('开始浏览店铺任务'); - let times = 0; - let resultCode = 0; - let code = 0; - do { - let response = await request("getBrowseShopsReward"); - console.log(`第${times}次浏览店铺结果: ${JSON.stringify(response)}`); - code = response.code; - resultCode = response.resultCode; - times++; - } while (resultCode == 0 && code == 0 && times < 5) - console.log('浏览店铺任务结束'); -} -// 首次投食 任务 -function firstFeedInitFun() { - console.log('首次投食任务合并到10次喂食任务中\n'); -} - -// 邀请新用户 -async function inviteFriendsInitFun() { - console.log('邀请新用户功能未实现'); - if ($.taskInfo.inviteFriendsInit.status == 1 && $.taskInfo.inviteFriendsInit.inviteFriendsNum > 0) { - // 如果有邀请过新用户,自动领取60gg奖励 - const res = await request('getInviteFriendsReward'); - if (res.code == 0 && res.resultCode == 0) { - console.log(`领取邀请新用户奖励成功,获得狗粮现有狗粮${$.taskInfo.inviteFriendsInit.reward}g,${res.result.foodAmount}g`); - message += `【邀请新用户】获取狗粮${$.taskInfo.inviteFriendsInit.reward}g\n`; - } - } -} - -/** - * 投食10次 任务 - */ -async function feedReachInitFun() { - console.log('投食任务开始...'); - let finishedTimes = $.taskInfo.feedReachInit.hadFeedAmount / 10; //已经喂养了几次 - let needFeedTimes = 10 - finishedTimes; //还需要几次 - let tryTimes = 20; //尝试次数 - do { - console.log(`还需要投食${needFeedTimes}次`); - const response = await request('feedPets'); - console.log(`本次投食结果: ${JSON.stringify(response)}`); - if (response.resultCode == 0 && response.code == 0) { - needFeedTimes--; - } - if (response.resultCode == 3003 && response.code == 0) { - console.log('剩余狗粮不足, 投食结束'); - needFeedTimes = 0; - } - tryTimes--; - } while (needFeedTimes > 0 && tryTimes > 0) - console.log('投食任务结束...\n'); -} -async function showMsg() { - if ($.isNode() && process.env.PET_NOTIFY_CONTROL) { - $.ctrTemp = `${process.env.PET_NOTIFY_CONTROL}` === 'false'; - } else if ($.getdata('jdPetNotify')) { - $.ctrTemp = $.getdata('jdPetNotify') === 'false'; - } else { - $.ctrTemp = `${jdNotify}` === 'false'; - } - // jdNotify = `${notify.petNotifyControl}` === 'false' && `${jdNotify}` === 'false' && $.getdata('jdPetNotify') === 'false'; - if ($.ctrTemp) { - $.msg($.name, subTitle, message, option); - if ($.isNode()) { - allMessage += `${subTitle}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}` - // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}`, `${subTitle}\n${message}`); - } - } else { - $.log(`\n${message}\n`); - } -} -function TotalBean() { - return new Promise(async resolve => { - const options = { - "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") - } - } - $.post(options, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (data) { - data = JSON.parse(data); - if (data['retcode'] === 13) { - $.isLogin = false; //cookie过期 - return - } - if (data['retcode'] === 0 && data.base && data.base.nickname) { - $.nickName = data.base.nickname; - } - } else { - console.log(`京东服务器返回空数据`) - } - } - } catch (e) { - $.logErr(e) - } - finally { - resolve(); - } - }) - }) -} -// 请求 -async function request(function_id, body = {}) { - await $.wait(3000); //歇口气儿, 不然会报操作频繁 - return new Promise((resolve, reject) => { - $.post(taskUrl(function_id, body), (err, resp, data) => { - try { - if (err) { - console.log('\n东东萌宠: API查询请求失败 ‼️‼️'); - console.log(JSON.stringify(err)); - $.logErr(err); - } else { - data = JSON.parse(data); - } - } catch (e) { - $.logErr(e, resp); - } - finally { - resolve(data) - } - }) - }) -} -// function taskUrl(function_id, body = {}) { -// return { -// url: `${JD_API_HOST}?functionId=${function_id}&appid=wh5&loginWQBiz=pet-town&body=${escape(JSON.stringify(body))}`, -// headers: { -// Cookie: cookie, -// UserAgent: $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), -// } -// }; -// } -function taskUrl(function_id, body = {}) { - body["version"] = 2; - body["channel"] = 'app'; - return { - url: `${JD_API_HOST}?functionId=${function_id}`, - body: `body=${escape(JSON.stringify(body))}&appid=wh5&loginWQBiz=pet-town&clientVersion=9.0.4`, - headers: { - 'Cookie': cookie, - 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), - 'Host': 'api.m.jd.com', - 'Content-Type': 'application/x-www-form-urlencoded', - } - }; -} -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') - return []; - } - } -} -// prettier-ignore -function Env(t, e) { - "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); - class s { - constructor(t) { - this.env = t - } - send(t, e = "GET") { - t = "string" == typeof t ? { - url: t - } - : t; - let s = this.get; - return "POST" === e && (s = this.post), - new Promise((e, i) => { - s.call(this, t, (t, s, r) => { - t ? i(t) : e(s) - }) - }) - } - get(t) { - return this.send.call(this.env, t) - } - post(t) { - return this.send.call(this.env, t, "POST") - } - } - return new class { - constructor(t, e) { - this.name = t, - this.http = new s(this), - this.data = null, - this.dataFile = "box.dat", - this.logs = [], - this.isMute = !1, - this.isNeedRewrite = !1, - this.logSeparator = "\n", - this.startTime = (new Date).getTime(), - Object.assign(this, e), - this.log("", `🔔${this.name}, 开始!`) - } - isNode() { - return "undefined" != typeof module && !!module.exports - } - isQuanX() { - return "undefined" != typeof $task - } - isSurge() { - return "undefined" != typeof $httpClient && "undefined" == typeof $loon - } - isLoon() { - return "undefined" != typeof $loon - } - toObj(t, e = null) { - try { - return JSON.parse(t) - } catch { - return e - } - } - toStr(t, e = null) { - try { - return JSON.stringify(t) - } catch { - return e - } - } - getjson(t, e) { - let s = e; - const i = this.getdata(t); - if (i) - try { - s = JSON.parse(this.getdata(t)) - } catch {} - return s - } - setjson(t, e) { - try { - return this.setdata(JSON.stringify(t), e) - } catch { - return !1 - } - } - getScript(t) { - return new Promise(e => { - this.get({ - url: t - }, (t, s, i) => e(i)) - }) - } - runScript(t, e) { - return new Promise(s => { - let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); - i = i ? i.replace(/\n/g, "").trim() : i; - let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); - r = r ? 1 * r : 20, - r = e && e.timeout ? e.timeout : r; - const[o, h] = i.split("@"), - n = { - url: `http://${h}/v1/scripting/evaluate`, - body: { - script_text: t, - mock_type: "cron", - timeout: r - }, - headers: { - "X-Key": o, - Accept: "*/*" - } - }; - this.post(n, (t, e, i) => s(i)) - }).catch(t => this.logErr(t)) - } - loaddata() { - if (!this.isNode()) - return {}; { - this.fs = this.fs ? this.fs : require("fs"), - this.path = this.path ? this.path : require("path"); - const t = this.path.resolve(this.dataFile), - e = this.path.resolve(process.cwd(), this.dataFile), - s = this.fs.existsSync(t), - i = !s && this.fs.existsSync(e); - if (!s && !i) - return {}; { - const i = s ? t : e; - try { - return JSON.parse(this.fs.readFileSync(i)) - } catch (t) { - return {} - } - } - } - } - writedata() { - if (this.isNode()) { - this.fs = this.fs ? this.fs : require("fs"), - this.path = this.path ? this.path : require("path"); - const t = this.path.resolve(this.dataFile), - e = this.path.resolve(process.cwd(), this.dataFile), - s = this.fs.existsSync(t), - i = !s && this.fs.existsSync(e), - r = JSON.stringify(this.data); - s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) - } - } - lodash_get(t, e, s) { - const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); - let r = t; - for (const t of i) - if (r = Object(r)[t], void 0 === r) - return s; - return r - } - lodash_set(t, e, s) { - return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) - } - getdata(t) { - let e = this.getval(t); - if (/^@/.test(t)) { - const[, s, i] = /^@(.*?)\.(.*?)$/.exec(t), - r = s ? this.getval(s) : ""; - if (r) - try { - const t = JSON.parse(r); - e = t ? this.lodash_get(t, i, "") : e - } catch (t) { - e = "" - } - } - return e - } - setdata(t, e) { - let s = !1; - if (/^@/.test(e)) { - const[, i, r] = /^@(.*?)\.(.*?)$/.exec(e), - o = this.getval(i), - h = i ? "null" === o ? null : o || "{}" : "{}"; - try { - const e = JSON.parse(h); - this.lodash_set(e, r, t), - s = this.setval(JSON.stringify(e), i) - } catch (e) { - const o = {}; - this.lodash_set(o, r, t), - s = this.setval(JSON.stringify(o), i) - } - } else - s = this.setval(t, e); - return s - } - getval(t) { - return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null - } - setval(t, e) { - return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null - } - initGotEnv(t) { - this.got = this.got ? this.got : require("got"), - this.cktough = this.cktough ? this.cktough : require("tough-cookie"), - this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, - t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) - } - get(t, e = (() => {})) { - t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), - this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { - "X-Surge-Skip-Scripting": !1 - })), $httpClient.get(t, (t, s, i) => { - !t && s && (s.body = i, s.statusCode = s.status), - e(t, s, i) - })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { - hints: !1 - })), $task.fetch(t).then(t => { - const { - statusCode: s, - statusCode: i, - headers: r, - body: o - } = t; - e(null, { - status: s, - statusCode: i, - headers: r, - body: o - }, o) - }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { - try { - if (t.headers["set-cookie"]) { - const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); - s && this.ckjar.setCookieSync(s, null), - e.cookieJar = this.ckjar - } - } catch (t) { - this.logErr(t) - } - }).then(t => { - const { - statusCode: s, - statusCode: i, - headers: r, - body: o - } = t; - e(null, { - status: s, - statusCode: i, - headers: r, - body: o - }, o) - }, t => { - const { - message: s, - response: i - } = t; - e(s, i, i && i.body) - })) - } - post(t, e = (() => {})) { - if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) - this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { - "X-Surge-Skip-Scripting": !1 - })), $httpClient.post(t, (t, s, i) => { - !t && s && (s.body = i, s.statusCode = s.status), - e(t, s, i) - }); - else if (this.isQuanX()) - t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { - hints: !1 - })), $task.fetch(t).then(t => { - const { - statusCode: s, - statusCode: i, - headers: r, - body: o - } = t; - e(null, { - status: s, - statusCode: i, - headers: r, - body: o - }, o) - }, t => e(t)); - else if (this.isNode()) { - this.initGotEnv(t); - const { - url: s, - ...i - } = t; - this.got.post(s, i).then(t => { - const { - statusCode: s, - statusCode: i, - headers: r, - body: o - } = t; - e(null, { - status: s, - statusCode: i, - headers: r, - body: o - }, o) - }, t => { - const { - message: s, - response: i - } = t; - e(s, i, i && i.body) - }) - } - } - time(t, e = null) { - const s = e ? new Date(e) : new Date; - let i = { - "M+": s.getMonth() + 1, - "d+": s.getDate(), - "H+": s.getHours(), - "m+": s.getMinutes(), - "s+": s.getSeconds(), - "q+": Math.floor((s.getMonth() + 3) / 3), - S: s.getMilliseconds() - }; - /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); - for (let e in i) - new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); - return t - } - msg(e = t, s = "", i = "", r) { - const o = t => { - if (!t) - return t; - if ("string" == typeof t) - return this.isLoon() ? t : this.isQuanX() ? { - "open-url": t - } - : this.isSurge() ? { - url: t - } - : void 0; - if ("object" == typeof t) { - if (this.isLoon()) { - let e = t.openUrl || t.url || t["open-url"], - s = t.mediaUrl || t["media-url"]; - return { - openUrl: e, - mediaUrl: s - } - } - if (this.isQuanX()) { - let e = t["open-url"] || t.url || t.openUrl, - s = t["media-url"] || t.mediaUrl; - return { - "open-url": e, - "media-url": s - } - } - if (this.isSurge()) { - let e = t.url || t.openUrl || t["open-url"]; - return { - url: e - } - } - } - }; - if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { - let t = ["", "==============📣系统通知📣=============="]; - t.push(e), - s && t.push(s), - i && t.push(i), - console.log(t.join("\n")), - this.logs = this.logs.concat(t) - } - } - log(...t) { - t.length > 0 && (this.logs = [...this.logs, ...t]), - console.log(t.join(this.logSeparator)) - } - logErr(t, e) { - const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); - s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) - } - wait(t) { - return new Promise(e => setTimeout(e, t)) - } - done(t = {}) { - const e = (new Date).getTime(), - s = (e - this.startTime) / 1e3; - this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), - this.log(), - (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) - } - } - (t, e) -} +/* +东东萌宠 更新地址: jd_pet.js +更新时间:2021-05-21 +活动入口:京东APP我的-更多工具-东东萌宠 +已支持IOS多京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js + +互助码shareCode请先手动运行脚本查看打印可看到 +一天只能帮助5个人。多出的助力码无效 + +=================================Quantumultx========================= +[task_local] +#东东萌宠 +15 6-18/6 * * * jd_pet.js, tag=东东萌宠, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdmc.png, enabled=true + +=================================Loon=================================== +[Script] +cron "15 6-18/6 * * *" script-path=jd_pet.js,tag=东东萌宠 + +===================================Surge================================ +东东萌宠 = type=cron,cronexp="15 6-18/6 * * *",wake-system=1,timeout=3600,script-path=jd_pet.js + +====================================小火箭============================= +东东萌宠 = type=cron,script-path=jd_pet.js, cronexpr="15 6-18/6 * * *", timeout=3600, enable=true + + */ +const $ = new Env('东东萌宠互助版'); +let cookiesArr = [], cookie = '', jdPetShareArr = [], isBox = false, allMessage = ''; +let message = '', subTitle = '', option = {}; +let jdNotify = false; //是否关闭通知,false打开通知推送,true关闭通知推送 +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +let goodsUrl = '', taskInfoKey = []; +let notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let newShareCodes = []; +let NoNeedCodes = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') + console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +let NowHour = new Date().getHours(); +let llhelp=true; +if ($.isNode() && process.env.CC_NOHELPAFTER8) { + console.log(NowHour); + if (process.env.CC_NOHELPAFTER8=="true"){ + if (NowHour>8){ + llhelp=false; + console.log(`现在是9点后时段,不启用互助....`); + } + } +} +let WP_APP_TOKEN_ONE = ""; +if ($.isNode()) { + if (process.env.WP_APP_TOKEN_ONE) { + WP_APP_TOKEN_ONE = process.env.WP_APP_TOKEN_ONE; + } +} +if(WP_APP_TOKEN_ONE) + console.log(`检测到已配置Wxpusher的Token,启用一对一推送...`); +else + console.log(`检测到未配置Wxpusher的Token,禁用一对一推送...`); + +console.log(`共${cookiesArr.length}个京东账号\n`); + +!(async() => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + return; + } + if (llhelp){ + console.log('开始收集您的互助码,用于账号内部互助,请稍等...'); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue; + } + message = ''; + subTitle = ''; + goodsUrl = ''; + taskInfoKey = []; + option = {}; + await GetShareCode(); + } + } + console.log('\n互助码收集完毕,开始执行日常任务...\n'); + } + + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue; + } + message = ''; + subTitle = ''; + goodsUrl = ''; + taskInfoKey = []; + option = {}; + await jdPet(); + } + } + if ($.isNode() && allMessage && $.ctrTemp) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})() +.catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}) +.finally(() => { + $.done(); +}) +async function jdPet() { + try { + //查询jd宠物信息 + const initPetTownRes = await request('initPetTown'); + message = `【京东账号${$.index}】${$.nickName || $.UserName}\n`; + if (initPetTownRes.code === '0' && initPetTownRes.resultCode === '0' && initPetTownRes.message === 'success') { + $.petInfo = initPetTownRes.result; + if ($.petInfo.userStatus === 0) { + await slaveHelp(); //助力好友 + $.log($.name, '', `【提示】京东账号${$.index}${$.nickName || $.UserName}\n萌宠活动未开启\n请手动去京东APP开启活动\n入口:我的->游戏与互动->查看更多开启`); + return + } + if (!$.petInfo.goodsInfo) { + $.msg($.name, '', `【提示】京东账号${$.index}${$.nickName || $.UserName}\n暂未选购新的商品`, { + "open-url": "openapp.jdmoble://" + }); + if ($.isNode()) + await notify.sendNotify(`${$.name} - ${$.index} - ${$.nickName || $.UserName}`, `【提示】京东账号${$.index}${$.nickName || $.UserName}\n暂未选购新的商品`); + return + } + goodsUrl = $.petInfo.goodsInfo && $.petInfo.goodsInfo.goodsUrl; + // option['media-url'] = goodsUrl; + // console.log(`初始化萌宠信息完成: ${JSON.stringify(petInfo)}`); + if ($.petInfo.petStatus === 5) { + await slaveHelp(); //可以兑换而没有去兑换,也能继续助力好友 + option['open-url'] = "openApp.jdMobile://"; + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.petInfo.goodsInfo.goodsName}已可领取\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}奖品已可领取`, `京东账号${$.index} ${$.nickName || $.UserName}\n${$.petInfo.goodsInfo.goodsName}已可领取`); + } + if ($.isNode() && WP_APP_TOKEN_ONE) { + await notify.sendNotifybyWxPucher($.name, `【提醒⏰】${$.petInfo.goodsInfo.goodsName}已可领取\n【领取步骤】京东->我的->东东萌宠兑换京东红包,可以用于京东app的任意商品.`, `${$.UserName}`); + } + return + } else if ($.petInfo.petStatus === 6) { + await slaveHelp(); //已领取红包,但未领养新的,也能继续助力好友 + option['open-url'] = "openApp.jdMobile://"; + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】已领取红包,但未继续领养新的物品\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}奖品已可领取`, `京东账号${$.index} ${$.nickName || $.UserName}\n已领取红包,但未继续领养新的物品`); + } + + return + } + //console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${$.petInfo.shareCode}\n`); + await taskInit(); + if ($.taskInit.resultCode === '9999' || !$.taskInit.result) { + console.log('初始化任务异常, 请稍后再试'); + return + } + $.taskInfo = $.taskInit.result; + + await petSport(); //遛弯 + if (llhelp){ + await slaveHelp(); //助力好友 + } + await masterHelpInit(); //获取助力的信息 + await doTask(); //做日常任务 + await feedPetsAgain(); //再次投食 + await energyCollect(); //收集好感度 + await showMsg(); + + } else if (initPetTownRes.code === '0') { + console.log(`初始化萌宠失败: ${initPetTownRes.message}`); + } + } catch (e) { + $.logErr(e) + const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; + if ($.isNode()) + await notify.sendNotify(`${$.name}`, errMsg); + $.msg($.name, '', `${errMsg}`) + } +} + +async function GetShareCode() { + try { + //查询jd宠物信息 + const initPetTownRes = await request('initPetTown'); + if (initPetTownRes.code === '0' && initPetTownRes.resultCode === '0' && initPetTownRes.message === 'success') { + $.petInfo = initPetTownRes.result; + if ($.petInfo.userStatus == 0 || $.petInfo.petStatus == 5 || $.petInfo.petStatus == 6 || !$.petInfo.goodsInfo) { + console.log(`【京东账号${$.index}(${$.UserName})的互助码】\n宠物状态不能被助力,跳过...`); + return; + } + console.log(`【京东账号${$.index}(${$.UserName})的互助码】\n${$.petInfo.shareCode}`); + newShareCodes.push($.petInfo.shareCode); + } + } catch (e) { + $.logErr(e) + const errMsg = `【京东账号${$.index} ${$.nickName || $.UserName}】\n任务执行异常,请检查执行日志 ‼️‼️`; + if ($.isNode()) + await notify.sendNotify(`${$.name}`, errMsg); + $.msg($.name, '', `${errMsg}`); + } +} + +// 收取所有好感度 +async function energyCollect() { + console.log('开始收取任务奖励好感度'); + let function_id = arguments.callee.name.toString(); + const response = await request(function_id); + // console.log(`收取任务奖励好感度完成:${JSON.stringify(response)}`); + if (response.resultCode === '0') { + message += `【第${response.result.medalNum + 1}块勋章完成进度】${response.result.medalPercent}%,还需收集${response.result.needCollectEnergy}好感\n`; + message += `【已获得勋章】${response.result.medalNum}块,还需收集${response.result.needCollectMedalNum}块即可兑换奖品“${$.petInfo.goodsInfo.goodsName}”\n`; + } +} +//再次投食 +async function feedPetsAgain() { + const response = await request('initPetTown'); //再次初始化萌宠 + if (response.code === '0' && response.resultCode === '0' && response.message === 'success') { + $.petInfo = response.result; + let foodAmount = $.petInfo.foodAmount; //剩余狗粮 + if (foodAmount - 100 >= 10) { + for (let i = 0; i < parseInt((foodAmount - 100) / 10); i++) { + const feedPetRes = await request('feedPets'); + console.log(`投食feedPetRes`); + if (feedPetRes.resultCode == 0 && feedPetRes.code == 0) { + console.log('投食成功') + } + } + const response2 = await request('initPetTown'); + $.petInfo = response2.result; + subTitle = $.petInfo.goodsInfo.goodsName; + // message += `【与爱宠相识】${$.petInfo.meetDays}天\n`; + // message += `【剩余狗粮】${$.petInfo.foodAmount}g\n`; + } else { + console.log("目前剩余狗粮:【" + foodAmount + "】g,不再继续投食,保留部分狗粮用于完成第二天任务"); + subTitle = $.petInfo.goodsInfo && $.petInfo.goodsInfo.goodsName; + // message += `【与爱宠相识】${$.petInfo.meetDays}天\n`; + // message += `【剩余狗粮】${$.petInfo.foodAmount}g\n`; + } + } else { + console.log(`初始化萌宠失败: ${JSON.stringify($.petInfo)}`); + } +} + +async function doTask() { + const { + signInit, + threeMealInit, + firstFeedInit, + feedReachInit, + inviteFriendsInit, + browseShopsInit, + taskList + } = $.taskInfo; + for (let item of taskList) { + if ($.taskInfo[item].finished) { + console.log(`任务 ${item} 已完成`) + } + } + //每日签到 + if (signInit && !signInit.finished) { + await signInitFun(); + } + // 首次喂食 + if (firstFeedInit && !firstFeedInit.finished) { + await firstFeedInitFun(); + } + // 三餐 + if (threeMealInit && !threeMealInit.finished) { + if (threeMealInit.timeRange === -1) { + console.log(`未到三餐时间`); + } else { + await threeMealInitFun(); + } + } + if (browseShopsInit && !browseShopsInit.finished) { + await browseShopsInitFun(); + } + let browseSingleShopInitList = []; + taskList.map((item) => { + if (item.indexOf('browseSingleShopInit') > -1) { + browseSingleShopInitList.push(item); + } + }); + // 去逛逛好货会场 + for (let item of browseSingleShopInitList) { + const browseSingleShopInitTask = $.taskInfo[item]; + if (browseSingleShopInitTask && !browseSingleShopInitTask.finished) { + await browseSingleShopInit(browseSingleShopInitTask); + } + } + if (inviteFriendsInit && !inviteFriendsInit.finished) { + await inviteFriendsInitFun(); + } + // 投食10次 + if (feedReachInit && !feedReachInit.finished) { + await feedReachInitFun(); + } +} +// 好友助力信息 +async function masterHelpInit() { + let res = await request(arguments.callee.name.toString()); + // console.log(`助力信息: ${JSON.stringify(res)}`); + if (res.code === '0' && res.resultCode === '0') { + if (res.result.masterHelpPeoples && res.result.masterHelpPeoples.length >= 5) { + if (!res.result.addedBonusFlag) { + console.log("开始领取额外奖励"); + let getHelpAddedBonusResult = await request('getHelpAddedBonus'); + if (getHelpAddedBonusResult.resultCode === '0') { + message += `【额外奖励${getHelpAddedBonusResult.result.reward}领取】${getHelpAddedBonusResult.message}\n`; + } + console.log(`领取30g额外奖励结果:【${getHelpAddedBonusResult.message}】`); + } else { + console.log("已经领取过5好友助力额外奖励"); + message += `【额外奖励】已领取\n`; + } + } else { + console.log("助力好友未达到5个") + message += `【额外奖励】领取失败,原因:给您助力的人未达5个\n`; + } + if (res.result.masterHelpPeoples && res.result.masterHelpPeoples.length > 0) { + console.log('帮您助力的好友的名单开始') + let str = ''; + res.result.masterHelpPeoples.map((item, index) => { + if (index === (res.result.masterHelpPeoples.length - 1)) { + str += item.nickName || "匿名用户"; + } else { + str += (item.nickName || "匿名用户") + ','; + } + }) + message += `【助力您的好友】${str}\n`; + } + } +} +/** + * 助力好友, 暂时支持一个好友, 需要拿到shareCode + * shareCode为你要助力的好友的 + * 运行脚本时你自己的shareCode会在控制台输出, 可以将其分享给他人 + */ +async function slaveHelp() { + let helpPeoples = ''; + for (let code of newShareCodes) { + if(NoNeedCodes){ + var llnoneed=false; + for (let NoNeedCode of NoNeedCodes) { + if (code==NoNeedCode){ + llnoneed=true; + break; + } + } + if(llnoneed){ + console.log(`${code}助力已满,跳过...`); + continue; + } + } + console.log(`开始助力京东账号${$.index} - ${$.nickName || $.UserName}的好友: ${code}`); + if (!code) + continue; + let response = await request(arguments.callee.name.toString(), { + 'shareCode': code + }); + if (response.code === '0' && response.resultCode === '0') { + if (response.result.helpStatus === 0) { + console.log('已给好友: 【' + response.result.masterNickName + '】助力成功'); + helpPeoples += response.result.masterNickName + ','; + } else if (response.result.helpStatus === 1) { + // 您今日已无助力机会 + console.log(`助力好友${response.result.masterNickName}失败,您今日已无助力机会`); + break; + } else if (response.result.helpStatus === 2) { + //该好友已满5人助力,无需您再次助力 + NoNeedCodes.push(code); + console.log(`该好友${response.result.masterNickName}已满5人助力,无需您再次助力`); + } else { + console.log(`助力其他情况:${JSON.stringify(response)}`); + } + } else { + if(response.message=="已经助过力"){ + console.log(`此账号今天已经跑过助力了,跳出....`); + break; + }else{ + console.log(`助力好友结果: ${response.message}`); + } + + } + } + if (helpPeoples && helpPeoples.length > 0) { + message += `【您助力的好友】${helpPeoples.substr(0, helpPeoples.length - 1)}\n`; + } +} +// 遛狗, 每天次数上限10次, 随机给狗粮, 每次遛狗结束需调用getSportReward领取奖励, 才能进行下一次遛狗 +async function petSport() { + console.log('开始遛弯'); + let times = 1 + const code = 0 + let resultCode = 0 + do { + let response = await request(arguments.callee.name.toString()) + console.log(`第${times}次遛狗完成: ${JSON.stringify(response)}`); + resultCode = response.resultCode; + if (resultCode == 0) { + let sportRevardResult = await request('getSportReward'); + console.log(`领取遛狗奖励完成: ${JSON.stringify(sportRevardResult)}`); + } + times++; + } while (resultCode == 0 && code == 0) + if (times > 1) { + // message += '【十次遛狗】已完成\n'; + } +} +// 初始化任务, 可查询任务完成情况 +async function taskInit() { + console.log('开始任务初始化'); + $.taskInit = await request(arguments.callee.name.toString(), { + "version": 1 + }); +} +// 每日签到, 每天一次 +async function signInitFun() { + console.log('准备每日签到'); + const response = await request("getSignReward"); + console.log(`每日签到结果: ${JSON.stringify(response)}`); + if (response.code === '0' && response.resultCode === '0') { + console.log(`【每日签到成功】奖励${response.result.signReward}g狗粮\n`); + // message += `【每日签到成功】奖励${response.result.signReward}g狗粮\n`; + } else { + console.log(`【每日签到】${response.message}\n`); + // message += `【每日签到】${response.message}\n`; + } +} + +// 三餐签到, 每天三段签到时间 +async function threeMealInitFun() { + console.log('准备三餐签到'); + const response = await request("getThreeMealReward"); + console.log(`三餐签到结果: ${JSON.stringify(response)}`); + if (response.code === '0' && response.resultCode === '0') { + console.log(`【定时领狗粮】获得${response.result.threeMealReward}g\n`); + // message += `【定时领狗粮】获得${response.result.threeMealReward}g\n`; + } else { + console.log(`【定时领狗粮】${response.message}\n`); + // message += `【定时领狗粮】${response.message}\n`; + } +} + +// 浏览指定店铺 任务 +async function browseSingleShopInit(item) { + console.log(`开始做 ${item.title} 任务, ${item.desc}`); + const body = { + "index": item['index'], + "version": 1, + "type": 1 + }; + const body2 = { + "index": item['index'], + "version": 1, + "type": 2 + }; + const response = await request("getSingleShopReward", body); + // console.log(`点击进去response::${JSON.stringify(response)}`); + if (response.code === '0' && response.resultCode === '0') { + const response2 = await request("getSingleShopReward", body2); + // console.log(`浏览完毕领取奖励:response2::${JSON.stringify(response2)}`); + if (response2.code === '0' && response2.resultCode === '0') { + console.log(`【浏览指定店铺】获取${response2.result.reward}g\n`); + // message += `【浏览指定店铺】获取${response2.result.reward}g\n`; + } + } +} + +// 浏览店铺任务, 任务可能为多个? 目前只有一个 +async function browseShopsInitFun() { + console.log('开始浏览店铺任务'); + let times = 0; + let resultCode = 0; + let code = 0; + do { + let response = await request("getBrowseShopsReward"); + console.log(`第${times}次浏览店铺结果: ${JSON.stringify(response)}`); + code = response.code; + resultCode = response.resultCode; + times++; + } while (resultCode == 0 && code == 0 && times < 5) + console.log('浏览店铺任务结束'); +} +// 首次投食 任务 +function firstFeedInitFun() { + console.log('首次投食任务合并到10次喂食任务中\n'); +} + +// 邀请新用户 +async function inviteFriendsInitFun() { + console.log('邀请新用户功能未实现'); + if ($.taskInfo.inviteFriendsInit.status == 1 && $.taskInfo.inviteFriendsInit.inviteFriendsNum > 0) { + // 如果有邀请过新用户,自动领取60gg奖励 + const res = await request('getInviteFriendsReward'); + if (res.code == 0 && res.resultCode == 0) { + console.log(`领取邀请新用户奖励成功,获得狗粮现有狗粮${$.taskInfo.inviteFriendsInit.reward}g,${res.result.foodAmount}g`); + message += `【邀请新用户】获取狗粮${$.taskInfo.inviteFriendsInit.reward}g\n`; + } + } +} + +/** + * 投食10次 任务 + */ +async function feedReachInitFun() { + console.log('投食任务开始...'); + let finishedTimes = $.taskInfo.feedReachInit.hadFeedAmount / 10; //已经喂养了几次 + let needFeedTimes = 10 - finishedTimes; //还需要几次 + let tryTimes = 20; //尝试次数 + do { + console.log(`还需要投食${needFeedTimes}次`); + const response = await request('feedPets'); + console.log(`本次投食结果: ${JSON.stringify(response)}`); + if (response.resultCode == 0 && response.code == 0) { + needFeedTimes--; + } + if (response.resultCode == 3003 && response.code == 0) { + console.log('剩余狗粮不足, 投食结束'); + needFeedTimes = 0; + } + tryTimes--; + } while (needFeedTimes > 0 && tryTimes > 0) + console.log('投食任务结束...\n'); +} +async function showMsg() { + if ($.isNode() && process.env.PET_NOTIFY_CONTROL) { + $.ctrTemp = `${process.env.PET_NOTIFY_CONTROL}` === 'false'; + } else if ($.getdata('jdPetNotify')) { + $.ctrTemp = $.getdata('jdPetNotify') === 'false'; + } else { + $.ctrTemp = `${jdNotify}` === 'false'; + } + // jdNotify = `${notify.petNotifyControl}` === 'false' && `${jdNotify}` === 'false' && $.getdata('jdPetNotify') === 'false'; + if ($.ctrTemp) { + $.msg($.name, subTitle, message, option); + if ($.isNode()) { + allMessage += `${subTitle}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}` + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}`, `${subTitle}\n${message}`); + } + } else { + $.log(`\n${message}\n`); + } +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0 && data.base && data.base.nickname) { + $.nickName = data.base.nickname; + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e) + } + finally { + resolve(); + } + }) + }) +} +// 请求 +async function request(function_id, body = {}) { + await $.wait(3000); //歇口气儿, 不然会报操作频繁 + return new Promise((resolve, reject) => { + $.post(taskUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\n东东萌宠: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data) + } + }) + }) +} +// function taskUrl(function_id, body = {}) { +// return { +// url: `${JD_API_HOST}?functionId=${function_id}&appid=wh5&loginWQBiz=pet-town&body=${escape(JSON.stringify(body))}`, +// headers: { +// Cookie: cookie, +// UserAgent: $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), +// } +// }; +// } +function taskUrl(function_id, body = {}) { + body["version"] = 2; + body["channel"] = 'app'; + return { + url: `${JD_API_HOST}?functionId=${function_id}`, + body: `body=${escape(JSON.stringify(body))}&appid=wh5&loginWQBiz=pet-town&clientVersion=9.0.4`, + headers: { + 'Cookie': cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + } + }; +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + class s { + constructor(t) { + this.env = t + } + send(t, e = "GET") { + t = "string" == typeof t ? { + url: t + } + : t; + let s = this.get; + return "POST" === e && (s = this.post), + new Promise((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + get(t) { + return this.send.call(this.env, t) + } + post(t) { + return this.send.call(this.env, t, "POST") + } + } + return new class { + constructor(t, e) { + this.name = t, + this.http = new s(this), + this.data = null, + this.dataFile = "box.dat", + this.logs = [], + this.isMute = !1, + this.isNeedRewrite = !1, + this.logSeparator = "\n", + this.startTime = (new Date).getTime(), + Object.assign(this, e), + this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) + try { + s = JSON.parse(this.getdata(t)) + } catch {} + return s + } + setjson(t, e) { + try { + return this.setdata(JSON.stringify(t), e) + } catch { + return !1 + } + } + getScript(t) { + return new Promise(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, + r = e && e.timeout ? e.timeout : r; + const[o, h] = i.split("@"), + n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) + return {}; { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) + return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) + return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const[, s, i] = /^@(.*?)\.(.*?)$/.exec(t), + r = s ? this.getval(s) : ""; + if (r) + try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const[, i, r] = /^@(.*?)\.(.*?)$/.exec(e), + o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), + s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), + s = this.setval(JSON.stringify(o), i) + } + } else + s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), + this.cktough = this.cktough ? this.cktough : require("tough-cookie"), + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, + t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), + this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), + e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) + this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + }); + else if (this.isQuanX()) + t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) + new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) + return t; + if ("string" == typeof t) + return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } + : this.isSurge() ? { + url: t + } + : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), + s && t.push(s), + i && t.push(i), + console.log(t.join("\n")), + this.logs = this.logs.concat(t) + } + } + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), + console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), + this.log(), + (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + } + (t, e) +} diff --git a/jd_petrw.js b/jd_petrw.js new file mode 100644 index 0000000..09fedda --- /dev/null +++ b/jd_petrw.js @@ -0,0 +1,953 @@ +/* +东东萌宠 更新地址: jd_pet.js +更新时间:2021-05-21 +活动入口:京东APP我的-更多工具-东东萌宠 +已支持IOS多京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js + +互助码shareCode请先手动运行脚本查看打印可看到 +一天只能帮助5个人。多出的助力码无效 + +=================================Quantumultx========================= +[task_local] +#东东萌宠 +15 6-18/6 * * * jd_pet.js, tag=东东萌宠, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdmc.png, enabled=true + +=================================Loon=================================== +[Script] +cron "15 6-18/6 * * *" script-path=jd_pet.js,tag=东东萌宠 + +===================================Surge================================ +东东萌宠 = type=cron,cronexp="15 6-18/6 * * *",wake-system=1,timeout=3600,script-path=jd_pet.js + +====================================小火箭============================= +东东萌宠 = type=cron,script-path=jd_pet.js, cronexpr="15 6-18/6 * * *", timeout=3600, enable=true + + */ +const $ = new Env('东东萌宠任务'); +let cookiesArr = [], cookie = '', jdPetShareArr = [], isBox = false, allMessage = ''; +let message = '', subTitle = '', option = {}; +let jdNotify = false; //是否关闭通知,false打开通知推送,true关闭通知推送 +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +let goodsUrl = '', taskInfoKey = []; +let notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let newShareCodes = []; +let NoNeedCodes = []; +let lnrun = 0; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') + console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +console.log(`共${cookiesArr.length}个京东账号\n`); + +!(async() => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue; + } + message = ''; + subTitle = ''; + goodsUrl = ''; + taskInfoKey = []; + option = {}; + lnrun++; + await jdPet(); + if (lnrun == 3) { + console.log(`\n【访问接口次数达到3次,休息一分钟.....】\n`); + await $.wait(60 * 1000); + lnrun = 0; + } + } + } + if ($.isNode() && allMessage && $.ctrTemp) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})() +.catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}) +.finally(() => { + $.done(); +}) +async function jdPet() { + try { + //查询jd宠物信息 + const initPetTownRes = await request('initPetTown'); + message = `【京东账号${$.index}】${$.nickName || $.UserName}\n`; + if (initPetTownRes.code === '0' && initPetTownRes.resultCode === '0' && initPetTownRes.message === 'success') { + $.petInfo = initPetTownRes.result; + if ($.petInfo.userStatus === 0) { + $.log($.name, '', `【提示】京东账号${$.index}${$.nickName || $.UserName}\n萌宠活动未开启\n请手动去京东APP开启活动\n入口:我的->游戏与互动->查看更多开启`); + return + } + if (!$.petInfo.goodsInfo) { + $.msg($.name, '', `【提示】京东账号${$.index}${$.nickName || $.UserName}\n暂未选购新的商品`, { + "open-url": "openapp.jdmoble://" + }); + if ($.isNode()) + await notify.sendNotify(`${$.name} - ${$.index} - ${$.nickName || $.UserName}`, `【提示】京东账号${$.index}${$.nickName || $.UserName}\n暂未选购新的商品`); + return + } + goodsUrl = $.petInfo.goodsInfo && $.petInfo.goodsInfo.goodsUrl; + // option['media-url'] = goodsUrl; + // console.log(`初始化萌宠信息完成: ${JSON.stringify(petInfo)}`); + if ($.petInfo.petStatus === 5) { + option['open-url'] = "openApp.jdMobile://"; + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.petInfo.goodsInfo.goodsName}已可领取\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}奖品已可领取`, `京东账号${$.index} ${$.nickName || $.UserName}\n${$.petInfo.goodsInfo.goodsName}已可领取`); + } + return + } else if ($.petInfo.petStatus === 6) { + option['open-url'] = "openApp.jdMobile://"; + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】已领取红包,但未继续领养新的物品\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}奖品已可领取`, `京东账号${$.index} ${$.nickName || $.UserName}\n已领取红包,但未继续领养新的物品`); + } + return + } + //console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${$.petInfo.shareCode}\n`); + await taskInit(); + if ($.taskInit.resultCode === '9999' || !$.taskInit.result) { + console.log('初始化任务异常, 请稍后再试'); + return + } + $.taskInfo = $.taskInit.result; + + await petSport(); //遛弯 + await masterHelpInit(); //获取助力的信息 + await doTask(); //做日常任务 + await feedPetsAgain(); //再次投食 + await energyCollect(); //收集好感度 + //await showMsg(); + + } else if (initPetTownRes.code === '0') { + console.log(`初始化萌宠失败: ${initPetTownRes.message}`); + } + } catch (e) { + $.logErr(e) + const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; + if ($.isNode()) + await notify.sendNotify(`${$.name}`, errMsg); + $.msg($.name, '', `${errMsg}`) + } +} + +// 收取所有好感度 +async function energyCollect() { + console.log('开始收取任务奖励好感度'); + let function_id = arguments.callee.name.toString(); + const response = await request(function_id); + // console.log(`收取任务奖励好感度完成:${JSON.stringify(response)}`); + if (response.resultCode === '0') { + message += `【第${response.result.medalNum + 1}块勋章完成进度】${response.result.medalPercent}%,还需收集${response.result.needCollectEnergy}好感\n`; + message += `【已获得勋章】${response.result.medalNum}块,还需收集${response.result.needCollectMedalNum}块即可兑换奖品“${$.petInfo.goodsInfo.goodsName}”\n`; + } +} +//再次投食 +async function feedPetsAgain() { + const response = await request('initPetTown'); //再次初始化萌宠 + if (response.code === '0' && response.resultCode === '0' && response.message === 'success') { + $.petInfo = response.result; + let foodAmount = $.petInfo.foodAmount; //剩余狗粮 + if (foodAmount - 100 >= 10) { + for (let i = 0; i < parseInt((foodAmount - 100) / 10); i++) { + const feedPetRes = await request('feedPets'); + await $.wait(5 * 1000); + console.log(`投食feedPetRes`); + if (feedPetRes.resultCode == 0 && feedPetRes.code == 0) { + console.log('投食成功') + } + } + const response2 = await request('initPetTown'); + $.petInfo = response2.result; + subTitle = $.petInfo.goodsInfo.goodsName; + // message += `【与爱宠相识】${$.petInfo.meetDays}天\n`; + // message += `【剩余狗粮】${$.petInfo.foodAmount}g\n`; + } else { + console.log("目前剩余狗粮:【" + foodAmount + "】g,不再继续投食,保留部分狗粮用于完成第二天任务"); + subTitle = $.petInfo.goodsInfo && $.petInfo.goodsInfo.goodsName; + // message += `【与爱宠相识】${$.petInfo.meetDays}天\n`; + // message += `【剩余狗粮】${$.petInfo.foodAmount}g\n`; + } + } else { + console.log(`初始化萌宠失败: ${JSON.stringify($.petInfo)}`); + } +} + +async function doTask() { + const { + signInit, + threeMealInit, + firstFeedInit, + feedReachInit, + inviteFriendsInit, + browseShopsInit, + taskList + } = $.taskInfo; + for (let item of taskList) { + if ($.taskInfo[item].finished) { + console.log(`任务 ${item} 已完成`) + } + } + //每日签到 + if (signInit && !signInit.finished) { + await signInitFun(); + } + // 首次喂食 + if (firstFeedInit && !firstFeedInit.finished) { + await firstFeedInitFun(); + } + // 三餐 + if (threeMealInit && !threeMealInit.finished) { + if (threeMealInit.timeRange === -1) { + console.log(`未到三餐时间`); + } else { + await threeMealInitFun(); + } + } + if (browseShopsInit && !browseShopsInit.finished) { + await browseShopsInitFun(); + } + let browseSingleShopInitList = []; + taskList.map((item) => { + if (item.indexOf('browseSingleShopInit') > -1) { + browseSingleShopInitList.push(item); + } + }); + // 去逛逛好货会场 + for (let item of browseSingleShopInitList) { + const browseSingleShopInitTask = $.taskInfo[item]; + if (browseSingleShopInitTask && !browseSingleShopInitTask.finished) { + await browseSingleShopInit(browseSingleShopInitTask); + } + } + if (inviteFriendsInit && !inviteFriendsInit.finished) { + await inviteFriendsInitFun(); + } + // 投食10次 + if (feedReachInit && !feedReachInit.finished) { + lnrun++; + await feedReachInitFun(); + if (lnrun == 5) { + console.log(`\n【访问接口次数达到5次,休息半分钟.....】\n`); + await $.wait(30 * 1000); + lnrun = 0; + } + } +} +// 好友助力信息 +async function masterHelpInit() { + let res = await request(arguments.callee.name.toString()); + // console.log(`助力信息: ${JSON.stringify(res)}`); + if (res.code === '0' && res.resultCode === '0') { + if (res.result.masterHelpPeoples && res.result.masterHelpPeoples.length >= 5) { + if (!res.result.addedBonusFlag) { + console.log("开始领取额外奖励"); + let getHelpAddedBonusResult = await request('getHelpAddedBonus'); + if (getHelpAddedBonusResult.resultCode === '0') { + message += `【额外奖励${getHelpAddedBonusResult.result.reward}领取】${getHelpAddedBonusResult.message}\n`; + } + console.log(`领取30g额外奖励结果:【${getHelpAddedBonusResult.message}】`); + } else { + console.log("已经领取过5好友助力额外奖励"); + message += `【额外奖励】已领取\n`; + } + } else { + console.log("助力好友未达到5个") + message += `【额外奖励】领取失败,原因:给您助力的人未达5个\n`; + } + if (res.result.masterHelpPeoples && res.result.masterHelpPeoples.length > 0) { + console.log('帮您助力的好友的名单开始') + let str = ''; + res.result.masterHelpPeoples.map((item, index) => { + if (index === (res.result.masterHelpPeoples.length - 1)) { + str += item.nickName || "匿名用户"; + } else { + str += (item.nickName || "匿名用户") + ','; + } + }) + message += `【助力您的好友】${str}\n`; + } + } +} +// 遛狗, 每天次数上限10次, 随机给狗粮, 每次遛狗结束需调用getSportReward领取奖励, 才能进行下一次遛狗 +async function petSport() { + console.log('开始遛弯'); + let times = 1 + const code = 0 + let resultCode = 0 + do { + let response = await request(arguments.callee.name.toString()) + console.log(`第${times}次遛狗完成: ${JSON.stringify(response)}`); + resultCode = response.resultCode; + if (resultCode == 0) { + let sportRevardResult = await request('getSportReward'); + console.log(`领取遛狗奖励完成: ${JSON.stringify(sportRevardResult)}`); + } else if (resultCode == 1013) { + let sportRevardResult = await request('getSportReward', {"version":1}); + console.log(`领取遛狗奖励完成: ${JSON.stringify(sportRevardResult)}`); + if (sportRevardResult.resultCode == 0) resultCode = 0 + } + times++; + } while (resultCode == 0 && code == 0) + if (times > 1) { + // message += '【十次遛狗】已完成\n'; + } +} +// 初始化任务, 可查询任务完成情况 +async function taskInit() { + console.log('开始任务初始化'); + $.taskInit = await request(arguments.callee.name.toString(), { + "version": 1 + }); +} +// 每日签到, 每天一次 +async function signInitFun() { + console.log('准备每日签到'); + const response = await request("getSignReward"); + console.log(`每日签到结果: ${JSON.stringify(response)}`); + if (response.code === '0' && response.resultCode === '0') { + console.log(`【每日签到成功】奖励${response.result.signReward}g狗粮\n`); + // message += `【每日签到成功】奖励${response.result.signReward}g狗粮\n`; + } else { + console.log(`【每日签到】${response.message}\n`); + // message += `【每日签到】${response.message}\n`; + } +} + +// 三餐签到, 每天三段签到时间 +async function threeMealInitFun() { + console.log('准备三餐签到'); + const response = await request("getThreeMealReward"); + console.log(`三餐签到结果: ${JSON.stringify(response)}`); + if (response.code === '0' && response.resultCode === '0') { + console.log(`【定时领狗粮】获得${response.result.threeMealReward}g\n`); + // message += `【定时领狗粮】获得${response.result.threeMealReward}g\n`; + } else { + console.log(`【定时领狗粮】${response.message}\n`); + // message += `【定时领狗粮】${response.message}\n`; + } +} + +// 浏览指定店铺 任务 +async function browseSingleShopInit(item) { + console.log(`开始做 ${item.title} 任务, ${item.desc}`); + const body = { + "index": item['index'], + "version": 1, + "type": 1 + }; + const body2 = { + "index": item['index'], + "version": 1, + "type": 2 + }; + const response = await request("getSingleShopReward", body); + // console.log(`点击进去response::${JSON.stringify(response)}`); + if (response.code === '0' && response.resultCode === '0') { + const response2 = await request("getSingleShopReward", body2); + // console.log(`浏览完毕领取奖励:response2::${JSON.stringify(response2)}`); + if (response2.code === '0' && response2.resultCode === '0') { + console.log(`【浏览指定店铺】获取${response2.result.reward}g\n`); + // message += `【浏览指定店铺】获取${response2.result.reward}g\n`; + } + } +} + +// 浏览店铺任务, 任务可能为多个? 目前只有一个 +async function browseShopsInitFun() { + console.log('开始浏览店铺任务'); + let times = 0; + let resultCode = 0; + let code = 0; + do { + let response = await request("getBrowseShopsReward"); + console.log(`第${times}次浏览店铺结果: ${JSON.stringify(response)}`); + code = response.code; + resultCode = response.resultCode; + times++; + } while (resultCode == 0 && code == 0 && times < 5) + console.log('浏览店铺任务结束'); +} +// 首次投食 任务 +function firstFeedInitFun() { + console.log('首次投食任务合并到10次喂食任务中\n'); +} + +// 邀请新用户 +async function inviteFriendsInitFun() { + console.log('邀请新用户功能未实现'); + if ($.taskInfo.inviteFriendsInit.status == 1 && $.taskInfo.inviteFriendsInit.inviteFriendsNum > 0) { + // 如果有邀请过新用户,自动领取60gg奖励 + const res = await request('getInviteFriendsReward'); + if (res.code == 0 && res.resultCode == 0) { + console.log(`领取邀请新用户奖励成功,获得狗粮现有狗粮${$.taskInfo.inviteFriendsInit.reward}g,${res.result.foodAmount}g`); + message += `【邀请新用户】获取狗粮${$.taskInfo.inviteFriendsInit.reward}g\n`; + } + } +} + +/** + * 投食10次 任务 + */ +async function feedReachInitFun() { + console.log('投食任务开始...'); + let finishedTimes = $.taskInfo.feedReachInit.hadFeedAmount / 10; //已经喂养了几次 + let needFeedTimes = 10 - finishedTimes; //还需要几次 + let tryTimes = 10; //尝试次数 + do { + console.log(`还需要投食${needFeedTimes}次`); + const response = await request('feedPets'); + await $.wait(5 * 1000); + console.log(`本次投食结果: ${JSON.stringify(response)}`); + if (response.resultCode == 0 && response.code == 0) { + needFeedTimes--; + } + if (response.resultCode == 3003 && response.code == 0) { + console.log('剩余狗粮不足, 投食结束'); + needFeedTimes = 0; + } + tryTimes--; + } while (needFeedTimes > 0 && tryTimes > 0) + console.log('投食任务结束...\n'); +} +async function showMsg() { + if ($.isNode() && process.env.PET_NOTIFY_CONTROL) { + $.ctrTemp = `${process.env.PET_NOTIFY_CONTROL}` === 'false'; + } else if ($.getdata('jdPetNotify')) { + $.ctrTemp = $.getdata('jdPetNotify') === 'false'; + } else { + $.ctrTemp = `${jdNotify}` === 'false'; + } + // jdNotify = `${notify.petNotifyControl}` === 'false' && `${jdNotify}` === 'false' && $.getdata('jdPetNotify') === 'false'; + if ($.ctrTemp) { + $.msg($.name, subTitle, message, option); + if ($.isNode()) { + allMessage += `${subTitle}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}` + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}`, `${subTitle}\n${message}`); + } + } else { + $.log(`\n${message}\n`); + } +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0 && data.base && data.base.nickname) { + $.nickName = data.base.nickname; + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e) + } + finally { + resolve(); + } + }) + }) +} +// 请求 +async function request(function_id, body = {}) { + await $.wait(5 * 1000); //歇口气儿, 不然会报操作频繁 + return new Promise((resolve, reject) => { + $.post(taskUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\n东东萌宠: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data) + } + }) + }) +} +// function taskUrl(function_id, body = {}) { +// return { +// url: `${JD_API_HOST}?functionId=${function_id}&appid=wh5&loginWQBiz=pet-town&body=${escape(JSON.stringify(body))}`, +// headers: { +// Cookie: cookie, +// UserAgent: $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), +// } +// }; +// } +function taskUrl(function_id, body = {}) { + body["version"] = 2; + body["channel"] = 'app'; + return { + url: `${JD_API_HOST}?functionId=${function_id}`, + body: `body=${encodeURIComponent(JSON.stringify(body))}&appid=wh5&loginWQBiz=pet-town&clientVersion=9.0.4`, + headers: { + 'Cookie': cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + } + }; +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + class s { + constructor(t) { + this.env = t + } + send(t, e = "GET") { + t = "string" == typeof t ? { + url: t + } + : t; + let s = this.get; + return "POST" === e && (s = this.post), + new Promise((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + get(t) { + return this.send.call(this.env, t) + } + post(t) { + return this.send.call(this.env, t, "POST") + } + } + return new class { + constructor(t, e) { + this.name = t, + this.http = new s(this), + this.data = null, + this.dataFile = "box.dat", + this.logs = [], + this.isMute = !1, + this.isNeedRewrite = !1, + this.logSeparator = "\n", + this.startTime = (new Date).getTime(), + Object.assign(this, e), + this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) + try { + s = JSON.parse(this.getdata(t)) + } catch {} + return s + } + setjson(t, e) { + try { + return this.setdata(JSON.stringify(t), e) + } catch { + return !1 + } + } + getScript(t) { + return new Promise(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, + r = e && e.timeout ? e.timeout : r; + const[o, h] = i.split("@"), + n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) + return {}; { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) + return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) + return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const[, s, i] = /^@(.*?)\.(.*?)$/.exec(t), + r = s ? this.getval(s) : ""; + if (r) + try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const[, i, r] = /^@(.*?)\.(.*?)$/.exec(e), + o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), + s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), + s = this.setval(JSON.stringify(o), i) + } + } else + s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), + this.cktough = this.cktough ? this.cktough : require("tough-cookie"), + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, + t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), + this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), + e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) + this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + }); + else if (this.isQuanX()) + t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) + new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) + return t; + if ("string" == typeof t) + return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } + : this.isSurge() ? { + url: t + } + : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), + s && t.push(s), + i && t.push(i), + console.log(t.join("\n")), + this.logs = this.logs.concat(t) + } + } + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), + console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), + this.log(), + (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + } + (t, e) +} diff --git a/jd_tyt.js b/jd_tyt.js index f2242a8..f1223d0 100644 --- a/jd_tyt.js +++ b/jd_tyt.js @@ -1,13 +1,11 @@ /* -入口 极速版 赚金币 推一推 -助力前三 - +旁白 [task_local] -#搞基大神-推一推 -3 1 * * * http://47.101.146.160/scripts/jd_tyt.js, tag=搞基大神-推一推, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +#快速推一推 +0 1 * * * jd_tyt.js, tag=推一推, img-url= */ -const $ = new Env('推一推');//助力前三个可助力的账号 +const $ = new Env('极速版-推推赚大钱');//助力前八个可助力的账号不满意去57行改即可 const notify = $.isNode() ? require('./sendNotify') : ''; //Node.js用户请在jdCookie.js处填写京东ck; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; @@ -15,9 +13,7 @@ const JD_API_HOST = 'https://api.m.jd.com'; //IOS等用户直接用NobyDa的jd cookie let cookiesArr = [], cookie = '', message; let status = '' - let inviteCodes = [] - if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]) @@ -32,7 +28,6 @@ if ($.isNode()) { $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); return; } - for (let i = 0; i < cookiesArr.length; i++) { if (cookiesArr[i]) { cookie = cookiesArr[i]; @@ -52,17 +47,15 @@ if ($.isNode()) { continue } } - console.log('\n入口 狗东极速版 赚金币 推一推\n'); - console.log('\n本脚本无任何内置助力\n如果你发现有那么就是别人二改加的\n一切与本人无关\n'); + console.log('\n入口→极速版→赚金币→推推赚大钱\n'); await info() await coinDozerBackFlow() await getCoinDozerInfo() - console.log('\n注意助力前三个可助力的账号\n'); - if (inviteCodes.length >= 3) { + console.log('\n助力前八个可助力的账号不满意去57行改即可\n'); + if (inviteCodes.length >= 7) { break } } - console.log('\n#######开始助力前三个可助力的账号#######\n'); cookiesArr.sort(function () { return .5 - Math.random(); @@ -96,24 +89,19 @@ if ($.isNode()) { .finally(() => { $.done(); }) - - function info() { return new Promise((resolve) => { const nm = { - url: `${JD_API_HOST}`, - body: `functionId=initiateCoinDozer&body={"actId":"d5a8c7198ee54de093d2adb04089d3ec","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s"}&appid=megatron&client=ios&clientVersion=14.3&t=1636014459632&networkType=4g&eid=&fp=-1&frontendInitStatus=s&uuid=8888&osVersion=14.3&d_brand=&d_model=&agent=-1&pageClickKey=-1&screen=400*700&platform=3&lang=zh_CN`, + url: `https://api.m.jd.com/?_t=1646094718628`, + body: `functionId=initiateCoinDozer&body={"actId":"49f40d2f40b3470e8d6c39aa4866c7ff","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s"}&appid=megatron&client=ios&clientVersion=14.3&t=1636014459632&networkType=4g&eid=&fp=-1&frontendInitStatus=s&uuid=8888&osVersion=14.3&d_brand=&d_model=&agent=-1&pageClickKey=-1&screen=400*700&platform=3&lang=zh_CN`, headers: { - "Cookie": cookie, "Origin": "https://pushgold.jd.com", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36", - } } $.post(nm, async (err, resp, data) => { - try { if (err) { console.log(`${JSON.stringify(err)}`) @@ -149,7 +137,7 @@ function coinDozerBackFlow() { const nm = { url: `${JD_API_HOST}`, - body: `functionId=coinDozerBackFlow&body={"actId":"d5a8c7198ee54de093d2adb04089d3ec","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s"}&appid=megatron&client=ios&clientVersion=14.3&t=1636015617899&networkType=4g&eid=&fp=-1&frontendInitStatus=s&uuid=8888&osVersion=14.3&d_brand=&d_model=&agent=-1&pageClickKey=-1&screen=400*700&platform=3&lang=zh_CN`, + body: `functionId=coinDozerBackFlow&body={"actId":"49f40d2f40b3470e8d6c39aa4866c7ff","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s"}&appid=megatron&client=ios&clientVersion=14.3&t=1636015617899&networkType=4g&eid=&fp=-1&frontendInitStatus=s&uuid=8888&osVersion=14.3&d_brand=&d_model=&agent=-1&pageClickKey=-1&screen=400*700&platform=3&lang=zh_CN`, headers: { "Cookie": cookie, @@ -190,7 +178,7 @@ function helpCoinDozer(packetId) { return new Promise((resolve) => { const nm = { url: `${JD_API_HOST}`, - body: `functionId=helpCoinDozer&appid=station-soa-h5&client=H5&clientVersion=1.0.0&t=1636015855103&body={"actId":"d5a8c7198ee54de093d2adb04089d3ec","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s","packetId":"${packetId}"}&_ste=1&_stk=appid,body,client,clientVersion,functionId,t&h5st=20211104165055104;9806356985655163;10005;tk01wd1ed1d5f30nBDriGzaeVZZ9vuiX+cBzRLExSEzpfTriRD0nxU6BbRIOcSQvnfh74uInjSeb6i+VHpnHrBJdVwzs;017f330f7a84896d31a8d6017a1504dc16be8001273aaea9a04a8d04aad033d9`, + body: `functionId=helpCoinDozer&appid=station-soa-h5&client=H5&clientVersion=1.0.0&t=1636015855103&body={"actId":"49f40d2f40b3470e8d6c39aa4866c7ff","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s","packetId":"${packetId}"}&_ste=1&_stk=appid,body,client,clientVersion,functionId,t&h5st=20211104165055104;9806356985655163;10005;tk01wd1ed1d5f30nBDriGzaeVZZ9vuiX+cBzRLExSEzpfTriRD0nxU6BbRIOcSQvnfh74uInjSeb6i+VHpnHrBJdVwzs;017f330f7a84896d31a8d6017a1504dc16be8001273aaea9a04a8d04aad033d9`, headers: { "Cookie": cookie, @@ -226,13 +214,11 @@ function helpCoinDozer(packetId) { }) }) } - - function help(packetId) { return new Promise((resolve) => { const nm = { url: `${JD_API_HOST}`, - body: `functionId=helpCoinDozer&appid=station-soa-h5&client=H5&clientVersion=1.0.0&t=1623120183787&body={"actId":"d5a8c7198ee54de093d2adb04089d3ec","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s","packetId":"${packetId}","helperStatus":"0"}&_ste=1&_stk=appid,body,client,clientVersion,functionId,t&h5st=20210608104303790;8489907903583162;10005;tk01w89681aa9a8nZDdIanIyWnVuWFLK4gnqY+05WKcPY3NWU2dcfa73B7PBM7ufJEN0U+4MyHW5N2mT/RNMq72ycJxH;7e6b956f1a8a71b269a0038bbb4abd24bcfb834a88910818cf1bdfc55b7b96e5`, + body: `functionId=helpCoinDozer&appid=station-soa-h5&client=H5&clientVersion=1.0.0&t=1623120183787&body={"actId":"49f40d2f40b3470e8d6c39aa4866c7ff","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s","packetId":"${packetId}","helperStatus":"0"}&_ste=1&_stk=appid,body,client,clientVersion,functionId,t&h5st=20210608104303790;8489907903583162;10005;tk01w89681aa9a8nZDdIanIyWnVuWFLK4gnqY+05WKcPY3NWU2dcfa73B7PBM7ufJEN0U+4MyHW5N2mT/RNMq72ycJxH;7e6b956f1a8a71b269a0038bbb4abd24bcfb834a88910818cf1bdfc55b7b96e5`, headers: { "Cookie": cookie, @@ -263,10 +249,8 @@ function help(packetId) { if (data.msg.indexOf("完成") != -1) { $.ok = true } - } } - } catch (e) { $.logErr(e, resp) } finally { @@ -281,13 +265,11 @@ function getCoinDozerInfo() { const nm = { url: `${JD_API_HOST}`, - body: `functionId=getCoinDozerInfo&body={"actId":"d5a8c7198ee54de093d2adb04089d3ec","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s"}&appid=megatron&client=ios&clientVersion=14.3&t=1636015858295&networkType=4g&eid=&fp=-1&frontendInitStatus=s&uuid=8888&osVersion=14.3&d_brand=&d_model=&agent=-1&pageClickKey=-1&screen=400*700&platform=3&lang=zh_CN`, + body: `functionId=getCoinDozerInfo&body={"actId":"49f40d2f40b3470e8d6c39aa4866c7ff","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s"}&appid=megatron&client=ios&clientVersion=14.3&t=1636015858295&networkType=4g&eid=&fp=-1&frontendInitStatus=s&uuid=8888&osVersion=14.3&d_brand=&d_model=&agent=-1&pageClickKey=-1&screen=400*700&platform=3&lang=zh_CN`, headers: { - "Cookie": cookie, "Origin": "https://pushgold.jd.com", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36", - } } $.post(nm, async (err, resp, data) => { @@ -300,7 +282,7 @@ function getCoinDozerInfo() { if (safeGet(data)) { data = JSON.parse(data); if (data.success == true && data?.data?.sponsorActivityInfo?.packetId) { - console.log('叼毛:' + data.data.sponsorActivityInfo.initiatorNickname) + console.log('CK:' + data.data.sponsorActivityInfo.initiatorNickname) console.log('邀请码:' + data.data.sponsorActivityInfo.packetId) console.log('推出:' + data.data.sponsorActivityInfo.dismantledAmount) if (data.data && data.data.sponsorActivityInfo.packetId) { diff --git a/sendNotify.js b/sendNotify.js index d7549a0..1e5801d 100644 --- a/sendNotify.js +++ b/sendNotify.js @@ -14,7 +14,7 @@ const querystring = require('querystring'); const exec = require('child_process').exec; const $ = new Env(); const timeout = 15000; //超时时间(单位毫秒) -console.log("加载sendNotify,当前版本: 20220217"); +console.log("加载sendNotify,当前版本: 20220302"); // =======================================go-cqhttp通知设置区域=========================================== //gobot_url 填写请求地址http://127.0.0.1/send_private_msg //gobot_token 填写在go-cqhttp文件设置的访问密钥 @@ -1587,7 +1587,7 @@ function getQLinfo(strCK, intcreated, strTimestamp, strRemark) { var strCheckCK = strCK.match(/pt_key=([^; ]+)(?=;?)/) && strCK.match(/pt_key=([^; ]+)(?=;?)/)[1]; var strPtPin = decodeURIComponent(strCK.match(/pt_pin=([^; ]+)(?=;?)/) && strCK.match(/pt_pin=([^; ]+)(?=;?)/)[1]); var strReturn = ""; - if (strCheckCK.substring(0, 4) == "AAJh") { + if (strCheckCK.substring(0, 3) == "AAJ") { var DateCreated = new Date(intcreated); var DateTimestamp = new Date(strTimestamp); var DateToday = new Date();