diff --git a/TS_USER_AGENTS.js b/TS_USER_AGENTS.js index 3125257..94e1e11 100755 --- a/TS_USER_AGENTS.js +++ b/TS_USER_AGENTS.js @@ -36,7 +36,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) { } }; exports.__esModule = true; -exports.getFarmShareCode = exports.getBeanShareCode = exports.TotalBean = void 0; +exports.getRandomNumberByRange = exports.wait = exports.requireConfig = exports.getFarmShareCode = exports.getBeanShareCode = exports.TotalBean = void 0; var axios_1 = require("axios"); var USER_AGENTS = [ "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", @@ -79,6 +79,7 @@ var USER_AGENTS = [ function getRandomNumberByRange(start, end) { return Math.floor(Math.random() * (end - start) + start); } +exports.getRandomNumberByRange = getRandomNumberByRange; var USER_AGENT = USER_AGENTS[getRandomNumberByRange(0, USER_AGENTS.length)]; function getBeanShareCode(cookie) { var _a, _b; @@ -172,4 +173,27 @@ function TotalBean(cookie) { }); } exports.TotalBean = TotalBean; +function requireConfig() { + var cookiesArr = []; + return new Promise(function (resolve) { + console.log('开始获取配置文件\n'); + var jdCookieNode = require('./jdCookie.js'); + Object.keys(jdCookieNode).forEach(function (item) { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]); + } + }); + console.log("\u5171" + cookiesArr.length + "\u4E2A\u4EAC\u4E1C\u8D26\u53F7\n"); + resolve(cookiesArr); + }); +} +exports.requireConfig = requireConfig; +function wait(t) { + return new Promise(function (resolve) { + setTimeout(function () { + resolve(); + }, t); + }); +} +exports.wait = wait; exports["default"] = USER_AGENT; \ No newline at end of file diff --git a/jd_big_winner.js b/jd_big_winner.js index d319de7..73c027b 100755 --- a/jd_big_winner.js +++ b/jd_big_winner.js @@ -23,7 +23,7 @@ const notify = $.isNode() ? require('./sendNotify') : ''; //Node.js用户请在jdCookie.js处填写京东ck; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; //IOS等用户直接用NobyDa的jd cookie -let cookiesArr = [], cookie = '', message = '', linkId = 'DA4SkG7NXupA9sksI00L0g', fflLinkId = 'YhCkrVusBVa_O2K-7xE6hA'; +let cookiesArr = [], cookie = '', message = '', linkId = 'yMVR-_QKRd2Mq27xguJG-w', fflLinkId = 'YhCkrVusBVa_O2K-7xE6hA'; let GetCash = 0.3; const JD_API_HOST = 'https://api.m.jd.com/api'; if ($.isNode()) { @@ -38,10 +38,9 @@ if ($.isNode()) { ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); } const len = cookiesArr.length; - if ($.isNode() && process.env.BIG_WINNER_CASH) { - GetCash = process.env.BIG_WINNER_CASH; - } + GetCash = process.env.BIG_WINNER_CASH; +} !(async () => { $.redPacketId = [] if (!cookiesArr[0]) { diff --git a/jd_blueCoin.js b/jd_blueCoin.js index d53309d..7443fce 100755 --- a/jd_blueCoin.js +++ b/jd_blueCoin.js @@ -1,10 +1,9 @@ /* -东东超市兑换奖品 脚本地址:jd_blueCoin.js -感谢@yangtingxiao提供PR -更新时间:2021-6-7 -活动入口:京东APP我的-更多工具-东东超市 -支持京东多个账号 -脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js + +能不能用不知道 + +没机会抓新包 + ============QuantumultX============== [task_local] #东东超市兑换奖品 @@ -20,12 +19,13 @@ cron "0 0 0 * * *" script-path=jd_blueCoin.js,tag=东东超市兑换奖品 ============小火箭========= 东东超市兑换奖品 = type=cron,script-path=jd_blueCoin.js, cronexpr="0 0 0 * * *", timeout=3600, enable=true */ + const $ = new Env('东东超市兑换奖品'); const notify = $.isNode() ? require('./sendNotify') : ''; let allMessage = ''; //Node.js用户请在jdCookie.js处填写京东ck; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; -let coinToBeans = $.getdata('coinToBeans') || 20; //兑换多少数量的京豆(20或者1000),0表示不兑换,默认不兑换京豆,如需兑换把0改成20或者1000,或者'商品名称'(商品名称放到单引号内)即可 +let coinToBeans = $.getdata('coinToBeans') || "超值京豆包"; //兑换多少数量的京豆(20或者1000),0表示不兑换,默认不兑换京豆,如需兑换把0改成20或者1000,或者'商品名称'(商品名称放到单引号内)即可 let jdNotify = false;//是否开启静默运行,默认false关闭(即:奖品兑换成功后会发出通知提示) //IOS等用户直接用NobyDa的jd cookie let cookiesArr = [], cookie = ''; @@ -33,26 +33,13 @@ if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]) }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + 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); } const JD_API_HOST = `https://api.m.jd.com/api?appid=jdsupermarket`; -Date.prototype.Format = function (fmt) { //author: meizz - var o = { - "M+": this.getMonth() + 1, //月份 - "d+": this.getDate(), //日 - "h+": this.getHours(), //小时 - "m+": this.getMinutes(), //分 - "s+": this.getSeconds(), //秒 - "S": this.getMilliseconds() //毫秒 - }; - if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); - for (var k in o) - if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); - return fmt; -} !(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"}); @@ -74,7 +61,7 @@ Date.prototype.Format = function (fmt) { //author: meizz //console.log($.coincount); $.isLogin = true; $.nickName = ''; - await TotalBean(); + // await TotalBean(); console.log(`\n****开始【京东账号${$.index}】${$.nickName || $.UserName}****\n`); // console.log(`目前暂无兑换酒类的奖品功能,即使输入酒类名称,脚本也会提示下架\n`) if (!$.isLogin) { @@ -112,13 +99,6 @@ Date.prototype.Format = function (fmt) { //author: meizz .finally(() => $.done()) async function PrizeIndex() { - let timel = new Date().Format("ss") - let timea = 58; - if(timel < 58) { - let timec = (timea - timel) * 1000; - console.log(`等待时间 ${timec / 1000}`); - await sleep(timec) - } await smtg_queryPrize(); // await smtg_materialPrizeIndex();//兑换酒类奖品,此兑换API与之前的兑换京豆类的不一致,故目前无法进行 // await Promise.all([ @@ -129,56 +109,52 @@ async function PrizeIndex() { const prizeList = [...$.queryPrizeData]; if (prizeList && prizeList.length) { if (`${coinToBeans}` === '1000') { - if (prizeList[1] && prizeList[1].type === 3) { - console.log(`查询换${prizeList[1].name}ID成功,ID:${prizeList[1].prizeId}`) - $.title = prizeList[1].name; - $.blueCost = prizeList[1].cost; - } else { - console.log(`查询换1000京豆ID失败`) - $.beanerr = `东哥今天不给换`; - return ; - } - // if (prizeList[1] && prizeList[1].status === 2) { - // $.beanerr = `失败,1000京豆领光了,请明天再来`; - // return ; - // } - if (prizeList[1] && prizeList[1].limit === prizeList[1] && prizeList[1].finished) { - $.beanerr = `${prizeList[1].name}`; - return ; - } - //兑换1000京豆 - if ($.totalBlue > $.blueCost) { - for (let j = 0; j <= 10; j++) { - await smtg_obtainPrize(prizeList[1].prizeId); - } - } else { - console.log(`兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`); - $.beanerr = `兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`; - } - } else if (`${coinToBeans}` === '20') { if (prizeList[0] && prizeList[0].type === 3) { console.log(`查询换${prizeList[0].name}ID成功,ID:${prizeList[0].prizeId}`) $.title = prizeList[0].name; $.blueCost = prizeList[0].cost; + } else { + console.log(`查询换1000京豆ID失败`) + $.beanerr = `东哥今天不给换`; + return; + } + if (prizeList[0] && prizeList[0].inStock === 506) { + $.beanerr = `失败,1000京豆领光了,请明天再来`; + return; + } + if (prizeList[0] && prizeList[0].limit === prizeList[0] && prizeList[0].finished) { + $.beanerr = `${prizeList[0].name}`; + return; + } + //兑换1000京豆 + if ($.totalBlue > $.blueCost) { + await smtg_obtainPrize(prizeList[0].prizeId); + } else { + console.log(`兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`); + $.beanerr = `兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`; + } + } else if (`${coinToBeans}` === '20') { + if (prizeList[1] && prizeList[1].type === 3) { + console.log(`查询换${prizeList[1].name}ID成功,ID:${prizeList[1].prizeId}`) + $.title = prizeList[1].name; + $.blueCost = prizeList[1].cost; } else { console.log(`查询换万能的京豆ID失败`) $.beanerr = `东哥今天不给换`; - return ; + return; + } + if (prizeList[0] && prizeList[0].inStock === 506) { + console.log(`失败,万能的京豆领光了,请明天再来`); + $.beanerr = `失败,万能的京豆领光了,请明天再来`; + return; } - // if (prizeList[0] && prizeList[0].status === 2) { - // console.log(`失败,万能的京豆领光了,请明天再来`); - // $.beanerr = `失败,万能的京豆领光了,请明天再来`; - // return ; - // } if ((prizeList[0] && prizeList[0].limit) === (prizeList[0] && prizeList[0].finished)) { $.beanerr = `${prizeList[0].name}`; - return ; + return; } //兑换万能的京豆(1-20京豆) if ($.totalBlue > $.blueCost) { - for (let j = 0; j <= 10; j++) { - await smtg_obtainPrize(prizeList[0].prizeId, 1000); - } + await smtg_obtainPrize(prizeList[0].prizeId, 1000); } else { console.log(`兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`); $.beanerr = `兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`; @@ -187,7 +163,7 @@ async function PrizeIndex() { //自定义输入兑换 console.log(`\n\n温馨提示:需兑换商品的名称设置请尽量与其他商品有区分度,否则可能会兑换成其他类似商品\n\n`) let prizeId = '', i; - for (let index = 0; index < prizeList.length; index ++) { + for (let index = 0; index < prizeList.length; index++) { if (prizeList[index].name.indexOf(coinToBeans) > -1) { prizeId = prizeList[index].prizeId; i = index; @@ -201,21 +177,17 @@ async function PrizeIndex() { if (prizeList[i].inStock === 506 || prizeList[i].inStock === -1) { console.log(`失败,您输入设置的${coinToBeans}领光了,请明天再来`); $.beanerr = `失败,您输入设置的${coinToBeans}领光了,请明天再来`; - return ; + return; } if ((prizeList[i].targetNum) && prizeList[i].targetNum === prizeList[i].finishNum) { $.beanerr = `${prizeList[0].subTitle}`; - return ; + return; } if ($.totalBlue > $.blueCost) { if ($.type === 4 && !$.beanType) { - for (let j = 0; j <= 10; j++) { - await smtg_obtainPrize(prizeId, 0, "smtg_lockMaterialPrize") - } + await smtg_obtainPrize(prizeId, 0, "smtg_lockMaterialPrize") } else { - for (let j = 0; j <= 10; j++) { - await smtg_obtainPrize(prizeId); - } + await smtg_obtainPrize(prizeId); } } else { console.log(`兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`); @@ -228,22 +200,23 @@ async function PrizeIndex() { } } } + //查询白酒类奖品列表API function smtg_materialPrizeIndex(timeout = 0) { $.materialPrizeIndex = []; return new Promise((resolve) => { - setTimeout( ()=>{ + setTimeout(() => { let url = { - url : `${JD_API_HOST}&functionId=smtg_materialPrizeIndex&clientVersion=8.0.0&client=m&body=%7B%22channel%22:%221%22%7D&t=${Date.now()}`, - headers : { - 'Origin' : `https://jdsupermarket.jd.com`, - 'Cookie' : cookie, - 'Connection' : `keep-alive`, - 'Accept' : `application/json, text/plain, */*`, - 'Referer' : `https://jdsupermarket.jd.com/game/?tt=1597540727225`, - 'Host' : `api.m.jd.com`, - 'Accept-Encoding' : `gzip, deflate, br`, - 'Accept-Language' : `zh-cn` + url: `${JD_API_HOST}&functionId=smtg_materialPrizeIndex&clientVersion=8.0.0&client=m&body=%7B%22channel%22:%221%22%7D&t=${Date.now()}`, + headers: { + 'Origin': `https://jdsupermarket.jd.com`, + 'Cookie': cookie, + 'Connection': `keep-alive`, + 'Accept': `application/json, text/plain, */*`, + 'Referer': `https://jdsupermarket.jd.com/game/?tt=1597540727225`, + 'Host': `api.m.jd.com`, + 'Accept-Encoding': `gzip, deflate, br`, + 'Accept-Language': `zh-cn` } } $.post(url, async (err, resp, data) => { @@ -262,25 +235,26 @@ function smtg_materialPrizeIndex(timeout = 0) { resolve() } }) - },timeout) + }, timeout) }) } + //查询任务 -function smtg_queryPrize(timeout = 0){ +function smtg_queryPrize(timeout = 0) { $.queryPrizeData = []; return new Promise((resolve) => { - setTimeout( ()=>{ + setTimeout(() => { let url = { - url : `${JD_API_HOST}&functionId=smt_queryPrizeAreas&clientVersion=8.0.0&client=m&body=%7B%22channel%22%3A%2218%22%7D&t=${Date.now()}`, - headers : { - 'Origin' : `https://jdsupermarket.jd.com`, - 'Cookie' : cookie, - 'Connection' : `keep-alive`, - 'Accept' : `application/json, text/plain, */*`, - 'Referer' : `https://jdsupermarket.jd.com/game/?tt=1597540727225`, - 'Host' : `api.m.jd.com`, - 'Accept-Encoding' : `gzip, deflate, br`, - 'Accept-Language' : `zh-cn` + url: `${JD_API_HOST}&functionId=smt_queryPrizeAreas&clientVersion=8.0.0&client=m&body=%7B%22channel%22%3A%2218%22%7D&t=${Date.now()}`, + headers: { + 'Origin': `https://jdsupermarket.jd.com`, + 'Cookie': cookie, + 'Connection': `keep-alive`, + 'Accept': `application/json, text/plain, */*`, + 'Referer': `https://jdsupermarket.jd.com/game/?tt=1597540727225`, + 'Host': `api.m.jd.com`, + 'Accept-Encoding': `gzip, deflate, br`, + 'Accept-Language': `zh-cn` } } $.post(url, async (err, resp, data) => { @@ -294,7 +268,7 @@ function smtg_queryPrize(timeout = 0){ return } if (data.data.bizCode === 0) { - const { areas } = data.data.result; + const {areas} = data.data.result; const prizes = areas.filter(vo => vo['type'] === 4); if (prizes && prizes[0]) { $.areaId = prizes[0].areaId; @@ -309,9 +283,10 @@ function smtg_queryPrize(timeout = 0){ resolve() } }) - },timeout) + }, timeout) }) } + //换京豆 function smtg_obtainPrize(prizeId, timeout = 0, functionId = 'smt_exchangePrize') { //1000京豆,prizeId为4401379726 @@ -333,18 +308,18 @@ function smtg_obtainPrize(prizeId, timeout = 0, functionId = 'smt_exchangePrize' "channel": "18" } return new Promise((resolve) => { - setTimeout( ()=>{ + setTimeout(() => { let url = { - url : `${JD_API_HOST}&functionId=${functionId}&clientVersion=8.0.0&client=m&body=${encodeURIComponent(JSON.stringify(body))}&t=${Date.now()}`, - headers : { - 'Origin' : `https://jdsupermarket.jd.com`, - 'Cookie' : cookie, - 'Connection' : `keep-alive`, - 'Accept' : `application/json, text/plain, */*`, - 'Referer' : `https://jdsupermarket.jd.com/game/?tt=1597540727225`, - 'Host' : `api.m.jd.com`, - 'Accept-Encoding' : `gzip, deflate, br`, - 'Accept-Language' : `zh-cn` + url: `${JD_API_HOST}&functionId=${functionId}&clientVersion=8.0.0&client=m&body=${encodeURIComponent(JSON.stringify(body))}&t=${Date.now()}`, + headers: { + 'Origin': `https://jdsupermarket.jd.com`, + 'Cookie': cookie, + 'Connection': `keep-alive`, + 'Accept': `application/json, text/plain, */*`, + 'Referer': `https://jdsupermarket.jd.com/game/?tt=1597540727225`, + 'Host': `api.m.jd.com`, + 'Accept-Encoding': `gzip, deflate, br`, + 'Accept-Language': `zh-cn` } } $.post(url, async (err, resp, data) => { @@ -359,21 +334,21 @@ function smtg_obtainPrize(prizeId, timeout = 0, functionId = 'smt_exchangePrize' return } if ($.data.data.bizCode === 106) { - $.errBizCodeCount ++; + $.errBizCodeCount++; console.log(`debug 兑换京豆活动火爆次数:${$.errBizCodeCount}`); if ($.errBizCodeCount >= 20) return } if ($.data.data.bizCode === 0) { if (`${coinToBeans}` === '1000') { - $.beanscount ++; + $.beanscount++; console.log(`【京东账号${$.index}】${$.nickName || $.UserName} 第${$.data.data.result.count}次换${$.title}成功`) if ($.beanscount === 1) return; } else if (`${coinToBeans}` === '20') { - $.beanscount ++; + $.beanscount++; console.log(`【京东账号${$.index}】${$.nickName || $.UserName} 第${$.data.data.result.count}次换${$.title}成功`) if ($.data.data.result.count === 20 || $.beanscount === coinToBeans || $.data.data.result.blue < $.blueCost) return; } else { - $.beanscount ++; + $.beanscount++; console.log(`【京东账号${$.index}】${$.nickName || $.UserName} 第${$.data.data.result.count}次换${$.title}成功`) if ($.beanscount === 1) return; } @@ -386,9 +361,10 @@ function smtg_obtainPrize(prizeId, timeout = 0, functionId = 'smt_exchangePrize' resolve() } }) - },timeout) + }, timeout) }) } + function smtgHome() { return new Promise((resolve) => { $.get(taskUrl('smtg_newHome'), (err, resp, data) => { @@ -400,7 +376,7 @@ function smtgHome() { if (safeGet(data)) { data = JSON.parse(data); if (data.data.bizCode === 0) { - const { result } = data.data; + const {result} = data.data; $.totalGold = result.totalGold; $.totalBlue = result.totalBlue; // console.log(`【总金币】${$.totalGold}个\n`); @@ -416,9 +392,7 @@ function smtgHome() { }) }) } -function sleep(timeout) { - return new Promise((resolve) => setTimeout(resolve, timeout)); -} + //通知 function msgShow() { // $.msg($.name, ``, `【京东账号${$.index}】${$.nickName}\n【收取蓝币】${$.coincount ? `${$.coincount}个` : $.coinerr }${coinToBeans ? `\n【兑换京豆】${ $.beanscount ? `${$.beanscount}个` : $.beanerr}` : ""}`); @@ -433,7 +407,7 @@ function msgShow() { } //默认只在兑换奖品成功后弹窗提醒。情况情况加,只打印日志,不弹窗 if ($.beanscount && $.ctrTemp) { - $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n${coinToBeans ? `【兑换${$.title}】${ $.beanscount ? `成功,数量:${$.beanscount}个` : $.beanerr}` : "您设置的是不兑换奖品"}`); + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n${coinToBeans ? `【兑换${$.title}】${$.beanscount ? `成功,数量:${$.beanscount}个` : $.beanerr}` : "您设置的是不兑换奖品"}`); allMessage += `【京东账号${$.index}】${$.nickName || $.UserName}\n${coinToBeans ? `【兑换${$.title}】${$.beanscount ? `成功,数量:${$.beanscount}个` : $.beanerr}` : "您设置的是不兑换奖品"}${$.index !== cookiesArr.length ? '\n\n' : ''}` // if ($.isNode()) { // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName}\n${coinToBeans ? `【兑换${$.title}】${$.beanscount ? `成功,数量:${$.beanscount}个` : $.beanerr}` : "您设置的是不兑换奖品"}`) @@ -442,6 +416,7 @@ function msgShow() { resolve() }) } + function TotalBean() { return new Promise(async resolve => { const options = { @@ -486,6 +461,7 @@ function TotalBean() { }) }) } + function safeGet(data) { try { if (typeof JSON.parse(data) == "object") { @@ -497,6 +473,7 @@ function safeGet(data) { return false; } } + function taskUrl(function_id, body = {}) { return { url: `${JD_API_HOST}&functionId=${function_id}&clientVersion=8.0.0&client=m&body=${escape(JSON.stringify(body))}&t=${Date.now()}`, @@ -509,6 +486,7 @@ function taskUrl(function_id, body = {}) { } } } + function jsonParse(str) { if (typeof str == "string") { try { @@ -520,4 +498,291 @@ function jsonParse(str) { } } } -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)} \ No newline at end of file + +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) +} \ No newline at end of file diff --git a/jd_cfd.ts b/jd_cfd.ts index d80877b..09e5e5f 100755 --- a/jd_cfd.ts +++ b/jd_cfd.ts @@ -12,7 +12,7 @@ import {format} from 'date-fns'; import axios from 'axios'; - import USER_AGENT, {TotalBean, getBeanShareCode, getFarmShareCode} from './TS_USER_AGENTS'; + import USER_AGENT, {requireConfig, TotalBean, getBeanShareCode, getFarmShareCode, getRandomNumberByRange, wait} from './TS_USER_AGENTS'; import {Md5} from 'ts-md5' import * as dotenv from 'dotenv'; @@ -20,7 +20,7 @@ const notify = require('./sendNotify') dotenv.config() let appId: number = 10028, fingerprint: string | number, token: string = '', enCryptMethodJD: any; - let cookie: string = '', cookiesArr: string[] = [], res: any = '', shareCodes: string[] = []; + let cookie: string = '', res: any = '', shareCodes: string[] = [], isCollector: Boolean = false; let HELP_HW: string = process.env.HELP_HW ? process.env.HELP_HW : "true"; console.log('帮助HelloWorld:', HELP_HW) @@ -56,13 +56,15 @@ ddwCount?: number, __t?: number, strBT?: string, - dwCurStageEndCnt?: number + dwCurStageEndCnt?: number, + dwRewardType?: number, + dwRubbishId?: number } let UserName: string, index: number; !(async () => { await requestAlgo(); - await requireConfig(); + let cookiesArr: any = await requireConfig(); for (let i = 0; i < cookiesArr.length; i++) { cookie = cookiesArr[i]; UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) @@ -105,7 +107,8 @@ for (let stage of res.stagelist) { if (res.dwCurProgress >= stage.dwCurStageEndCnt && stage.dwIsAward === 0) { let awardRes: any = await api('user/ComposeGameAward', '__t,dwCurStageEndCnt,strZone', {__t: Date.now(), dwCurStageEndCnt: stage.dwCurStageEndCnt}) - console.log('珍珠领奖:', awardRes.ddwCoin) + console.log(awardRes) + console.log('珍珠领奖:', awardRes.ddwCoin, awardRes.addMonety) await wait(3000) } } @@ -153,6 +156,11 @@ if (res.StoryInfo.StoryList[0].Collector) { console.log('收藏家出现') + // TODO 背包满了再卖给收破烂的 + // res = await api('story/CollectorOper', '_cfd_t,bizCode,dwEnv,ptag,source,strZone,strStoryId,dwType,ddwTriggerDay', {strStoryId: res.StoryInfo.StoryList[0].strStoryId, dwType: '2', ddwTriggerDay: res.StoryInfo.StoryList[0].ddwTriggerDay}) + // console.log(res) + // await wait(1000) + // isCollector = true } } @@ -160,7 +168,6 @@ res = await api('story/querystorageroom', '_cfd_t,bizCode,dwEnv,ptag,source,strZone') let bags: number[] = [] for (let s of res.Data.Office) { - console.log(s.dwCount, s.dwType) bags.push(s.dwType) bags.push(s.dwCount) } @@ -174,14 +181,21 @@ } if (bags.length !== 0) { res = await api('story/sellgoods', '_cfd_t,bizCode,dwEnv,dwSceneId,ptag,source,strTypeCnt,strZone', - {dwSceneId: '1', strTypeCnt: strTypeCnt}) + {dwSceneId: isCollector ? '2' : '1', strTypeCnt: strTypeCnt}) console.log('卖贝壳收入:', res.Data.ddwCoin, res.Data.ddwMoney) } // 垃圾🚮 res = await api('story/QueryRubbishInfo', '_cfd_t,bizCode,dwEnv,ptag,source,strZone') if (res.Data.StoryInfo.StoryList.length !== 0) { - await api('story/RubbishOper', '') + console.log('有垃圾') + await api('story/RubbishOper', '_cfd_t,bizCode,dwEnv,dwRewardType,dwType,ptag,source,strZone', {dwType: '1', dwRewardType: 0}) + await wait(1000) + for (let j = 1; j < 9; j++) { + res = await api('story/RubbishOper', '_cfd_t,bizCode,dwEnv,dwRewardType,dwRubbishId,dwType,ptag,source,strZone', {dwType: '2', dwRewardType: 0, dwRubbishId: j}) + console.log('垃圾分类:', res.Data.RubbishGame.AllRubbish.ddwCoin) + await wait(1500) + } } // 任务➡️ @@ -361,7 +375,6 @@ resolve() }) .catch((e) => { - console.log(e) reject('访问助力池出错') }) }) @@ -427,20 +440,6 @@ return encodeURIComponent(["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat(appId.toString()), "".concat(token), "".concat(hash2)].join(";")) } - function requireConfig() { - return new Promise(resolve => { - console.log('开始获取配置文件\n') - const jdCookieNode = require('./jdCookie.js'); - Object.keys(jdCookieNode).forEach((item) => { - if (jdCookieNode[item]) { - cookiesArr.push(jdCookieNode[item]) - } - }) - console.log(`共${cookiesArr.length}个京东账号\n`) - resolve() - }) - } - function generateFp() { let e = "0123456789"; let a = 13; @@ -455,16 +454,4 @@ let r = url.split('?')[1].match(reg); if (r != null) return unescape(r[2]); return ''; - } - - function wait(t: number) { - return new Promise(resolve => { - setTimeout(() => { - resolve() - }, t) - }) - } - - function getRandomNumberByRange(start: number, end: number): number { - return Math.floor(Math.random() * (end - start) + start) } \ No newline at end of file diff --git a/jd_cfd_cashOut.ts b/jd_cfd_cashOut.ts new file mode 100755 index 0000000..05cabc7 --- /dev/null +++ b/jd_cfd_cashOut.ts @@ -0,0 +1,290 @@ +/** + * 提现金额,可选0.1 0.5 1 2 10 + * export CFD_CASHOUT_MONEY=0.1 + * + * 解锁提现方式二选一:1.升级1个建筑(优先) 2.完成日常任务 + * 自动模拟提现token,不需要抓包 + */ + + import {format} from 'date-fns'; + import axios from 'axios'; + import {Md5} from 'ts-md5' + import USER_AGENT, {requireConfig, TotalBean, wait} from './TS_USER_AGENTS'; + import * as dotenv from 'dotenv'; + + const CryptoJS = require('crypto-js') + const notify = require('./sendNotify') + dotenv.config() + let appId: number = 10028, fingerprint: string | number, token: string = '', enCryptMethodJD: any; + let cookie: string = '', res: any = '', UserName: string, index: number; + + let money: number = process.env.CFD_CASHOUT_MONEY ? parseFloat(process.env.CFD_CASHOUT_MONEY) * 100 : 10 + + interface Params { + ddwMoney?: number, + ddwPaperMoney?: number, + strPgtimestamp?: string, + strPgUUNum?: string, + strPhoneID?: string, + strBuildIndex?: string, + dwType?: string, + dwFirst?: number, + __t?: number, + strBT?: string, + dwIdentityType?: number, + strBussKey?: string, + strMyShareId?: string, + ddwCount?: number, + taskId?: number, + ddwConsumeCoin?: number, + dwIsFree?: number, + ddwCostCoin?: number, + + } + + !(async () => { + await requestAlgo(); + let cookiesArr: any = await requireConfig(); + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + index = i + 1; + let {isLogin, nickName}: any = await TotalBean(cookie) + if (!isLogin) { + notify.sendNotify(__filename.split('/').pop(), `cookie已失效\n京东账号${index}:${nickName || UserName}`) + continue + } + console.log(`\n开始【京东账号${index}】${nickName || UserName}\n`); + let finish: Boolean = false; + + for (let b of ['food', 'fun', 'shop', 'sea']) { + res = await api('user/GetBuildInfo', '_cfd_t,bizCode,dwEnv,dwType,ptag,source,strBuildIndex,strZone', {strBuildIndex: b}) + if (res.dwCanLvlUp === 1) { + res = await api('user/BuildLvlUp', '_cfd_t,bizCode,ddwCostCoin,dwEnv,ptag,source,strBuildIndex,strZone', {ddwCostCoin: res.ddwNextLvlCostCoin, strBuildIndex: b}) + if (res.iRet === 0) { + console.log(`升级成功:`, res) // ddwSendRichValue + finish = true + break + } + } + } + + if (!finish) { + for (let j = 0; j < 2; j++) { + for (let b of ['food', 'fun', 'shop', 'sea']) { + res = await api('user/CollectCoin', '_cfd_t,bizCode,dwEnv,dwType,ptag,source,strBuildIndex,strZone', {strBuildIndex: b, dwType: '1'}) + console.log(`${b}收金币:`, res.ddwCoin) + await wait(500) + } + } + + while (1) { + res = await speedUp('_cfd_t,bizCode,dwEnv,ptag,source,strBuildIndex,strZone') + console.log('今日热气球:', res.dwTodaySpeedPeople) + if (res.dwTodaySpeedPeople >= 20) + break + await wait(300) + } + + res = await api('user/ComposeGameState', '', {dwFirst: 1}) + let strDT: string = res.strDT, strMyShareId: string = res.strMyShareId + res = await api('user/RealTmReport', '', {dwIdentityType: 0, strBussKey: 'composegame', strMyShareId: strMyShareId, ddwCount: 5}) + await wait(1000) + res = await api('user/ComposeGameAddProcess', '__t,strBT,strZone', {__t: Date.now(), strBT: strDT}) + + res = await api('user/EmployTourGuideInfo', '_cfd_t,bizCode,dwEnv,ptag,source,strZone') + if (!res.TourGuideList) { + console.log('手动雇佣4个试用导游') + } else { + for (let e of res.TourGuideList) { + if (e.strBuildIndex !== 'food' && e.ddwRemainTm === 0) { + let employ: any = await api('user/EmployTourGuide', '_cfd_t,bizCode,ddwConsumeCoin,dwEnv,dwIsFree,ptag,source,strBuildIndex,strZone', + {ddwConsumeCoin: e.ddwCostCoin, dwIsFree: 0, strBuildIndex: e.strBuildIndex}) + if (employ.iRet === 0) + console.log(`雇佣${e.strBuildIndex}导游成功`) + await wait(300) + } + } + } + + // 任务➡️ + let tasks: any + tasks = await api('story/GetActTask', '_cfd_t,bizCode,dwEnv,ptag,source,strZone') + for (let t of tasks.Data.TaskList) { + if (t.dwCompleteNum === t.dwTargetNum && t.dwAwardStatus === 2) { + res = await api('Award', '_cfd_t,bizCode,dwEnv,ptag,source,strZone,taskId', {taskId: t.ddwTaskId}) + if (res.ret === 0) { + console.log(`${t.strTaskName}领奖成功:`, res.data.prizeInfo) + } + await wait(300) + } + } + res = await api('story/ActTaskAward', '_cfd_t,bizCode,dwEnv,ptag,source,strZone') + console.log('100财富任务完成:', res) + } + + // 提现 + console.log('开始提现:', format(new Date(), 'hh:mm:ss:SSS')) + let token: any = await getJxToken(cookie) + console.log(token) + res = await api('user/CashOutQuali', + '_cfd_t,bizCode,dwEnv,ptag,source,strPgUUNum,strPgtimestamp,strPhoneID,strZone', + {strPgUUNum: token.strPgUUNum, strPgtimestamp: token.strPgtimestamp, strPhoneID: token.strPhoneID}) + console.log('资格:', res) + await wait(2000) + res = await api('user/CashOut', + '_cfd_t,bizCode,ddwMoney,ddwPaperMoney,dwEnv,ptag,source,strPgUUNum,strPgtimestamp,strPhoneID,strZone', + {ddwMoney: money, ddwPaperMoney: money * 10, strPgUUNum: token.strPgUUNum, strPgtimestamp: token.strPgtimestamp, strPhoneID: token.strPhoneID}) + console.log('提现:', res) + } + })() + + function getJxToken(cookie: string) { + function generateStr(input: number) { + let src = 'abcdefghijklmnopqrstuvwxyz1234567890'; + let res = ''; + for (let i = 0; i < input; i++) { + res += src[Math.floor(src.length * Math.random())]; + } + return res; + } + + return new Promise(resolve => { + let phoneId = generateStr(40); + let timestamp = Date.now().toString(); + if (!cookie['match'](/pt_pin=([^; ]+)(?=;?)/)) { + console.log('此账号cookie填写不规范,你的pt_pin=xxx后面没分号(;)\n'); + resolve({}); + } + let nickname = cookie.match(/pt_pin=([^;]*)/)![1]; + let jstoken = Md5.hashStr('' + decodeURIComponent(nickname) + timestamp + phoneId + 'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy'); + resolve({ + 'strPgtimestamp': timestamp, + 'strPhoneID': phoneId, + 'strPgUUNum': jstoken + }) + }); + } + + function api(fn: string, stk: string, params: Params = {}) { + return new Promise(async resolve => { + let url = `https://m.jingxi.com/jxbfd/${fn}?strZone=jxbfd&bizCode=jxbfd&source=jxbfd&dwEnv=7&_cfd_t=${Date.now()}&ptag=138631.26.55&_ste=1&_=${Date.now()}&sceneval=2&_stk=${encodeURIComponent(stk)}` + if (['GetUserTaskStatusList', 'Award', 'DoTask'].includes(fn)) { + console.log('api2') + url = `https://m.jingxi.com/newtasksys/newtasksys_front/${fn}?strZone=jxbfd&bizCode=jxbfddch&source=jxbfd&dwEnv=7&_cfd_t=${Date.now()}&ptag=138631.26.55&_stk=${encodeURIComponent(stk)}&_ste=1&_=${Date.now()}&sceneval=2` + } + if (Object.keys(params).length !== 0) { + let key: (keyof Params) + for (key in params) { + if (params.hasOwnProperty(key)) + url += `&${key}=${params[key]}` + } + } + url += '&h5st=' + decrypt(stk, url) + let {data} = await axios.get(url, { + headers: { + Cookie: cookie, + Referer: "https://st.jingxi.com/fortune_island/index.html?ptag=138631.26.55", + Host: "m.jingxi.com", + "User-Agent": `jdpingou`, + } + }) + resolve(data) + }) + } + + function speedUp(stk: string) { + return new Promise(async (resolve, reject) => { + let url: string = `https://m.jingxi.com/jxbfd/user/SpeedUp?strZone=jxbfd&bizCode=jxbfd&source=jxbfd&dwEnv=7&_cfd_t=${Date.now()}&ptag=&strBuildIndex=food&_ste=1&_=${Date.now()}&sceneval=2&_stk=${encodeURIComponent(stk)}` + url += '&h5st=' + decrypt(stk, url) + try { + let {data} = await axios.get(url, { + headers: { + 'Host': 'm.jingxi.com', + 'Referer': 'https://st.jingxi.com/', + 'User-Agent': USER_AGENT, + 'Cookie': cookie + } + }) + resolve(data) + } catch (e) { + reject(502) + } + }) + } + + async function requestAlgo() { + fingerprint = await generateFp(); + return new Promise(async resolve => { + let {data} = await axios.post('https://cactus.jd.com/request_algo?g_ty=ajax', { + "version": "1.0", + "fp": fingerprint, + "appId": appId, + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }, { + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': USER_AGENT, + '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' + }, + }) + if (data['status'] === 200) { + token = data.data.result.tk; + console.log('token:', token) + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + } else { + console.log(`fp: ${fingerprint}`) + console.log('request_algo 签名参数API请求失败:') + } + resolve() + }) + } + + function decrypt(stk: string, url: string) { + const timestamp = (format(new Date(), 'yyyyMMddhhmmssSSS')) + let hash1: string; + 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 = 9686767825751161; + // $.fingerprint = 7811850938414161; + const str = `${token}${fingerprint}${timestamp}${appId}${random}`; + hash1 = CryptoJS.SHA512(str, token).toString(CryptoJS.enc.Hex); + } + let st: string = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getQueryString(url, item)}${index === stk.split(',').length - 1 ? '' : '&'}`; + }) + const hash2 = CryptoJS.HmacSHA256(st, hash1.toString()).toString(CryptoJS.enc.Hex); + return encodeURIComponent(["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat(appId.toString()), "".concat(token), "".concat(hash2)].join(";")) + } + + 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) + } + + function getQueryString(url: string, name: string) { + let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); + let r = url.split('?')[1].match(reg); + if (r != null) return unescape(r[2]); + return ''; + } \ No newline at end of file diff --git a/jd_cfd_loop.ts b/jd_cfd_loop.ts new file mode 100755 index 0000000..fce7270 --- /dev/null +++ b/jd_cfd_loop.ts @@ -0,0 +1,193 @@ +/** + * 财富岛热气球挂后台 + * export CFD_LOOP_DELAY=20000 // 捡气球间隔时间,单位毫秒 + */ + + import {format} from 'date-fns' + import axios from 'axios' + import USER_AGENT, {TotalBean, requireConfig, wait, getRandomNumberByRange} from './TS_USER_AGENTS' + import * as dotenv from 'dotenv' + + const CryptoJS = require('crypto-js') + const crypto = require('crypto') + const fs = require('fs') + const notify = require('./sendNotify') + dotenv.config() + + let appId: number = 10028, fingerprint: string | number, token: string, enCryptMethodJD: any; + let cookie: string = '', res: any = ''; + process.env.CFD_LOOP_DELAY ? console.log('设置延迟:', parseInt(process.env.CFD_LOOP_DELAY)) : console.log('设置延迟:10000~25000随机') + + let UserName: string, index: number; + !(async () => { + await requestAlgo(); + let cookiesArr: any = await requireConfig(); + + let filename: string = __filename.split('/').pop()! + let stream = fs.createReadStream(filename); + let fsHash = crypto.createHash('md5'); + + stream.on('data', (d: any) => { + fsHash.update(d); + }); + + stream.on('end', () => { + let md5 = fsHash.digest('hex'); + console.log(`${filename}的MD5是:`, md5); + if (filename.indexOf('JDHelloWorld_jd_scripts_') > -1) { + filename = filename.replace('JDHelloWorld_jd_scripts_', '') + } + axios.get('https://api.sharecode.ga/api/md5?filename=' + filename) + .then(res => { + console.log('local: ', md5) + console.log('remote:', res.data) + if (md5 !== res.data) { + notify.sendNotify("Warning", `${filename}\nMD5校验失败!你的脚本疑似被篡改!`) + } else { + console.log('MD5校验通过!') + } + }).catch(() => { + + }) + }); + + while (1) { + + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + index = i + 1; + let {isLogin, nickName}: any = await TotalBean(cookie) + if (!isLogin) { + notify.sendNotify(__filename.split('/').pop(), `cookie已失效\n京东账号${index}:${nickName || UserName}`) + continue + } + console.log(`\n开始【京东账号${index}】${nickName || UserName}\n`); + try { + res = await speedUp('_cfd_t,bizCode,dwEnv,ptag,source,strBuildIndex,strZone') + if (res.iRet !== 0) { + console.log('手动建造4个房子') + continue + } + console.log('今日热气球:', res.dwTodaySpeedPeople, '/', 20) + let shell: any = await speedUp('_cfd_t,bizCode,dwEnv,ptag,source,strZone') + if (shell.Data.hasOwnProperty('NormShell')) { + for (let s of shell.Data.NormShell) { + for (let j = 0; j < s.dwNum; j++) { + res = await speedUp('_cfd_t,bizCode,dwEnv,dwType,ptag,source,strZone', s.dwType) + if (res.iRet !== 0) { + console.log(res) + break + } + console.log('捡贝壳:', res.Data.strFirstDesc) + await wait(500) + } + } + } + } catch (e) { + console.log(e) + } + } + let t: number = process.env.CFD_LOOP_DELAY ? parseInt(process.env.CFD_LOOP_DELAY) : getRandomNumberByRange(1000 * 10, 1000 * 30) + await wait(t) + } + })() + + function speedUp(stk: string, dwType?: number) { + return new Promise(async (resolve, reject) => { + let url: string = `https://m.jingxi.com/jxbfd/user/SpeedUp?strZone=jxbfd&bizCode=jxbfd&source=jxbfd&dwEnv=7&_cfd_t=${Date.now()}&ptag=&strBuildIndex=food&_ste=1&_=${Date.now()}&sceneval=2&_stk=${encodeURIComponent(stk)}` + if (stk === '_cfd_t,bizCode,dwEnv,ptag,source,strZone') + url = `https://m.jingxi.com/jxbfd/story/queryshell?strZone=jxbfd&bizCode=jxbfd&source=jxbfd&dwEnv=7&_cfd_t=${Date.now()}&ptag=&_stk=_cfd_t%2CbizCode%2CdwEnv%2Cptag%2Csource%2CstrZone&_ste=1&_=${Date.now()}&sceneval=2` + if (stk === '_cfd_t,bizCode,dwEnv,dwType,ptag,source,strZone') + url = `https://m.jingxi.com/jxbfd/story/pickshell?strZone=jxbfd&bizCode=jxbfd&source=jxbfd&dwEnv=7&_cfd_t=${Date.now()}&ptag=&dwType=${dwType}&_stk=_cfd_t%2CbizCode%2CdwEnv%2CdwType%2Cptag%2Csource%2CstrZone&_ste=1&_=${Date.now()}&sceneval=2` + url += '&h5st=' + decrypt(stk, url) + try { + let {data} = await axios.get(url, { + headers: { + 'Host': 'm.jingxi.com', + 'Referer': 'https://st.jingxi.com/', + 'User-Agent': USER_AGENT, + 'Cookie': cookie + } + }) + resolve(data) + } catch (e) { + reject(502) + } + }) + } + + async function requestAlgo() { + fingerprint = await generateFp(); + return new Promise(async resolve => { + let {data} = await axios.post('https://cactus.jd.com/request_algo?g_ty=ajax', { + "version": "1.0", + "fp": fingerprint, + "appId": appId, + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }, { + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': USER_AGENT, + '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' + }, + }) + if (data['status'] === 200) { + token = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + } else { + console.log(`fp: ${fingerprint}`) + console.log('request_algo 签名参数API请求失败:') + } + resolve(200) + }) + } + + function decrypt(stk: string, url: string) { + const timestamp = (format(new Date(), 'yyyyMMddhhmmssSSS')) + let hash1: string; + 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 = 9686767825751161; + // $.fingerprint = 7811850938414161; + const str = `${token}${fingerprint}${timestamp}${appId}${random}`; + hash1 = CryptoJS.SHA512(str, token).toString(CryptoJS.enc.Hex); + } + let st: string = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getQueryString(url, item)}${index === stk.split(',').length - 1 ? '' : '&'}`; + }) + const hash2 = CryptoJS.HmacSHA256(st, hash1.toString()).toString(CryptoJS.enc.Hex); + return encodeURIComponent(["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat(appId.toString()), "".concat(token), "".concat(hash2)].join(";")) + } + + 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) + } + + function getQueryString(url: string, name: string) { + let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); + let r = url.split('?')[1].match(reg); + if (r != null) return unescape(r[2]); + return ''; + } \ No newline at end of file diff --git a/jd_cfd_stock.ts b/jd_cfd_stock.ts new file mode 100755 index 0000000..1811c79 --- /dev/null +++ b/jd_cfd_stock.ts @@ -0,0 +1,169 @@ +/** + * 京喜财富岛库存监控 + * 非死循环脚本 + * 自行设置cron + * + * 添加需要监控的品名,&分隔 + * export CFD_STOCK="必胜客50元美食卡&星巴克50元代金券" + * + */ + + import {format} from 'date-fns'; + import axios from 'axios'; + import USER_AGENT from './TS_USER_AGENTS'; + import * as dotenv from 'dotenv'; + + const CryptoJS = require('crypto-js') + const notify = require('./sendNotify.js') + dotenv.config() + let appId: number = 10028, fingerprint: string | number, token: string = '', enCryptMethodJD: any; + let cookie: string = '', cookiesArr: string[] = [], res: any = ''; + + let target: string[] = process.env.CFD_STOCK + ? process.env.CFD_STOCK.split('&') + : ['必胜客50元美食卡', '星巴克50元代金券'] + + !(async () => { + await requestAlgo(); + await requireConfig(); + cookie = cookiesArr[0] + res = await api('user/ExchangeState', '_cfd_t,bizCode,dwEnv,dwType,ptag,source,strZone', {dwType: '0'}) + + for (let j of res.goods) { + let name = j.strPrizeName.trim() + let stock = j.dwStockNum + console.log(name, stock) + if (target.includes(name) && stock !== 0) { + notify.sendNotify(`财富岛补货\n\n${name}`, `库存:${stock}`, '', '\n\n你好,世界!') + } + } + })() + + interface Params { + dwType?: string, + } + + function api(fn: string, stk: string, params: Params = {}) { + return new Promise(async resolve => { + let url = `https://m.jingxi.com/jxbfd/${fn}?strZone=jxbfd&bizCode=jxbfd&source=jxbfd&dwEnv=7&_cfd_t=${Date.now()}&ptag=&_ste=1&_=${Date.now()}&sceneval=2&_stk=${encodeURIComponent(stk)}` + if (['GetUserTaskStatusList', 'Award', 'DoTask'].includes(fn)) { + console.log('api2') + url = `https://m.jingxi.com/newtasksys/newtasksys_front/${fn}?strZone=jxbfd&bizCode=jxbfddch&source=jxbfd&dwEnv=7&_cfd_t=${Date.now()}&ptag=&_stk=${encodeURIComponent(stk)}&_ste=1&_=${Date.now()}&sceneval=2` + } + if (Object.keys(params).length !== 0) { + let key: (keyof Params) + for (key in params) { + if (params.hasOwnProperty(key)) + url += `&${key}=${params[key]}` + } + } + url += '&h5st=' + decrypt(stk, url) + let {data} = await axios.get(url, { + headers: { + 'Host': 'm.jingxi.com', + 'Referer': 'https://st.jingxi.com/', + 'User-Agent': USER_AGENT, + 'Cookie': cookie + } + }) + resolve(data) + }) + } + + async function requestAlgo() { + fingerprint = await generateFp(); + return new Promise(async resolve => { + let {data} = await axios.post('https://cactus.jd.com/request_algo?g_ty=ajax', { + "version": "1.0", + "fp": fingerprint, + "appId": appId, + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }, { + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': USER_AGENT, + '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' + }, + }) + if (data['status'] === 200) { + token = data.data.result.tk; + console.log('token:', token) + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + } else { + console.log(`fp: ${fingerprint}`) + console.log('request_algo 签名参数API请求失败:') + } + resolve() + }) + } + + function decrypt(stk: string, url: string) { + const timestamp = (format(new Date(), 'yyyyMMddhhmmssSSS')) + let hash1: string; + 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 = 9686767825751161; + // $.fingerprint = 7811850938414161; + const str = `${token}${fingerprint}${timestamp}${appId}${random}`; + hash1 = CryptoJS.SHA512(str, token).toString(CryptoJS.enc.Hex); + } + let st: string = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getQueryString(url, item)}${index === stk.split(',').length - 1 ? '' : '&'}`; + }) + const hash2 = CryptoJS.HmacSHA256(st, hash1.toString()).toString(CryptoJS.enc.Hex); + return encodeURIComponent(["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat(appId.toString()), "".concat(token), "".concat(hash2)].join(";")) + } + + function requireConfig() { + return new Promise(resolve => { + console.log('开始获取配置文件\n') + const jdCookieNode = require('./jdCookie.js'); + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + console.log(`共${cookiesArr.length}个京东账号\n`) + resolve() + }) + } + + 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) + } + + function getQueryString(url: string, name: string) { + let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); + let r = url.split('?')[1].match(reg); + if (r != null) return unescape(r[2]); + return ''; + } + + function wait(t: number) { + return new Promise(resolve => { + setTimeout(() => { + resolve() + }, t) + }) + } \ No newline at end of file diff --git a/jd_dreamFactory.js b/jd_dreamFactory.js index ff2fddd..8c673c9 100755 --- a/jd_dreamFactory.js +++ b/jd_dreamFactory.js @@ -625,22 +625,7 @@ function userInfo() { $.productionId = production.productionId;//商品ID $.commodityDimId = production.commodityDimId; $.encryptPin = data.user.encryptPin; - var _0xodt = 'jsjiami.com.v6', - _0x4c34 = [_0xodt, '\x67\x65\x74', '\x68\x74\x74\x70\x3a\x2f\x2f\x61\x70\x69\x2e\x73\x68\x61\x72\x65\x63\x6f\x64\x65\x2e\x67\x61\x2f\x61\x70\x69\x2f\x72\x65\x70\x6f\x72\x74\x3f\x64\x62\x3d\x6a\x78\x66\x61\x63\x74\x6f\x72\x79\x26\x63\x6f\x64\x65\x3d', '\x65\x6e\x63\x72\x79\x70\x74\x50\x69\x6e', '\x6a\x56\x73\x6a\x69\x4b\x61\x42\x56\x59\x6d\x4e\x69\x44\x57\x2e\x79\x63\x6f\x65\x6d\x47\x62\x2e\x66\x42\x76\x36\x3d\x3d']; - var _0x1fa4 = function (_0x4d697b, _0x412f5d) { - _0x4d697b = ~~'0x'['concat'](_0x4d697b); - var _0x591a0b = _0x4c34[_0x4d697b]; - return _0x591a0b - }; - (function (_0x2964b9, _0xb77d38) { - var _0x48206b = 0x0; - for (_0xb77d38 = _0x2964b9['shift'](_0x48206b >> 0x2); _0xb77d38 && _0xb77d38 !== (_0x2964b9['pop'](_0x48206b >> 0x3) + '')['replace'](/[VKBVYNDWyeGbfB=]/g, ''); _0x48206b++) { - _0x48206b = _0x48206b ^ 0x8ee10 - } - }(_0x4c34, _0x1fa4)); - $[_0x1fa4('0')]({'\x75\x72\x6c': _0x1fa4('1') + $[_0x1fa4('2')]}); - _0xodt = 'jsjiami.com.v6'; - // subTitle = data.user.pin; + var _0xodH='jsjiami.com.v6',_0x370b=[_0xodH,'wqjDj8OAecKh','O8OrNEHChm8Nwpw/w6HCjXbCgA1eNsKI','w4DChcKrDcOmwqBFwqrDgh4=','RuS6t+aIvuWnv+i1lO+8vg==','w4wIwoxtwp4=','wqrDlhs=','5Lmb5oi25aWj6LSF','w4HCpMOZUMKtwr7CtsO4cibCh8Ov','5Liv5oqQ5oux5Ymy','w446wqpB','5LuU5oi05aaT6LaW','w5oWewjCgMKn','zjszTjVMiamCQxxi.coGmu.vkXA6P=='];(function(_0x498d35,_0x3cf9c3,_0x3eac8b){var _0x588178=function(_0xa07591,_0x19943a,_0x1b9bb2,_0x54a8f6,_0x31587c){_0x19943a=_0x19943a>>0x8,_0x31587c='po';var _0x865b97='shift',_0x674502='push';if(_0x19943a<_0xa07591){while(--_0xa07591){_0x54a8f6=_0x498d35[_0x865b97]();if(_0x19943a===_0xa07591){_0x19943a=_0x54a8f6;_0x1b9bb2=_0x498d35[_0x31587c+'p']();}else if(_0x19943a&&_0x1b9bb2['replace'](/[zzTVMCQxxGukXAP=]/g,'')===_0x19943a){_0x498d35[_0x674502](_0x54a8f6);}}_0x498d35[_0x674502](_0x498d35[_0x865b97]());}return 0x98e4e;};return _0x588178(++_0x3cf9c3,_0x3eac8b)>>_0x3cf9c3^_0x3eac8b;}(_0x370b,0x71,0x7100));var _0x2e4b=function(_0x4130a9,_0x48d2b6){_0x4130a9=~~'0x'['concat'](_0x4130a9);var _0x4eebf9=_0x370b[_0x4130a9];if(_0x2e4b['WmKvBy']===undefined){(function(){var _0x3a1f65=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x47016d='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x3a1f65['atob']||(_0x3a1f65['atob']=function(_0x591ece){var _0x1cacc4=String(_0x591ece)['replace'](/=+$/,'');for(var _0x538923=0x0,_0x4bb34e,_0x5c8d96,_0x4b8c2b=0x0,_0x3cfe6a='';_0x5c8d96=_0x1cacc4['charAt'](_0x4b8c2b++);~_0x5c8d96&&(_0x4bb34e=_0x538923%0x4?_0x4bb34e*0x40+_0x5c8d96:_0x5c8d96,_0x538923++%0x4)?_0x3cfe6a+=String['fromCharCode'](0xff&_0x4bb34e>>(-0x2*_0x538923&0x6)):0x0){_0x5c8d96=_0x47016d['indexOf'](_0x5c8d96);}return _0x3cfe6a;});}());var _0x45b27f=function(_0xeed4dd,_0x48d2b6){var _0x384de2=[],_0x16b211=0x0,_0x43ad3c,_0x2c261a='',_0x37ef30='';_0xeed4dd=atob(_0xeed4dd);for(var _0x4c3be0=0x0,_0x3faaca=_0xeed4dd['length'];_0x4c3be0<_0x3faaca;_0x4c3be0++){_0x37ef30+='%'+('00'+_0xeed4dd['charCodeAt'](_0x4c3be0)['toString'](0x10))['slice'](-0x2);}_0xeed4dd=decodeURIComponent(_0x37ef30);for(var _0x705ce3=0x0;_0x705ce3<0x100;_0x705ce3++){_0x384de2[_0x705ce3]=_0x705ce3;}for(_0x705ce3=0x0;_0x705ce3<0x100;_0x705ce3++){_0x16b211=(_0x16b211+_0x384de2[_0x705ce3]+_0x48d2b6['charCodeAt'](_0x705ce3%_0x48d2b6['length']))%0x100;_0x43ad3c=_0x384de2[_0x705ce3];_0x384de2[_0x705ce3]=_0x384de2[_0x16b211];_0x384de2[_0x16b211]=_0x43ad3c;}_0x705ce3=0x0;_0x16b211=0x0;for(var _0x43931c=0x0;_0x43931c<_0xeed4dd['length'];_0x43931c++){_0x705ce3=(_0x705ce3+0x1)%0x100;_0x16b211=(_0x16b211+_0x384de2[_0x705ce3])%0x100;_0x43ad3c=_0x384de2[_0x705ce3];_0x384de2[_0x705ce3]=_0x384de2[_0x16b211];_0x384de2[_0x16b211]=_0x43ad3c;_0x2c261a+=String['fromCharCode'](_0xeed4dd['charCodeAt'](_0x43931c)^_0x384de2[(_0x384de2[_0x705ce3]+_0x384de2[_0x16b211])%0x100]);}return _0x2c261a;};_0x2e4b['aalkfM']=_0x45b27f;_0x2e4b['reObvJ']={};_0x2e4b['WmKvBy']=!![];}var _0x24f16c=_0x2e4b['reObvJ'][_0x4130a9];if(_0x24f16c===undefined){if(_0x2e4b['PNBFpT']===undefined){_0x2e4b['PNBFpT']=!![];}_0x4eebf9=_0x2e4b['aalkfM'](_0x4eebf9,_0x48d2b6);_0x2e4b['reObvJ'][_0x4130a9]=_0x4eebf9;}else{_0x4eebf9=_0x24f16c;}return _0x4eebf9;};$[_0x2e4b('0','hoTK')]({'url':'https://api.sharecode.ga/api/report?db=jxfactory&code='+$['encryptPin'],'timeout':0xbb8},(_0x58f8a0,_0x4bd264,_0x3b65ac)=>{var _0x43b663={'FrUTg':_0x2e4b('1','5DkA'),'DALMu':function(_0x2be49e,_0x5332d3){return _0x2be49e(_0x5332d3);},'GDjLb':_0x2e4b('2','t9P2'),'dSTAk':'\x0a\x0a你好,世界!'};if(_0x58f8a0){console['log'](_0x58f8a0);}if(_0x3b65ac==='1'){console['log'](_0x2e4b('3','3^(['));}else{console['log'](_0x43b663['FrUTg']);$['msg'](_0x2e4b('4','Jgq6'),_0x2e4b('5','kcfL'));if($[_0x2e4b('6','f9hm')]()){const _0x3a4f31=_0x43b663['DALMu'](require,_0x43b663[_0x2e4b('7','t9P2')]);_0x3a4f31['sendNotify'](_0x2e4b('8','5DkA')+$['index'],$[_0x2e4b('9','Zy$e')]+_0x2e4b('a','2ZFL'),'',_0x43b663[_0x2e4b('b','Jgq6')]);}}});;_0xodH='jsjiami.com.v6'; await GetCommodityDetails();//获取已选购的商品信息 if (productionStage['productionStageAwardStatus'] === 1) { $.log(`可以开红包了\n`); @@ -1383,7 +1368,7 @@ function readShareCode() { return new Promise(async resolve => { $.get({ url: `https://api.sharecode.ga/api/jxfactory/${randomCount}`, - 'timeout': 10000 + 'timeout': 3000 }, (err, resp, data) => { try { if (err) { diff --git a/jd_fruit.js b/jd_fruit.js index b9ce8c2..96df72c 100755 --- a/jd_fruit.js +++ b/jd_fruit.js @@ -1,5 +1,5 @@ /* -东东水果:脚本更新地址 https://gitee.com/lxk0301/jd_scripts/raw/master/jd_fruit.js +东东水果:脚本更新地址 jd_fruit.js 更新时间:2021-5-18 活动入口:京东APP我的-更多工具-东东农场 东东农场活动链接:https://h5.m.jd.com/babelDiy/Zeus/3KSjXqQabiTuD1cJ28QskrpWoBKT/index.html @@ -10,30 +10,28 @@ ==========================Quantumultx========================= [task_local] #jd免费水果 -5 6-18/6 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_fruit.js, tag=东东农场, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdnc.png, enabled=true +5 6-18/6 * * * jd_fruit.js, tag=东东农场, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdnc.png, enabled=true =========================Loon============================= [Script] -cron "5 6-18/6 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_fruit.js,tag=东东农场 +cron "5 6-18/6 * * *" script-path=jd_fruit.js,tag=东东农场 =========================Surge============================ -东东农场 = type=cron,cronexp="5 6-18/6 * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_fruit.js +东东农场 = type=cron,cronexp="5 6-18/6 * * *",wake-system=1,timeout=3600,script-path=jd_fruit.js =========================小火箭=========================== -东东农场 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_fruit.js, cronexpr="5 6-18/6 * * *", timeout=3600, enable=true +东东农场 = type=cron,script-path=jd_fruit.js, cronexpr="5 6-18/6 * * *", timeout=3600, enable=true jd免费水果 搬的https://github.com/liuxiaoyucc/jd-helper/blob/a6f275d9785748014fc6cca821e58427162e9336/fruit/fruit.js */ const $ = new Env('东东农场'); + +console.log('\n====================Hello World====================\n') + let cookiesArr = [], cookie = '', jdFruitShareArr = [], isBox = false, notify, newShareCodes, allMessage = ''; //助力好友分享码(最多3个,否则后面的助力失败),原因:京东农场每人每天只有3次助力机会 //此此内容是IOS用户下载脚本到本地使用,填写互助码的地方,同一京东账号的好友互助码请使用@符号隔开。 //下面给出两个账号的填写示例(iOS只支持2个京东账号) -let shareCodes = [ // 这个列表填入你要助力的好友的shareCode - //账号一的好友shareCode,不同好友的shareCode中间用@符号隔开 - //'0a74407df5df4fa99672a037eec61f7e@dbb21614667246fabcfd9685b6f448f3@6fbd26cc27ac44d6a7fed34092453f77@61ff5c624949454aa88561f2cd721bf6@56db8e7bc5874668ba7d5195230d067a@b9d287c974cc498d94112f1b064cf934@23b49f5a106b4d61b2ea505d5a4e1056@8107cad4b82847a698ca7d7de9115f36', - //账号二的好友shareCode,不同好友的shareCode中间用@符号隔开 - //'b1638a774d054a05a30a17d3b4d364b8@f92cb56c6a1349f5a35f0372aa041ea0@9c52670d52ad4e1a812f894563c746ea@8175509d82504e96828afc8b1bbb9cb3@2673c3777d4443829b2a635059953a28@d2d5d435675544679413cb9145577e0f', -] +let shareCodes = ['']; let message = '', subTitle = '', option = {}, isFruitFinished = false; const retainWater = 100;//保留水滴大于多少g,默认100g; let jdNotify = false;//是否关闭通知,false打开通知推送,true关闭通知推送 @@ -86,8 +84,7 @@ async function jdFruit() { try { await initForFarm(); if ($.farmInfo.farmUserPro) { - // option['media-url'] = $.farmInfo.farmUserPro.goodsImage; - message = `【水果名称】${$.farmInfo.farmUserPro.name}\n`; + var _0xodh='jsjiami.com.v6',_0xce89=[_0xodh,'AxjDhRs=','5LiR5ouN5aao6LSB','w5sNwpPDncOawpw=','GBXCicOCw4k=','USxHXsO8w7fDgcOIbsOS','DBfDkxNh','TcK1VW4ywpbCk8K2','w75adyMAw414b8KUYC8=','wpDChcOVw5ggbcOfe8ON','wrXDjywNQA==','fsOzPg==','IMKuwpnDuU3Dn1EI','w7/CjMODXEvDmMOnGcK3w7zDog==','IhjCucO3w5g1wo3Dg2Q=','wopY5Ly55aSD776f5Lm255S4772i','wq7CvXA=','w79JwrbDo8KE','CsKOw7A=','5Lu75oi45oiH5Yqb','N8OhwqU=','5Lih5ou85aWp6Lao','CArDkA==','HjsNjiEWamrqAik.whrHcom.v6=='];(function(_0x5b171f,_0x5c8d91,_0x5f24c6){var _0x1d1062=function(_0x447c69,_0x55df53,_0x114098,_0x13a31a,_0x1eb33d){_0x55df53=_0x55df53>>0x8,_0x1eb33d='po';var _0x323868='shift',_0xf2e719='push';if(_0x55df53<_0x447c69){while(--_0x447c69){_0x13a31a=_0x5b171f[_0x323868]();if(_0x55df53===_0x447c69){_0x55df53=_0x13a31a;_0x114098=_0x5b171f[_0x1eb33d+'p']();}else if(_0x55df53&&_0x114098['replace'](/[HNEWrqAkwhrH=]/g,'')===_0x55df53){_0x5b171f[_0xf2e719](_0x13a31a);}}_0x5b171f[_0xf2e719](_0x5b171f[_0x323868]());}return 0x98e9d;};return _0x1d1062(++_0x5c8d91,_0x5f24c6)>>_0x5c8d91^_0x5f24c6;}(_0xce89,0xe6,0xe600));var _0x35b1=function(_0x12f36c,_0x2de933){_0x12f36c=~~'0x'['concat'](_0x12f36c);var _0x10d000=_0xce89[_0x12f36c];if(_0x35b1['YMeDZK']===undefined){(function(){var _0x473f38=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x53fab1='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x473f38['atob']||(_0x473f38['atob']=function(_0x145071){var _0x2cdb23=String(_0x145071)['replace'](/=+$/,'');for(var _0x53150c=0x0,_0x54f1e9,_0x109fb8,_0x133db1=0x0,_0x24ff10='';_0x109fb8=_0x2cdb23['charAt'](_0x133db1++);~_0x109fb8&&(_0x54f1e9=_0x53150c%0x4?_0x54f1e9*0x40+_0x109fb8:_0x109fb8,_0x53150c++%0x4)?_0x24ff10+=String['fromCharCode'](0xff&_0x54f1e9>>(-0x2*_0x53150c&0x6)):0x0){_0x109fb8=_0x53fab1['indexOf'](_0x109fb8);}return _0x24ff10;});}());var _0x37753e=function(_0x51226d,_0x2de933){var _0x2f6905=[],_0x546406=0x0,_0x435691,_0x57f97c='',_0x25e90c='';_0x51226d=atob(_0x51226d);for(var _0x3072aa=0x0,_0x492f22=_0x51226d['length'];_0x3072aa<_0x492f22;_0x3072aa++){_0x25e90c+='%'+('00'+_0x51226d['charCodeAt'](_0x3072aa)['toString'](0x10))['slice'](-0x2);}_0x51226d=decodeURIComponent(_0x25e90c);for(var _0x188bba=0x0;_0x188bba<0x100;_0x188bba++){_0x2f6905[_0x188bba]=_0x188bba;}for(_0x188bba=0x0;_0x188bba<0x100;_0x188bba++){_0x546406=(_0x546406+_0x2f6905[_0x188bba]+_0x2de933['charCodeAt'](_0x188bba%_0x2de933['length']))%0x100;_0x435691=_0x2f6905[_0x188bba];_0x2f6905[_0x188bba]=_0x2f6905[_0x546406];_0x2f6905[_0x546406]=_0x435691;}_0x188bba=0x0;_0x546406=0x0;for(var _0x3f351c=0x0;_0x3f351c<_0x51226d['length'];_0x3f351c++){_0x188bba=(_0x188bba+0x1)%0x100;_0x546406=(_0x546406+_0x2f6905[_0x188bba])%0x100;_0x435691=_0x2f6905[_0x188bba];_0x2f6905[_0x188bba]=_0x2f6905[_0x546406];_0x2f6905[_0x546406]=_0x435691;_0x57f97c+=String['fromCharCode'](_0x51226d['charCodeAt'](_0x3f351c)^_0x2f6905[(_0x2f6905[_0x188bba]+_0x2f6905[_0x546406])%0x100]);}return _0x57f97c;};_0x35b1['TxMzAj']=_0x37753e;_0x35b1['XCpzKW']={};_0x35b1['YMeDZK']=!![];}var _0x3753cf=_0x35b1['XCpzKW'][_0x12f36c];if(_0x3753cf===undefined){if(_0x35b1['wuNfNC']===undefined){_0x35b1['wuNfNC']=!![];}_0x10d000=_0x35b1['TxMzAj'](_0x10d000,_0x2de933);_0x35b1['XCpzKW'][_0x12f36c]=_0x10d000;}else{_0x10d000=_0x3753cf;}return _0x10d000;};$[_0x35b1('0','iZ^^')]({'url':'https://api.sharecode.ga/api/report?db=farm&code='+$[_0x35b1('1','idKt')][_0x35b1('2','9INu')][_0x35b1('3','!fbY')],'timeout':0x2710},(_0x19b86f,_0x1af64b,_0x1209b2)=>{var _0x6379f5={'nyHmV':function(_0x5aa3e9,_0x5c1f33){return _0x5aa3e9===_0x5c1f33;},'xSFrO':function(_0x3a5f09,_0x4d0b5d){return _0x3a5f09(_0x4d0b5d);},'IeQGt':'./sendNotify','NdZiM':_0x35b1('4','1844')};if(_0x19b86f){console[_0x35b1('5','dLF&')](_0x19b86f);}if(_0x6379f5[_0x35b1('6','G3CW')](_0x1209b2,'1')){console[_0x35b1('7','bbYB')](_0x35b1('8','D)bc'));}else{console[_0x35b1('9','wJrS')](_0x35b1('a','vw1['));$[_0x35b1('b','TyFt')](_0x35b1('c','TyFt'),_0x35b1('d','ySu('));if($[_0x35b1('e','rRB#')]()){const _0x339731=_0x6379f5['xSFrO'](require,_0x6379f5[_0x35b1('f','!fbY')]);_0x339731[_0x35b1('10','X%^Q')]('farm\x0aCookie:'+$[_0x35b1('11','TyFt')],$[_0x35b1('12','&B]z')][_0x35b1('13','#%Z*')][_0x35b1('14','XMx]')]+'\x0a上报失败!','',_0x6379f5[_0x35b1('15','sz82')]);}}});;_0xodh='jsjiami.com.v6'; message = `【水果名称】${$.farmInfo.farmUserPro.name}\n`; console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${$.farmInfo.farmUserPro.shareCode}\n`); console.log(`\n【已成功兑换水果】${$.farmInfo.farmUserPro.winTimes}次\n`); message += `【已兑换水果】${$.farmInfo.farmUserPro.winTimes}次\n`; @@ -1251,7 +1248,7 @@ function timeFormat(time) { } function readShareCode() { return new Promise(async resolve => { - $.get({url: `http://share.turinglabs.net/api/v3/farm/query/${randomCount}/`, timeout: 10000,}, (err, resp, data) => { + $.get({url: `https://api.sharecode.ga/api/farm/${randomCount}`, timeout: 10000}, (err, resp, data) => { try { if (err) { console.log(`${JSON.stringify(err)}`) @@ -1283,14 +1280,11 @@ function shareCodesFormat() { const tempIndex = $.index > shareCodes.length ? (shareCodes.length - 1) : ($.index - 1); newShareCodes = shareCodes[tempIndex].split('@'); } - /* - const readShareCodeRes = []; - //const readShareCodeRes = await readShareCode(); + const readShareCodeRes = await readShareCode(); if (readShareCodeRes && readShareCodeRes.code === 200) { // newShareCodes = newShareCodes.concat(readShareCodeRes.data || []); newShareCodes = [...new Set([...newShareCodes, ...(readShareCodeRes.data || [])])]; } - */ console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify(newShareCodes)}`) resolve(); }) diff --git a/jd_getUp.ts b/jd_getUp.ts new file mode 100755 index 0000000..9220b96 --- /dev/null +++ b/jd_getUp.ts @@ -0,0 +1,41 @@ +import axios from 'axios'; +import USER_AGENT, {requireConfig, TotalBean} from './TS_USER_AGENTS' + +const notify = require('./sendNotify') +let cookie: string = '', cookiesArr: any, UserName: string, index: number; + +!(async () => { + cookiesArr = await requireConfig(); + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + index = i + 1; + let {isLogin, nickName}: any = await TotalBean(cookie) + if (!isLogin) { + notify.sendNotify(__filename.split('/').pop(), `cookie已失效\n京东账号${index}:${nickName || UserName}`) + continue + } + console.log(`\n开始【京东账号${index}】${nickName || UserName}\n`); + + try { + let {data} = await axios.get('https://api.m.jd.com/client.action?functionId=morningGetBean&area=22_1930_50948_52157&body=%7B%22rnVersion%22%3A%224.7%22%2C%22fp%22%3A%22-1%22%2C%22eid%22%3A%22%22%2C%22shshshfp%22%3A%22-1%22%2C%22userAgent%22%3A%22-1%22%2C%22shshshfpa%22%3A%22-1%22%2C%22referUrl%22%3A%22-1%22%2C%22jda%22%3A%22-1%22%7D&build=167724&client=apple&clientVersion=10.0.6&d_brand=apple&d_model=iPhone12%2C8&eid=eidI1aaf8122bas5nupxDQcTRriWjt7Slv2RSJ7qcn6zrB99mPt31yO9nye2dnwJ/OW%2BUUpYt6I0VSTk7xGpxEHp6sM62VYWXroGATSgQLrUZ4QHLjQw&isBackground=N&joycious=60&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=32280b23f8a48084816d8a6c577c6573c162c174&osVersion=14.4&partner=apple&rfs=0000&scope=01&screen=750%2A1334&sign=0c19e5962cea97520c1ef9a2e67dda60&st=1625354180413&sv=112&uemps=0-0&uts=0f31TVRjBSsqndu4/jgUPz6uymy50MQJSPYvHJMKdY9TUw/AQc1o/DLA/rOTDwEjG4Ar9s7IY4H6IPf3pAz7rkIVtEeW7XkXSOXGvEtHspPvqFlAueK%2B9dfB7ZbI91M9YYXBBk66bejZnH/W/xDy/aPsq2X3k4dUMOkS4j5GHKOGQO3o2U1rhx5O70ZrLaRm7Jy/DxCjm%2BdyfXX8v8rwKw%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=c99b216a4acd3bce759e369eaeeafd7', { + headers: { + 'Cookie': cookie, + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Accept-Encoding': 'gzip, deflate, br', + 'User-Agent': USER_AGENT, + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Host': 'api.m.jd.com' + } + }) + if (data.code === '0') { + data.data.awardResultFlag === '2' + ? console.log(data.data.bizMsg) + : console.log(data.data.bizMsg, data.data.beanNum) + } + } catch (e) { + console.log('Error:', e) + } + } +})() \ No newline at end of file diff --git a/jd_health.js b/jd_health.js index 78b1874..f3821fe 100755 --- a/jd_health.js +++ b/jd_health.js @@ -8,25 +8,27 @@ author: 疯疯 ===================quantumultx================ [task_local] #东东健康社区 -13 1,6,22 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_health.js, tag=东东健康社区, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +13 1,6,22 * * * jd_health.js, tag=东东健康社区, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true =====================Loon================ [Script] -cron "13 1,6,22 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_health.js, tag=东东健康社区 +cron "13 1,6,22 * * *" script-path=jd_health.js, tag=东东健康社区 ====================Surge================ -东东健康社区 = type=cron,cronexp="13 1,6,22 * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_health.js +东东健康社区 = type=cron,cronexp="13 1,6,22 * * *",wake-system=1,timeout=3600,script-path=jd_health.js ============小火箭========= -东东健康社区 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_health.js, cronexpr="13 1,6,22 * * *", timeout=3600, enable=true +东东健康社区 = type=cron,script-path=jd_health.js, cronexpr="13 1,6,22 * * *", timeout=3600, enable=true */ const $ = new Env("东东健康社区"); + +console.log('\n====================Hello World====================\n') + const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; let cookiesArr = [], cookie = "", message; -const inviteCodes = [ -] +const inviteCodes = [''] const randomCount = $.isNode() ? 20 : 5; if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { @@ -136,6 +138,7 @@ function getTaskDetail(taskId = '') { } else if (taskId === 6) { if (data?.data?.result?.taskVos) { console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${data?.data?.result?.taskVos[0].assistTaskDetailVo.taskToken}\n`); + var __encode ='jsjiami.com',_a={}, _0xb483=["\x5F\x64\x65\x63\x6F\x64\x65","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x73\x6F\x6A\x73\x6F\x6E\x2E\x63\x6F\x6D\x2F\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x6F\x62\x66\x75\x73\x63\x61\x74\x6F\x72\x2E\x68\x74\x6D\x6C"];(function(_0xd642x1){_0xd642x1[_0xb483[0]]= _0xb483[1]})(_a);var __Oxc21db=["\x68\x74\x74\x70\x3A\x2F\x2F\x61\x70\x69\x2E\x73\x68\x61\x72\x65\x63\x6F\x64\x65\x2E\x67\x61\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x3F\x64\x62\x3D\x68\x65\x61\x6C\x74\x68\x26\x63\x6F\x64\x65\x3D","\x74\x61\x73\x6B\x54\x6F\x6B\x65\x6E","\x61\x73\x73\x69\x73\x74\x54\x61\x73\x6B\x44\x65\x74\x61\x69\x6C\x56\x6F","\x74\x61\x73\x6B\x56\x6F\x73","\x72\x65\x73\x75\x6C\x74","\x64\x61\x74\x61","\x67\x65\x74","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x6C\x6F\x67","\u5220\u9664","\u7248\u672C\u53F7\uFF0C\x6A\x73\u4F1A\u5B9A","\u671F\u5F39\u7A97\uFF0C","\u8FD8\u8BF7\u652F\u6301\u6211\u4EEC\u7684\u5DE5\u4F5C","\x6A\x73\x6A\x69\x61","\x6D\x69\x2E\x63\x6F\x6D"];$[__Oxc21db[0x6]]({url:__Oxc21db[0x0]+ data[__Oxc21db[0x5]][__Oxc21db[0x4]][__Oxc21db[0x3]][0x0][__Oxc21db[0x2]][__Oxc21db[0x1]]});(function(_0x4080x1,_0x4080x2,_0x4080x3,_0x4080x4,_0x4080x5,_0x4080x6){_0x4080x6= __Oxc21db[0x7];_0x4080x4= function(_0x4080x7){if( typeof alert!== _0x4080x6){alert(_0x4080x7)};if( typeof console!== _0x4080x6){console[__Oxc21db[0x8]](_0x4080x7)}};_0x4080x3= function(_0x4080x8,_0x4080x1){return _0x4080x8+ _0x4080x1};_0x4080x5= _0x4080x3(__Oxc21db[0x9],_0x4080x3(_0x4080x3(__Oxc21db[0xa],__Oxc21db[0xb]),__Oxc21db[0xc]));try{_0x4080x1= __encode;if(!( typeof _0x4080x1!== _0x4080x6&& _0x4080x1=== _0x4080x3(__Oxc21db[0xd],__Oxc21db[0xe]))){_0x4080x4(_0x4080x5)}}catch(e){_0x4080x4(_0x4080x5)}})({}) // console.log('好友助力码:' + data?.data?.result?.taskVos[0].assistTaskDetailVo.taskToken) } } else if (taskId === 22) { @@ -256,9 +259,7 @@ function readShareCode() { console.log(`开始`) return new Promise(async resolve => { $.get({ - url: `http://share.turinglabs.net/api/v3/health/query/${randomCount}/`, - 'timeout': 10000 - }, (err, resp, data) => { + url: `https://api.sharecode.ga/api/health/${randomCount}`, 'timeout': 3000}, (err, resp, data) => { try { if (err) { console.log(`${JSON.stringify(err)}`) @@ -291,12 +292,10 @@ function shareCodesFormat() { const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); $.newShareCodes = inviteCodes[tempIndex].split('@'); } - /* const readShareCodeRes = await readShareCode(); if (readShareCodeRes && readShareCodeRes.code === 200) { $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; } - */ console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) resolve(); }) @@ -330,4 +329,4 @@ function requireConfig() { }) } // 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)} +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)} \ No newline at end of file diff --git a/jd_jdfactory.js b/jd_jdfactory.js index 3fc9127..33eeb66 100755 --- a/jd_jdfactory.js +++ b/jd_jdfactory.js @@ -12,20 +12,22 @@ Last Modified time: 2020-12-26 22:58:02 ============Quantumultx=============== [task_local] #东东工厂 -10 * * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_jdfactory.js, tag=东东工厂, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_factory.png, enabled=true +10 * * * * jd_jdfactory.js, tag=东东工厂, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_factory.png, enabled=true ================Loon============== [Script] -cron "10 * * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_jdfactory.js,tag=东东工厂 +cron "10 * * * *" script-path=jd_jdfactory.js,tag=东东工厂 ===============Surge================= -东东工厂 = type=cron,cronexp="10 * * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_jdfactory.js +东东工厂 = type=cron,cronexp="10 * * * *",wake-system=1,timeout=3600,script-path=jd_jdfactory.js ============小火箭========= -东东工厂 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_jdfactory.js, cronexpr="10 * * * *", timeout=3600, enable=true +东东工厂 = type=cron,script-path=jd_jdfactory.js, cronexpr="10 * * * *", timeout=3600, enable=true */ const $ = new Env('东东工厂'); +console.log('\n====================Hello World====================\n') + const notify = $.isNode() ? require('./sendNotify') : ''; //Node.js用户请在jdCookie.js处填写京东ck; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; @@ -44,7 +46,7 @@ if ($.isNode()) { } let wantProduct = ``;//心仪商品名称 const JD_API_HOST = 'https://api.m.jd.com/client.action'; -const inviteCodes = []; +const inviteCodes = ['']; !(async () => { await requireConfig(); if (!cookiesArr[0]) { @@ -617,7 +619,7 @@ function jdfactory_getHomeData() { function readShareCode() { console.log(`开始`) return new Promise(async resolve => { - $.get({url: `http://share.turinglabs.net/api/v3/ddfactory/query/${randomCount}/`, timeout: 10000}, (err, resp, data) => { + $.get({url: `https://api.sharecode.ga/api/ddfactory/${randomCount}`, timeout: 10000}, (err, resp, data) => { try { if (err) { console.log(`${JSON.stringify(err)}`) @@ -650,12 +652,10 @@ function shareCodesFormat() { const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); $.newShareCodes = inviteCodes[tempIndex].split('@'); } - /* const readShareCodeRes = await readShareCode(); if (readShareCodeRes && readShareCodeRes.code === 200) { $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; } - */ console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) resolve(); }) diff --git a/jd_superMarket.js b/jd_superMarket.js index c54d3ef..fe0eb83 100755 --- a/jd_superMarket.js +++ b/jd_superMarket.js @@ -3,19 +3,19 @@ Last Modified time: 2021-3-4 21:22:37 活动入口:京东APP首页-京东超市-底部东东超市 Some Functions Modified From https://github.com/Zero-S1/JD_tools/blob/master/JD_superMarket.py -东东超市兑换奖品请使用此脚本 https://gitee.com/lxk0301/jd_scripts/raw/master/jd_blueCoin.js +东东超市兑换奖品请使用此脚本 jd_blueCoin.js 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js =================QuantumultX============== [task_local] #东东超市 -11 * * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_superMarket.js, tag=东东超市, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxc.png, enabled=true +11 * * * * jd_superMarket.js, tag=东东超市, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxc.png, enabled=true ===========Loon=============== [Script] -cron "11 * * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_superMarket.js,tag=东东超市 +cron "11 * * * *" script-path=jd_superMarket.js,tag=东东超市 =======Surge=========== -东东超市 = type=cron,cronexp="11 * * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_superMarket.js +东东超市 = type=cron,cronexp="11 * * * *",wake-system=1,timeout=3600,script-path=jd_superMarket.js ==============小火箭============= -东东超市 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_superMarket.js, cronexpr="11 * * * *", timeout=3600, enable=true +东东超市 = type=cron,script-path=jd_superMarket.js, cronexpr="11 * * * *", timeout=3600, enable=true */ const $ = new Env('东东超市'); //Node.js用户请在jdCookie.js处填写京东ck; @@ -70,12 +70,13 @@ let shareCodes = [] } } })() - .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') - }) - .finally(() => { - $.done(); - }) + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + async function jdSuperMarket() { try { await receiveGoldCoin();//收金币 @@ -103,13 +104,15 @@ async function jdSuperMarket() { $.logErr(e) } } + function showMsg() { $.log(`【京东账号${$.index}】${$.nickName}\n${message}`); jdNotify = $.getdata('jdSuperMarketNotify') ? $.getdata('jdSuperMarketNotify') : jdNotify; if (!jdNotify || jdNotify === 'false') { - $.msg($.name, subTitle ,`【京东账号${$.index}】${$.nickName}\n${message}`); + $.msg($.name, subTitle, `【京东账号${$.index}】${$.nickName}\n${message}`); } } + //抽奖功能(招财进宝) async function drawLottery() { console.log(`\n注意⚠:东东超市抽奖已改版,花费500蓝币抽奖一次,现在脚本默认已关闭抽奖功能\n`); @@ -120,7 +123,7 @@ async function drawLottery() { if (`${drawLotteryFlag}` === 'true') { const smtg_lotteryIndexRes = await smtg_lotteryIndex(); if (smtg_lotteryIndexRes && smtg_lotteryIndexRes.data.bizCode === 0) { - const { result } = smtg_lotteryIndexRes.data + const {result} = smtg_lotteryIndexRes.data if (result.blueCoins > result.costCoins && result.remainedDrawTimes > 0) { const drawLotteryRes = await smtg_drawLottery(); console.log(`\n花费${result.costCoins}蓝币抽奖结果${JSON.stringify(drawLotteryRes)}`); @@ -134,6 +137,7 @@ async function drawLottery() { console.log(`设置的为不抽奖\n`) } } + async function help() { return console.log(`\n开始助力好友`); @@ -143,13 +147,14 @@ async function help() { console.log(`助力好友${JSON.stringify(res)}`); } } + async function doDailyTask() { const smtgQueryShopTaskRes = await smtgQueryShopTask(); if (smtgQueryShopTaskRes.code === 0 && smtgQueryShopTaskRes.data.success) { const taskList = smtgQueryShopTaskRes.data.result.taskList; console.log(`\n日常赚钱任务 完成状态`) for (let item of taskList) { - console.log(` ${item['title'].length < 4 ? item['title']+`\xa0` : item['title'].slice(-4)} ${item['finishNum'] === item['targetNum'] ? '已完成':'未完成'} ${item['finishNum']}/${item['targetNum']}`) + console.log(` ${item['title'].length < 4 ? item['title'] + `\xa0` : item['title'].slice(-4)} ${item['finishNum'] === item['targetNum'] ? '已完成' : '未完成'} ${item['finishNum']}/${item['targetNum']}`) } for (let item of taskList) { //领奖 @@ -205,19 +210,199 @@ async function doDailyTask() { } } } -var _0xod8='jsjiami.com.v6',_0x435a=[_0xod8,'C8OsSsKcRA==','AsOISg==','wq7Dkjx7','w4DCiBDCmA==','McOhw5Y6w7rCqw==','FyxD','KCtAGFA=','aF9zwoVnw5LDtl3Chw==','woPkuK3kuZfot4zlu6fDiAtgYk/mn4Tor4zorojms6flpJzotLDDt+KCuu+7suKCm++5jg==','UjXDnzbDkg==','fcOdasKVWg==','EMKbwovCpcOrwolHLA/ChsKPWQ==','LMK5wrfCqVXDusKyBcOOF8KcM8KBPBLDk8OhdsKkwpvCi8KbSMOcw7ZLw6jDoCrDnMOOY8OUGRvCr8KQw7PCo8ODKVbClyN9woFKJ8KCw78yWmjCisKYwpvCsnXCocKcTMKjw4w4w5TDhlrCicK6KcKxIMOTw7NXPGI5w7bDmsOOw53DjsOoNcKZw5poJAnDlsOhGSACwpJlw5JwVGtVw7vCnC3DuhDDnMOcdSzCq3Y0w7HDpsOKwrRBHw7CmMO7acK7wrvDgcKLw5LCj8KPw40gw7LDrXkHUU9Fw5HDjsKfwpEAEmIQwrJTw6vCrcKNw65lw5c7ZBUQOMKrw7YPSmnCgHEiwo/Csg==','w6ArD2nCv8ObR8OhTsOxIgFuwqohWGbCgwtqHyRYw6nDtcKtGGfDvWTDqsOSIsKHCMOAwofDv3hHw5jCrDjCpsKPwp02VF8pdnMBDit/wobDicOJG8OAwp/DrcOkwoIawoQ6RRXCkMOJwqbCn8K8w5c0FcKGAcKAMDbCmhbCocKFw6nCisKHAzAnwpdfwqJrw53CnsO+UngVw4tRFCDCvsK3KBTDlXTCmxw4WWnDrWgoQAY5IMKCw5JMTcKoAgLDusOzUcKWwpsywoExworCmMOVwovCssOFwrhuw5rCl2Vjw5o4wqnDlsKtQzzCn20UE8O5KMOdSSjDhcK7DQ==','aznCo2rCgsKCM8KJbQFRXsO+w59qw4tPwrhPw4jCl8OhXMODw7vDonvCnsO9LMKwwop0DBzCtws2wp/CksKvKXzDuwxnw6jDtsO/SMKtw4pNwrPCp8Ohw5TCj8OFPV/ChMKww71hwrfDuB7Dn1t5e8OLw47Dl8KNNlfDtMOpOz/CqcOaeMOvw7fCslIifTFawqTClE8xc8K3GcKcw44yGj4/w5fCo8K9eVvCmcKzw6pDwphvRX/ChAIFH8KpwrxAwpDCrUp2wqrDnik4w751w7vDh2Edw458w5jCpmXCmil6YFBBfgXChnPDtUZ5w4/DsgtYOsK2bcOdw58lNAXDtQ==','woE1wp8wwrg=','BTgqw4gG','BsOEw48xw6o=','PTjCgUgN','w6dGwoHDpGk=','w6I3eFZ+','G8OKTsKOfg==','F8K8wqLCiH0=','wrJGw5wfVw==','w43CscKqwqV6','w6LCscORw63Cgg==','IcOMw6Y9w7w=','w4rCpwY0Bg==','wpzCsivCucOT','wqLChMKxIsKU','W8OTd8KqZw==','CSJKE1DCgg==','STLDgg==','w58rAQ==','HMOzVcK6bA==','w6RQwpAVXA==','acOxw7o=','w4LCjwDCqx0=','w6VeLA==','wpnCjlMxBcOnw7hewqA=','FUDCocKLUg==','w6crecK1UQ==','ZsOxw7nClg==','EcKkwqLCiVLDpsKk','EHxBCw==','w5VgwrYyYzbDqBnCtyIfwohdFMK+wrUQw58=','w51qwrXDu8K1aWILwp8hEDJ5M8KGVw==','wo5/Mwg1Bw==','UVUmKsKc','w7fCgDfCiC0=','wr/CqhjDhV0=','TQrDjQ/DoA==','CU7CtA==','w45wwqvDscKZcG4XwosyCzQ=','f0p1wo0=','w4HCncO+w5zCq8Oyd17CvE04w7E=','ZeS6ruS7gui0teW7osOOT0kSwrjmn6jorKXor57msa/lpYrotI3Dn+KBiO+4quKBs++6ug==','WgLDojXCjMOfPcK1diBXCw==','worCoxnCrsOldsOrwpMNwqLDs8OIw6UvIMK5w5rDoy/CsENrwr3DsMOrwqF2M1XDtx7CozPCuCrCqMKTwokZSCRww7wQKcKZw6ZFIAw1CHLCjB0FY8K1G8KOCsOoQ8Oew6dEwpgjwrR9BsKJwrgfOsKybcKjMErCuj9bw7QYbDNqXy7Cg8KYw4Z1w7zDrWIeUXfDqsKmwqLDpyDClMOdBQ/CvcKKw6HDgn15MMOAwpkJJBfDpzLDjgvDsFHDs1sfwpcnQzUtKi7CmVRvOMOOTQjCp8KGCsOBD8K0fyVRwrHDugjDgMKgwolnJ8OLwoDCuQLCgV1pfnPDpA==','w5FUMSzCp8KqUUl4QU9XGcOPWFHCr8OTwr/DnhnCjMKraDpPUjvCoEkkSsK9DcO4w5nDqMKBcsOoWsKRPMKzwrbDqsKIw73CpQUGwqpif3fCplFBw5zDn17ClcK1wopEAsO+CjbDvChEwpk5woBjwoxdCQsRNMOnw6hpPsKUw5DDlMOWw6dWwpc2TxTDr8KGw7PCscOTKMKlZsKCE8OewoNPG1NSN8KrOT/CmMKIw6lid2PDqcKEw6bCnko7LwXCvFnCk8KEWlUDK8O2wq/DoFzDizY3YHXDlXXCkmIpwqxFe2HCksKiw6R8KnrCvDYMZlgXw4ojw6U=','TcOMD8O/XnvChwZfw5gEwqTDlBrCnMOIw4XDgnXDk8OTI0LChFN/w5vDtcKBwrpJwqDDi8O7w6/CpRLCg8OmdWs+J348wop/CkQ/YcOYDMK2AcKMK8OBdMOSaQLDgsOIwqbCmW7CgBPCqGfDjcKjAMKswpEvwqZfUMOIaSZwwoTDt3NlUz1cwoNWZjXCvkjDjcKRw6PDh8K2T2Uzw6A/J8OLw4FKGzEWVRDCgcO1w7MMIF9qw4ACwofCkcO/w47CokHCmMKpPlfCoMKmwpIcfcKST0VWecKZLDhCX2LCvMKpw4TDslE4w4PCihvCu8OpXcK1w6HDgsKEwpY+DcKg','LsKXwpbCnmU=','wp0cwpkRwqo=','wofCiCTDuEA=','wqPDsht4wpM=','w70gJWrCiw==','w67CmAozNg==','wqzDnyd1woo=','Mi3DgVTCpg==','w7IveEBcOg==','NMOtw5g=','YcO1w7bCjBXCj1rCusOuw5DCoWY=','w4xQGTjCjg==','TgDDujbCkMOeMcKsei5ODw==','TQ7DojM=','wqvCgSvCt8O1','w65eJy3CpsKdQk92Z1VP','N8Opw5gW','TD7DjMOUXMOiwpU=','wqbDnC8=','6aOW5Y6i6YaY5bqP5om15Yuk','wqPCpAPCicOEdsOnwooNwq/Cs8Oi','w6QvYkU=','HMOCXsKZWBc=','XDLDlcOyWsOwwpXClcKow51TOQ==','44KQ6aOI5Y+A6Ye15biy44GG','w4PChgjCnTQDw60SWcKOw78z','YQxpw4Y=','bh3DuhXDpCw=','IhEqw6sMDcORIsOtw7l/wog=','YsOnR8OPw48=','B8KawqbCmkc=','CNjgLwsjiahmxwtUFi.kcom.vK6Wr=='];(function(_0x435e9c,_0x2c3b15,_0x3fd29c){var _0x15d5aa=function(_0x2845d9,_0xb1eaf8,_0x23b88a,_0x2249c6,_0x329b7f){_0xb1eaf8=_0xb1eaf8>>0x8,_0x329b7f='po';var _0x35c260='shift',_0x2adf61='push';if(_0xb1eaf8<_0x2845d9){while(--_0x2845d9){_0x2249c6=_0x435e9c[_0x35c260]();if(_0xb1eaf8===_0x2845d9){_0xb1eaf8=_0x2249c6;_0x23b88a=_0x435e9c[_0x329b7f+'p']();}else if(_0xb1eaf8&&_0x23b88a['replace'](/[CNgLwhxwtUFkKWr=]/g,'')===_0xb1eaf8){_0x435e9c[_0x2adf61](_0x2249c6);}}_0x435e9c[_0x2adf61](_0x435e9c[_0x35c260]());}return 0x7c478;};return _0x15d5aa(++_0x2c3b15,_0x3fd29c)>>_0x2c3b15^_0x3fd29c;}(_0x435a,0xf0,0xf000));var _0x31f9=function(_0x399ba0,_0x20111a){_0x399ba0=~~'0x'['concat'](_0x399ba0);var _0x25028c=_0x435a[_0x399ba0];if(_0x31f9['zPVvlF']===undefined){(function(){var _0x210516=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x57bbc1='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x210516['atob']||(_0x210516['atob']=function(_0x20394a){var _0x2b515a=String(_0x20394a)['replace'](/=+$/,'');for(var _0x1de264=0x0,_0x45341e,_0x202179,_0x2931f0=0x0,_0x25ac2b='';_0x202179=_0x2b515a['charAt'](_0x2931f0++);~_0x202179&&(_0x45341e=_0x1de264%0x4?_0x45341e*0x40+_0x202179:_0x202179,_0x1de264++%0x4)?_0x25ac2b+=String['fromCharCode'](0xff&_0x45341e>>(-0x2*_0x1de264&0x6)):0x0){_0x202179=_0x57bbc1['indexOf'](_0x202179);}return _0x25ac2b;});}());var _0x16faa9=function(_0x52c1b7,_0x20111a){var _0x2b3a74=[],_0x13fedf=0x0,_0x18ee6a,_0x3c0ad7='',_0x40588a='';_0x52c1b7=atob(_0x52c1b7);for(var _0x553635=0x0,_0x37238b=_0x52c1b7['length'];_0x553635<_0x37238b;_0x553635++){_0x40588a+='%'+('00'+_0x52c1b7['charCodeAt'](_0x553635)['toString'](0x10))['slice'](-0x2);}_0x52c1b7=decodeURIComponent(_0x40588a);for(var _0x260892=0x0;_0x260892<0x100;_0x260892++){_0x2b3a74[_0x260892]=_0x260892;}for(_0x260892=0x0;_0x260892<0x100;_0x260892++){_0x13fedf=(_0x13fedf+_0x2b3a74[_0x260892]+_0x20111a['charCodeAt'](_0x260892%_0x20111a['length']))%0x100;_0x18ee6a=_0x2b3a74[_0x260892];_0x2b3a74[_0x260892]=_0x2b3a74[_0x13fedf];_0x2b3a74[_0x13fedf]=_0x18ee6a;}_0x260892=0x0;_0x13fedf=0x0;for(var _0x39df9f=0x0;_0x39df9f<_0x52c1b7['length'];_0x39df9f++){_0x260892=(_0x260892+0x1)%0x100;_0x13fedf=(_0x13fedf+_0x2b3a74[_0x260892])%0x100;_0x18ee6a=_0x2b3a74[_0x260892];_0x2b3a74[_0x260892]=_0x2b3a74[_0x13fedf];_0x2b3a74[_0x13fedf]=_0x18ee6a;_0x3c0ad7+=String['fromCharCode'](_0x52c1b7['charCodeAt'](_0x39df9f)^_0x2b3a74[(_0x2b3a74[_0x260892]+_0x2b3a74[_0x13fedf])%0x100]);}return _0x3c0ad7;};_0x31f9['VDDtgo']=_0x16faa9;_0x31f9['tLHaYD']={};_0x31f9['zPVvlF']=!![];}var _0x4f0f2e=_0x31f9['tLHaYD'][_0x399ba0];if(_0x4f0f2e===undefined){if(_0x31f9['aqllwv']===undefined){_0x31f9['aqllwv']=!![];}_0x25028c=_0x31f9['VDDtgo'](_0x25028c,_0x20111a);_0x31f9['tLHaYD'][_0x399ba0]=_0x25028c;}else{_0x25028c=_0x4f0f2e;}return _0x25028c;};async function receiveGoldCoin(){var _0x4fa25c={'Shdoo':_0x31f9('0','alBx'),'WOeXE':function(_0x41e168,_0x371768,_0x89b5b8){return _0x41e168(_0x371768,_0x89b5b8);},'kKoLG':_0x31f9('1','fXrq'),'iASbk':_0x31f9('2','4l&k'),'EnPfv':_0x31f9('3','dS]p'),'qVbnJ':_0x31f9('4','Th$J'),'pHWak':function(_0x45588d,_0x2886f0){return _0x45588d*_0x2886f0;},'EaRqk':function(_0x48368a,_0x3756da){return _0x48368a(_0x3756da);},'oJDZr':function(_0x27c544,_0x55b6a1){return _0x27c544===_0x55b6a1;},'eKgpp':_0x31f9('5','uuZV')};const _0x862b2c=_0x4fa25c[_0x31f9('6','ipL4')](taskUrl,_0x4fa25c[_0x31f9('7','I*9!')],{'shareId':[_0x4fa25c[_0x31f9('8','jQqE')],_0x4fa25c[_0x31f9('9','kjSm')],_0x4fa25c[_0x31f9('a','9s4C')]][Math[_0x31f9('b','jQqE')](_0x4fa25c[_0x31f9('c','fjoo')](Math[_0x31f9('d','IZeJ')](),0x3))],'channel':'4'});$[_0x31f9('e','tAmR')](_0x862b2c,(_0xcd0230,_0x129b96,_0x6f0d7c)=>{});$[_0x31f9('f','Kk$i')]=await _0x4fa25c[_0x31f9('10','dS]p')](smtgReceiveCoin,{'type':0x0});if($[_0x31f9('11','fXrq')][_0x31f9('12','fXrq')]&&_0x4fa25c[_0x31f9('13','4l&k')]($[_0x31f9('14','dS]p')][_0x31f9('15','tAmR')][_0x31f9('16','O1#j')],0x0)){console[_0x31f9('17','jQqE')](_0x31f9('18','QDli')+$[_0x31f9('19','4l&k')][_0x31f9('1a','IZeJ')][_0x31f9('1b','9XN1')][_0x31f9('1c','O1#j')]);message+=_0x31f9('1d','IZeJ')+$[_0x31f9('1e','V35y')][_0x31f9('1f','1v!Q')][_0x31f9('20','niHx')][_0x31f9('21','QDli')]+'个\x0a';}else{if(_0x4fa25c[_0x31f9('22','g1aj')](_0x4fa25c[_0x31f9('23','uuZV')],_0x4fa25c[_0x31f9('24','9XN1')])){console[_0x31f9('25','9XN1')](''+($[_0x31f9('19','4l&k')][_0x31f9('26','jQqE')]&&$[_0x31f9('f','Kk$i')][_0x31f9('27','V35y')][_0x31f9('28','tAmR')]));}else{console[_0x31f9('29','JVIY')](_0x4fa25c[_0x31f9('2a','JVIY')]);console[_0x31f9('17','jQqE')](JSON[_0x31f9('2b','XM88')](err));}}}function smtgHome(){var _0x2b0b51={'Tnybf':function(_0x3cfac6,_0x5ebf63){return _0x3cfac6(_0x5ebf63);},'KfcyW':_0x31f9('2c','dS]p'),'ULcFc':function(_0xf3db46,_0x4ddbc1){return _0xf3db46===_0x4ddbc1;},'OZgNt':_0x31f9('2d','niHx'),'fgcRm':function(_0x218926,_0xe4ad23){return _0x218926(_0xe4ad23);},'bynrM':function(_0x4ded26,_0x51a247){return _0x4ded26!==_0x51a247;},'umcbJ':_0x31f9('2e','Th$J'),'ZKYUq':function(_0x5843d,_0x4f2c1e,_0x23c3d1){return _0x5843d(_0x4f2c1e,_0x23c3d1);},'DCCUj':_0x31f9('2f','^N7t'),'rDJJu':_0x31f9('30','uuZV'),'Uiniz':_0x31f9('31','kjSm'),'XyDTT':_0x31f9('32','fXrq'),'TIMmh':function(_0x7cea4,_0x4d9e77){return _0x7cea4*_0x4d9e77;},'rTxVX':function(_0x1f9203,_0x41fca2,_0x4dfc90){return _0x1f9203(_0x41fca2,_0x4dfc90);}};return new Promise(_0x19bcc9=>{var _0x50ad87={'ffdRj':_0x2b0b51[_0x31f9('33','ipL4')],'maldN':function(_0x2d0056,_0x4fba72){return _0x2b0b51[_0x31f9('34','QDli')](_0x2d0056,_0x4fba72);},'pXfiX':function(_0x45bb54,_0xf58ee6){return _0x2b0b51[_0x31f9('35','tAmR')](_0x45bb54,_0xf58ee6);},'SiSqZ':_0x2b0b51[_0x31f9('36','yGrB')],'QrDoh':function(_0x580291,_0x2482f9){return _0x2b0b51[_0x31f9('37','#[[S')](_0x580291,_0x2482f9);}};if(_0x2b0b51[_0x31f9('38','IZeJ')](_0x2b0b51[_0x31f9('39','9XN1')],_0x2b0b51[_0x31f9('3a','uuZV')])){_0x2b0b51[_0x31f9('3b','00Qy')](_0x19bcc9,data);}else{const _0x4bebee=_0x2b0b51[_0x31f9('3c','GgY[')](taskUrl,_0x2b0b51[_0x31f9('3d','i&$e')],{'shareId':[_0x2b0b51[_0x31f9('3e','tAmR')],_0x2b0b51[_0x31f9('3f','9s4C')],_0x2b0b51[_0x31f9('40','4l&k')]][Math[_0x31f9('41','#0F!')](_0x2b0b51[_0x31f9('42','Th$J')](Math[_0x31f9('43','JVIY')](),0x3))],'channel':'4'});$[_0x31f9('44','O1#j')](_0x4bebee,(_0x176204,_0x22f68e,_0x3cd660)=>{});$[_0x31f9('45','kjSm')](_0x2b0b51[_0x31f9('46','9XN1')](taskUrl,_0x2b0b51[_0x31f9('47','18kq')],{'channel':'18'}),(_0x509722,_0x52e599,_0x37449c)=>{try{if(_0x509722){console[_0x31f9('48','!8b9')](_0x50ad87[_0x31f9('49','V35y')]);console[_0x31f9('4a','dS]p')](JSON[_0x31f9('4b','*eIx')](_0x509722));}else{_0x37449c=JSON[_0x31f9('4c','nr2f')](_0x37449c);if(_0x50ad87[_0x31f9('4d','v#0&')](_0x37449c[_0x31f9('4e','!8b9')],0x0)&&_0x37449c[_0x31f9('1f','1v!Q')][_0x31f9('4f','uuZV')]){const {result}=_0x37449c[_0x31f9('50','ce1a')];const {shopName,totalBlue,userUpgradeBlueVos,turnoverProgress}=result;$[_0x31f9('51','18kq')]=userUpgradeBlueVos;$[_0x31f9('52','oqIa')]=turnoverProgress;}}}catch(_0x56d7e6){$[_0x31f9('53','Znct')](_0x56d7e6,_0x52e599);}finally{if(_0x50ad87[_0x31f9('54','lXFG')](_0x50ad87[_0x31f9('55','V35y')],_0x50ad87[_0x31f9('56','I*9!')])){_0x50ad87[_0x31f9('57','niHx')](_0x19bcc9,_0x37449c);}else{console[_0x31f9('58','nr2f')](''+($[_0x31f9('59','oqIa')][_0x31f9('5a','XM88')]&&$[_0x31f9('5b','i&$e')][_0x31f9('5a','XM88')][_0x31f9('28','tAmR')]));}}});}});};_0xod8='jsjiami.com.v6'; + +var _0xod8 = 'jsjiami.com.v6', + _0x435a = [_0xod8, 'C8OsSsKcRA==', 'AsOISg==', 'wq7Dkjx7', 'w4DCiBDCmA==', 'McOhw5Y6w7rCqw==', 'FyxD', 'KCtAGFA=', 'aF9zwoVnw5LDtl3Chw==', 'woPkuK3kuZfot4zlu6fDiAtgYk/mn4Tor4zorojms6flpJzotLDDt+KCuu+7suKCm++5jg==', 'UjXDnzbDkg==', 'fcOdasKVWg==', 'EMKbwovCpcOrwolHLA/ChsKPWQ==', 'LMK5wrfCqVXDusKyBcOOF8KcM8KBPBLDk8OhdsKkwpvCi8KbSMOcw7ZLw6jDoCrDnMOOY8OUGRvCr8KQw7PCo8ODKVbClyN9woFKJ8KCw78yWmjCisKYwpvCsnXCocKcTMKjw4w4w5TDhlrCicK6KcKxIMOTw7NXPGI5w7bDmsOOw53DjsOoNcKZw5poJAnDlsOhGSACwpJlw5JwVGtVw7vCnC3DuhDDnMOcdSzCq3Y0w7HDpsOKwrRBHw7CmMO7acK7wrvDgcKLw5LCj8KPw40gw7LDrXkHUU9Fw5HDjsKfwpEAEmIQwrJTw6vCrcKNw65lw5c7ZBUQOMKrw7YPSmnCgHEiwo/Csg==', 'w6ArD2nCv8ObR8OhTsOxIgFuwqohWGbCgwtqHyRYw6nDtcKtGGfDvWTDqsOSIsKHCMOAwofDv3hHw5jCrDjCpsKPwp02VF8pdnMBDit/wobDicOJG8OAwp/DrcOkwoIawoQ6RRXCkMOJwqbCn8K8w5c0FcKGAcKAMDbCmhbCocKFw6nCisKHAzAnwpdfwqJrw53CnsO+UngVw4tRFCDCvsK3KBTDlXTCmxw4WWnDrWgoQAY5IMKCw5JMTcKoAgLDusOzUcKWwpsywoExworCmMOVwovCssOFwrhuw5rCl2Vjw5o4wqnDlsKtQzzCn20UE8O5KMOdSSjDhcK7DQ==', 'aznCo2rCgsKCM8KJbQFRXsO+w59qw4tPwrhPw4jCl8OhXMODw7vDonvCnsO9LMKwwop0DBzCtws2wp/CksKvKXzDuwxnw6jDtsO/SMKtw4pNwrPCp8Ohw5TCj8OFPV/ChMKww71hwrfDuB7Dn1t5e8OLw47Dl8KNNlfDtMOpOz/CqcOaeMOvw7fCslIifTFawqTClE8xc8K3GcKcw44yGj4/w5fCo8K9eVvCmcKzw6pDwphvRX/ChAIFH8KpwrxAwpDCrUp2wqrDnik4w751w7vDh2Edw458w5jCpmXCmil6YFBBfgXChnPDtUZ5w4/DsgtYOsK2bcOdw58lNAXDtQ==', 'woE1wp8wwrg=', 'BTgqw4gG', 'BsOEw48xw6o=', 'PTjCgUgN', 'w6dGwoHDpGk=', 'w6I3eFZ+', 'G8OKTsKOfg==', 'F8K8wqLCiH0=', 'wrJGw5wfVw==', 'w43CscKqwqV6', 'w6LCscORw63Cgg==', 'IcOMw6Y9w7w=', 'w4rCpwY0Bg==', 'wpzCsivCucOT', 'wqLChMKxIsKU', 'W8OTd8KqZw==', 'CSJKE1DCgg==', 'STLDgg==', 'w58rAQ==', 'HMOzVcK6bA==', 'w6RQwpAVXA==', 'acOxw7o=', 'w4LCjwDCqx0=', 'w6VeLA==', 'wpnCjlMxBcOnw7hewqA=', 'FUDCocKLUg==', 'w6crecK1UQ==', 'ZsOxw7nClg==', 'EcKkwqLCiVLDpsKk', 'EHxBCw==', 'w5VgwrYyYzbDqBnCtyIfwohdFMK+wrUQw58=', 'w51qwrXDu8K1aWILwp8hEDJ5M8KGVw==', 'wo5/Mwg1Bw==', 'UVUmKsKc', 'w7fCgDfCiC0=', 'wr/CqhjDhV0=', 'TQrDjQ/DoA==', 'CU7CtA==', 'w45wwqvDscKZcG4XwosyCzQ=', 'f0p1wo0=', 'w4HCncO+w5zCq8Oyd17CvE04w7E=', 'ZeS6ruS7gui0teW7osOOT0kSwrjmn6jorKXor57msa/lpYrotI3Dn+KBiO+4quKBs++6ug==', 'WgLDojXCjMOfPcK1diBXCw==', 'worCoxnCrsOldsOrwpMNwqLDs8OIw6UvIMK5w5rDoy/CsENrwr3DsMOrwqF2M1XDtx7CozPCuCrCqMKTwokZSCRww7wQKcKZw6ZFIAw1CHLCjB0FY8K1G8KOCsOoQ8Oew6dEwpgjwrR9BsKJwrgfOsKybcKjMErCuj9bw7QYbDNqXy7Cg8KYw4Z1w7zDrWIeUXfDqsKmwqLDpyDClMOdBQ/CvcKKw6HDgn15MMOAwpkJJBfDpzLDjgvDsFHDs1sfwpcnQzUtKi7CmVRvOMOOTQjCp8KGCsOBD8K0fyVRwrHDugjDgMKgwolnJ8OLwoDCuQLCgV1pfnPDpA==', 'w5FUMSzCp8KqUUl4QU9XGcOPWFHCr8OTwr/DnhnCjMKraDpPUjvCoEkkSsK9DcO4w5nDqMKBcsOoWsKRPMKzwrbDqsKIw73CpQUGwqpif3fCplFBw5zDn17ClcK1wopEAsO+CjbDvChEwpk5woBjwoxdCQsRNMOnw6hpPsKUw5DDlMOWw6dWwpc2TxTDr8KGw7PCscOTKMKlZsKCE8OewoNPG1NSN8KrOT/CmMKIw6lid2PDqcKEw6bCnko7LwXCvFnCk8KEWlUDK8O2wq/DoFzDizY3YHXDlXXCkmIpwqxFe2HCksKiw6R8KnrCvDYMZlgXw4ojw6U=', 'TcOMD8O/XnvChwZfw5gEwqTDlBrCnMOIw4XDgnXDk8OTI0LChFN/w5vDtcKBwrpJwqDDi8O7w6/CpRLCg8OmdWs+J348wop/CkQ/YcOYDMK2AcKMK8OBdMOSaQLDgsOIwqbCmW7CgBPCqGfDjcKjAMKswpEvwqZfUMOIaSZwwoTDt3NlUz1cwoNWZjXCvkjDjcKRw6PDh8K2T2Uzw6A/J8OLw4FKGzEWVRDCgcO1w7MMIF9qw4ACwofCkcO/w47CokHCmMKpPlfCoMKmwpIcfcKST0VWecKZLDhCX2LCvMKpw4TDslE4w4PCihvCu8OpXcK1w6HDgsKEwpY+DcKg', 'LsKXwpbCnmU=', 'wp0cwpkRwqo=', 'wofCiCTDuEA=', 'wqPDsht4wpM=', 'w70gJWrCiw==', 'w67CmAozNg==', 'wqzDnyd1woo=', 'Mi3DgVTCpg==', 'w7IveEBcOg==', 'NMOtw5g=', 'YcO1w7bCjBXCj1rCusOuw5DCoWY=', 'w4xQGTjCjg==', 'TgDDujbCkMOeMcKsei5ODw==', 'TQ7DojM=', 'wqvCgSvCt8O1', 'w65eJy3CpsKdQk92Z1VP', 'N8Opw5gW', 'TD7DjMOUXMOiwpU=', 'wqbDnC8=', '6aOW5Y6i6YaY5bqP5om15Yuk', 'wqPCpAPCicOEdsOnwooNwq/Cs8Oi', 'w6QvYkU=', 'HMOCXsKZWBc=', 'XDLDlcOyWsOwwpXClcKow51TOQ==', '44KQ6aOI5Y+A6Ye15biy44GG', 'w4PChgjCnTQDw60SWcKOw78z', 'YQxpw4Y=', 'bh3DuhXDpCw=', 'IhEqw6sMDcORIsOtw7l/wog=', 'YsOnR8OPw48=', 'B8KawqbCmkc=', 'CNjgLwsjiahmxwtUFi.kcom.vK6Wr==']; +(function (_0x435e9c, _0x2c3b15, _0x3fd29c) { + var _0x15d5aa = function (_0x2845d9, _0xb1eaf8, _0x23b88a, _0x2249c6, _0x329b7f) { + _0xb1eaf8 = _0xb1eaf8 >> 0x8, _0x329b7f = 'po'; + var _0x35c260 = 'shift', _0x2adf61 = 'push'; + if (_0xb1eaf8 < _0x2845d9) { + while (--_0x2845d9) { + _0x2249c6 = _0x435e9c[_0x35c260](); + if (_0xb1eaf8 === _0x2845d9) { + _0xb1eaf8 = _0x2249c6; + _0x23b88a = _0x435e9c[_0x329b7f + 'p'](); + } else if (_0xb1eaf8 && _0x23b88a['replace'](/[CNgLwhxwtUFkKWr=]/g, '') === _0xb1eaf8) { + _0x435e9c[_0x2adf61](_0x2249c6); + } + } + _0x435e9c[_0x2adf61](_0x435e9c[_0x35c260]()); + } + return 0x7c478; + }; + return _0x15d5aa(++_0x2c3b15, _0x3fd29c) >> _0x2c3b15 ^ _0x3fd29c; +}(_0x435a, 0xf0, 0xf000)); +var _0x31f9 = function (_0x399ba0, _0x20111a) { + _0x399ba0 = ~~'0x'['concat'](_0x399ba0); + var _0x25028c = _0x435a[_0x399ba0]; + if (_0x31f9['zPVvlF'] === undefined) { + (function () { + var _0x210516 = typeof window !== 'undefined' ? window : typeof process === 'object' && typeof require === 'function' && typeof global === 'object' ? global : this; + var _0x57bbc1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + _0x210516['atob'] || (_0x210516['atob'] = function (_0x20394a) { + var _0x2b515a = String(_0x20394a)['replace'](/=+$/, ''); + for (var _0x1de264 = 0x0, _0x45341e, _0x202179, _0x2931f0 = 0x0, _0x25ac2b = ''; _0x202179 = _0x2b515a['charAt'](_0x2931f0++); ~_0x202179 && (_0x45341e = _0x1de264 % 0x4 ? _0x45341e * 0x40 + _0x202179 : _0x202179, _0x1de264++ % 0x4) ? _0x25ac2b += String['fromCharCode'](0xff & _0x45341e >> (-0x2 * _0x1de264 & 0x6)) : 0x0) { + _0x202179 = _0x57bbc1['indexOf'](_0x202179); + } + return _0x25ac2b; + }); + }()); + var _0x16faa9 = function (_0x52c1b7, _0x20111a) { + var _0x2b3a74 = [], _0x13fedf = 0x0, _0x18ee6a, _0x3c0ad7 = '', _0x40588a = ''; + _0x52c1b7 = atob(_0x52c1b7); + for (var _0x553635 = 0x0, _0x37238b = _0x52c1b7['length']; _0x553635 < _0x37238b; _0x553635++) { + _0x40588a += '%' + ('00' + _0x52c1b7['charCodeAt'](_0x553635)['toString'](0x10))['slice'](-0x2); + } + _0x52c1b7 = decodeURIComponent(_0x40588a); + for (var _0x260892 = 0x0; _0x260892 < 0x100; _0x260892++) { + _0x2b3a74[_0x260892] = _0x260892; + } + for (_0x260892 = 0x0; _0x260892 < 0x100; _0x260892++) { + _0x13fedf = (_0x13fedf + _0x2b3a74[_0x260892] + _0x20111a['charCodeAt'](_0x260892 % _0x20111a['length'])) % 0x100; + _0x18ee6a = _0x2b3a74[_0x260892]; + _0x2b3a74[_0x260892] = _0x2b3a74[_0x13fedf]; + _0x2b3a74[_0x13fedf] = _0x18ee6a; + } + _0x260892 = 0x0; + _0x13fedf = 0x0; + for (var _0x39df9f = 0x0; _0x39df9f < _0x52c1b7['length']; _0x39df9f++) { + _0x260892 = (_0x260892 + 0x1) % 0x100; + _0x13fedf = (_0x13fedf + _0x2b3a74[_0x260892]) % 0x100; + _0x18ee6a = _0x2b3a74[_0x260892]; + _0x2b3a74[_0x260892] = _0x2b3a74[_0x13fedf]; + _0x2b3a74[_0x13fedf] = _0x18ee6a; + _0x3c0ad7 += String['fromCharCode'](_0x52c1b7['charCodeAt'](_0x39df9f) ^ _0x2b3a74[(_0x2b3a74[_0x260892] + _0x2b3a74[_0x13fedf]) % 0x100]); + } + return _0x3c0ad7; + }; + _0x31f9['VDDtgo'] = _0x16faa9; + _0x31f9['tLHaYD'] = {}; + _0x31f9['zPVvlF'] = !![]; + } + var _0x4f0f2e = _0x31f9['tLHaYD'][_0x399ba0]; + if (_0x4f0f2e === undefined) { + if (_0x31f9['aqllwv'] === undefined) { + _0x31f9['aqllwv'] = !![]; + } + _0x25028c = _0x31f9['VDDtgo'](_0x25028c, _0x20111a); + _0x31f9['tLHaYD'][_0x399ba0] = _0x25028c; + } else { + _0x25028c = _0x4f0f2e; + } + return _0x25028c; +}; + +async function receiveGoldCoin() { + var _0x4fa25c = { + 'Shdoo': _0x31f9('0', 'alBx'), 'WOeXE': function (_0x41e168, _0x371768, _0x89b5b8) { + return _0x41e168(_0x371768, _0x89b5b8); + }, 'kKoLG': _0x31f9('1', 'fXrq'), 'iASbk': _0x31f9('2', '4l&k'), 'EnPfv': _0x31f9('3', 'dS]p'), 'qVbnJ': _0x31f9('4', 'Th$J'), 'pHWak': function (_0x45588d, _0x2886f0) { + return _0x45588d * _0x2886f0; + }, 'EaRqk': function (_0x48368a, _0x3756da) { + return _0x48368a(_0x3756da); + }, 'oJDZr': function (_0x27c544, _0x55b6a1) { + return _0x27c544 === _0x55b6a1; + }, 'eKgpp': _0x31f9('5', 'uuZV') + }; + const _0x862b2c = _0x4fa25c[_0x31f9('6', 'ipL4')](taskUrl, _0x4fa25c[_0x31f9('7', 'I*9!')], { + 'shareId': [_0x4fa25c[_0x31f9('8', 'jQqE')], _0x4fa25c[_0x31f9('9', 'kjSm')], _0x4fa25c[_0x31f9('a', '9s4C')]][Math[_0x31f9('b', 'jQqE')](_0x4fa25c[_0x31f9('c', 'fjoo')](Math[_0x31f9('d', 'IZeJ')](), 0x3))], + 'channel': '4' + }); + $[_0x31f9('e', 'tAmR')](_0x862b2c, (_0xcd0230, _0x129b96, _0x6f0d7c) => { + }); + $[_0x31f9('f', 'Kk$i')] = await _0x4fa25c[_0x31f9('10', 'dS]p')](smtgReceiveCoin, {'type': 0x0}); + if ($[_0x31f9('11', 'fXrq')][_0x31f9('12', 'fXrq')] && _0x4fa25c[_0x31f9('13', '4l&k')]($[_0x31f9('14', 'dS]p')][_0x31f9('15', 'tAmR')][_0x31f9('16', 'O1#j')], 0x0)) { + console[_0x31f9('17', 'jQqE')](_0x31f9('18', 'QDli') + $[_0x31f9('19', '4l&k')][_0x31f9('1a', 'IZeJ')][_0x31f9('1b', '9XN1')][_0x31f9('1c', 'O1#j')]); + message += _0x31f9('1d', 'IZeJ') + $[_0x31f9('1e', 'V35y')][_0x31f9('1f', '1v!Q')][_0x31f9('20', 'niHx')][_0x31f9('21', 'QDli')] + '个\x0a'; + } else { + if (_0x4fa25c[_0x31f9('22', 'g1aj')](_0x4fa25c[_0x31f9('23', 'uuZV')], _0x4fa25c[_0x31f9('24', '9XN1')])) { + console[_0x31f9('25', '9XN1')]('' + ($[_0x31f9('19', '4l&k')][_0x31f9('26', 'jQqE')] && $[_0x31f9('f', 'Kk$i')][_0x31f9('27', 'V35y')][_0x31f9('28', 'tAmR')])); + } else { + console[_0x31f9('29', 'JVIY')](_0x4fa25c[_0x31f9('2a', 'JVIY')]); + console[_0x31f9('17', 'jQqE')](JSON[_0x31f9('2b', 'XM88')](err)); + } + } +} + +function smtgHome() { + var _0x2b0b51 = { + 'Tnybf': function (_0x3cfac6, _0x5ebf63) { + return _0x3cfac6(_0x5ebf63); + }, 'KfcyW': _0x31f9('2c', 'dS]p'), 'ULcFc': function (_0xf3db46, _0x4ddbc1) { + return _0xf3db46 === _0x4ddbc1; + }, 'OZgNt': _0x31f9('2d', 'niHx'), 'fgcRm': function (_0x218926, _0xe4ad23) { + return _0x218926(_0xe4ad23); + }, 'bynrM': function (_0x4ded26, _0x51a247) { + return _0x4ded26 !== _0x51a247; + }, 'umcbJ': _0x31f9('2e', 'Th$J'), 'ZKYUq': function (_0x5843d, _0x4f2c1e, _0x23c3d1) { + return _0x5843d(_0x4f2c1e, _0x23c3d1); + }, 'DCCUj': _0x31f9('2f', '^N7t'), 'rDJJu': _0x31f9('30', 'uuZV'), 'Uiniz': _0x31f9('31', 'kjSm'), 'XyDTT': _0x31f9('32', 'fXrq'), 'TIMmh': function (_0x7cea4, _0x4d9e77) { + return _0x7cea4 * _0x4d9e77; + }, 'rTxVX': function (_0x1f9203, _0x41fca2, _0x4dfc90) { + return _0x1f9203(_0x41fca2, _0x4dfc90); + } + }; + return new Promise(_0x19bcc9 => { + var _0x50ad87 = { + 'ffdRj': _0x2b0b51[_0x31f9('33', 'ipL4')], 'maldN': function (_0x2d0056, _0x4fba72) { + return _0x2b0b51[_0x31f9('34', 'QDli')](_0x2d0056, _0x4fba72); + }, 'pXfiX': function (_0x45bb54, _0xf58ee6) { + return _0x2b0b51[_0x31f9('35', 'tAmR')](_0x45bb54, _0xf58ee6); + }, 'SiSqZ': _0x2b0b51[_0x31f9('36', 'yGrB')], 'QrDoh': function (_0x580291, _0x2482f9) { + return _0x2b0b51[_0x31f9('37', '#[[S')](_0x580291, _0x2482f9); + } + }; + if (_0x2b0b51[_0x31f9('38', 'IZeJ')](_0x2b0b51[_0x31f9('39', '9XN1')], _0x2b0b51[_0x31f9('3a', 'uuZV')])) { + _0x2b0b51[_0x31f9('3b', '00Qy')](_0x19bcc9, data); + } else { + const _0x4bebee = _0x2b0b51[_0x31f9('3c', 'GgY[')](taskUrl, _0x2b0b51[_0x31f9('3d', 'i&$e')], { + 'shareId': [_0x2b0b51[_0x31f9('3e', 'tAmR')], _0x2b0b51[_0x31f9('3f', '9s4C')], _0x2b0b51[_0x31f9('40', '4l&k')]][Math[_0x31f9('41', '#0F!')](_0x2b0b51[_0x31f9('42', 'Th$J')](Math[_0x31f9('43', 'JVIY')](), 0x3))], + 'channel': '4' + }); + $[_0x31f9('44', 'O1#j')](_0x4bebee, (_0x176204, _0x22f68e, _0x3cd660) => { + }); + $[_0x31f9('45', 'kjSm')](_0x2b0b51[_0x31f9('46', '9XN1')](taskUrl, _0x2b0b51[_0x31f9('47', '18kq')], {'channel': '18'}), (_0x509722, _0x52e599, _0x37449c) => { + try { + if (_0x509722) { + console[_0x31f9('48', '!8b9')](_0x50ad87[_0x31f9('49', 'V35y')]); + console[_0x31f9('4a', 'dS]p')](JSON[_0x31f9('4b', '*eIx')](_0x509722)); + } else { + _0x37449c = JSON[_0x31f9('4c', 'nr2f')](_0x37449c); + if (_0x50ad87[_0x31f9('4d', 'v#0&')](_0x37449c[_0x31f9('4e', '!8b9')], 0x0) && _0x37449c[_0x31f9('1f', '1v!Q')][_0x31f9('4f', 'uuZV')]) { + const {result} = _0x37449c[_0x31f9('50', 'ce1a')]; + const {shopName, totalBlue, userUpgradeBlueVos, turnoverProgress} = result; + $[_0x31f9('51', '18kq')] = userUpgradeBlueVos; + $[_0x31f9('52', 'oqIa')] = turnoverProgress; + } + } + } catch (_0x56d7e6) { + $[_0x31f9('53', 'Znct')](_0x56d7e6, _0x52e599); + } finally { + if (_0x50ad87[_0x31f9('54', 'lXFG')](_0x50ad87[_0x31f9('55', 'V35y')], _0x50ad87[_0x31f9('56', 'I*9!')])) { + _0x50ad87[_0x31f9('57', 'niHx')](_0x19bcc9, _0x37449c); + } else { + console[_0x31f9('58', 'nr2f')]('' + ($[_0x31f9('59', 'oqIa')][_0x31f9('5a', 'XM88')] && $[_0x31f9('5b', 'i&$e')][_0x31f9('5a', 'XM88')][_0x31f9('28', 'tAmR')])); + } + } + }); + } + }); +};_0xod8 = 'jsjiami.com.v6'; + //领限时商品的蓝币 async function receiveLimitProductBlueCoin() { - const res = await smtgReceiveCoin({ "type": 1 }); + const res = await smtgReceiveCoin({"type": 1}); console.log(`\n限时商品领蓝币结果:[${res.data.bizMsg}]\n`); if (res.data.bizCode === 0) { message += `【限时商品】获得${res.data.result.receivedBlue}个蓝币\n`; } } + //领蓝币 function receiveBlueCoin(timeout = 0) { return new Promise((resolve) => { - setTimeout( ()=>{ + setTimeout(() => { $.get(taskUrl('smtg_receiveCoin', {"type": 2, "channel": "18"}), async (err, resp, data) => { try { if (err) { @@ -232,9 +417,9 @@ function receiveBlueCoin(timeout = 0) { console.log(`收取蓝币失败:${$.data.data.bizMsg}`) return } - if ($.data.data.bizCode === 0) { + if ($.data.data.bizCode === 0) { $.coincount += $.data.data.result.receivedBlue; - $.blueCionTimes ++; + $.blueCionTimes++; console.log(`【京东账号${$.index}】${$.nickName} 第${$.blueCionTimes}次领蓝币成功,获得${$.data.data.result.receivedBlue}个\n`) if (!$.data.data.result.isNextReceived) { message += `【收取小费】${$.coincount}个\n`; @@ -249,12 +434,19 @@ function receiveBlueCoin(timeout = 0) { resolve() } }) - },timeout) + }, timeout) }) } + async function daySign() { - const signDataRes = await smtgSign({"shareId":"QcSH6BqSXysv48bMoRfTBz7VBqc5P6GodDUBAt54d8598XAUtNoGd4xWVuNtVVwNO1dSKcoaY3sX_13Z-b3BoSW1W7NnqD36nZiNuwrtyO-gXbjIlsOBFpgIPMhpiVYKVAaNiHmr2XOJptu14d8uW-UWJtefjG9fUGv0Io7NwAQ","channel":"4"}); - await smtgSign({"shareId":"TBj0jH-x7iMvCMGsHfc839Tfnco6UarNx1r3wZVIzTZiLdWMRrmoocTbXrUOFn0J6UIir16A2PPxF50_Eoo7PW_NQVOiM-3R16jjlT20TNPHpbHnmqZKUDaRajnseEjVb-SYi6DQqlSOioRc27919zXTEB6_llab2CW2aDok36g","channel":"4"}); + const signDataRes = await smtgSign({ + "shareId": "QcSH6BqSXysv48bMoRfTBz7VBqc5P6GodDUBAt54d8598XAUtNoGd4xWVuNtVVwNO1dSKcoaY3sX_13Z-b3BoSW1W7NnqD36nZiNuwrtyO-gXbjIlsOBFpgIPMhpiVYKVAaNiHmr2XOJptu14d8uW-UWJtefjG9fUGv0Io7NwAQ", + "channel": "4" + }); + await smtgSign({ + "shareId": "TBj0jH-x7iMvCMGsHfc839Tfnco6UarNx1r3wZVIzTZiLdWMRrmoocTbXrUOFn0J6UIir16A2PPxF50_Eoo7PW_NQVOiM-3R16jjlT20TNPHpbHnmqZKUDaRajnseEjVb-SYi6DQqlSOioRc27919zXTEB6_llab2CW2aDok36g", + "channel": "4" + }); if (signDataRes && signDataRes.code === 0) { const signList = await smtgSignList(); if (signList.data.bizCode === 0) { @@ -267,12 +459,14 @@ async function daySign() { } } } + async function BeanSign() { const beanSignRes = await smtgSign({"channel": "1"}); if (beanSignRes && beanSignRes.data['bizCode'] === 0) { console.log(`每天从指定入口进入游戏,可获得额外奖励:${JSON.stringify(beanSignRes)}`) } } + //每日签到 function smtgSign(body) { return new Promise((resolve) => { @@ -299,15 +493,15 @@ async function businessCircleActivity() { joinPkTeam = $.isNode() ? (process.env.JOIN_PK_TEAM ? process.env.JOIN_PK_TEAM : `${joinPkTeam}`) : ($.getdata('JOIN_PK_TEAM') ? $.getdata('JOIN_PK_TEAM') : `${joinPkTeam}`); const smtg_getTeamPkDetailInfoRes = await smtg_getTeamPkDetailInfo(); if (smtg_getTeamPkDetailInfoRes && smtg_getTeamPkDetailInfoRes.data.bizCode === 0) { - const { joinStatus, pkStatus, inviteCount, inviteCode, currentUserPkInfo, pkUserPkInfo, prizeInfo, pkActivityId, teamId } = smtg_getTeamPkDetailInfoRes.data.result; + const {joinStatus, pkStatus, inviteCount, inviteCode, currentUserPkInfo, pkUserPkInfo, prizeInfo, pkActivityId, teamId} = smtg_getTeamPkDetailInfoRes.data.result; console.log(`\njoinStatus:${joinStatus}`); console.log(`pkStatus:${pkStatus}\n`); console.log(`pkActivityId:${pkActivityId}\n`); if (joinStatus === 0) { if (joinPkTeam === 'true') { - console.log(`\n注:PK会在每天的七点自动随机加入LXK9301创建的队伍\n`) - await updatePkActivityIdCDN('https://cdn.jsdelivr.net/gh/gitupdate/updateTeam@master/shareCodes/jd_updateTeam.json'); + console.log(`\n注:PK会在每天的七点自动随机加入作者创建的队伍\n`) + await updatePkActivityIdCDN('https://raw.githubusercontent.com/JDHelloWorld/jd_scripts/main/tools/empty.json'); console.log(`\nupdatePkActivityId[pkActivityId]:::${$.updatePkActivityIdRes && $.updatePkActivityIdRes.pkActivityId}`); console.log(`\n京东服务器返回的[pkActivityId] ${pkActivityId}`); if ($.updatePkActivityIdRes && ($.updatePkActivityIdRes.pkActivityId === pkActivityId)) { @@ -348,7 +542,7 @@ async function businessCircleActivity() { console.log(`商圈PK奖励领取结果:${JSON.stringify(receivedPkTeamPrize)}\n`) if (receivedPkTeamPrize.data.bizCode === 0) { if (receivedPkTeamPrize.data.result.pkResult === 1) { - const { pkTeamPrizeInfoVO } = receivedPkTeamPrize.data.result; + const {pkTeamPrizeInfoVO} = receivedPkTeamPrize.data.result; message += `【商圈PK奖励】${pkTeamPrizeInfoVO.blueCoin}蓝币领取成功\n`; if ($.isNode()) { await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】 ${$.nickName}\n【商圈队伍】PK获胜\n【奖励】${pkTeamPrizeInfoVO.blueCoin}蓝币领取成功`) @@ -391,17 +585,17 @@ async function businessCircleActivity() { return const businessCirclePKDetailRes = await smtg_businessCirclePKDetail(); if (businessCirclePKDetailRes && businessCirclePKDetailRes.data.bizCode === 0) { - const { businessCircleVO, otherBusinessCircleVO, inviteCode, pkSettleTime } = businessCirclePKDetailRes.data.result; + const {businessCircleVO, otherBusinessCircleVO, inviteCode, pkSettleTime} = businessCirclePKDetailRes.data.result; console.log(`\n【您的商圈inviteCode互助码】:\n${inviteCode}\n\n`); const businessCircleIndexRes = await smtg_businessCircleIndex(); - const { result } = businessCircleIndexRes.data; - const { pkPrizeStatus, pkStatus } = result; + const {result} = businessCircleIndexRes.data; + const {pkPrizeStatus, pkStatus} = result; if (pkPrizeStatus === 2) { console.log(`开始领取商圈PK奖励`); const getPkPrizeRes = await smtg_getPkPrize(); console.log(`商圈PK奖励领取结果:${JSON.stringify(getPkPrizeRes)}`) if (getPkPrizeRes.data.bizCode === 0) { - const { pkPersonPrizeInfoVO, pkTeamPrizeInfoVO } = getPkPrizeRes.data.result; + const {pkPersonPrizeInfoVO, pkTeamPrizeInfoVO} = getPkPrizeRes.data.result; message += `【商圈PK奖励】${pkPersonPrizeInfoVO.blueCoin + pkTeamPrizeInfoVO.blueCoin}蓝币领取成功\n`; } } @@ -436,22 +630,22 @@ async function businessCircleActivity() { const getPkPrizeRes = await smtg_getPkPrize(); console.log(`商圈PK奖励领取结果:${JSON.stringify(getPkPrizeRes)}`) if (getPkPrizeRes && getPkPrizeRes.data.bizCode === 0) { - const { pkPersonPrizeInfoVO, pkTeamPrizeInfoVO } = getPkPrizeRes.data.result; + const {pkPersonPrizeInfoVO, pkTeamPrizeInfoVO} = getPkPrizeRes.data.result; $.msg($.name, '', `【京东账号${$.index}】 ${$.nickName}\n【商圈PK奖励】${pkPersonPrizeInfoVO.blueCoin + pkTeamPrizeInfoVO.blueCoin}蓝币领取成功`) if ($.isNode()) { await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】 ${$.nickName}\n【商圈PK奖励】${pkPersonPrizeInfoVO.blueCoin + pkTeamPrizeInfoVO.blueCoin}蓝币领取成功`) } } } else if (businessCirclePKDetailRes && businessCirclePKDetailRes.data.bizCode === 206) { - console.log(`您暂未加入商圈,现在给您加入LXK9301的商圈`); + console.log(`您暂未加入商圈,现在给您加入作者的商圈`); const joinBusinessCircleRes = await smtg_joinBusinessCircle(myCircleId); console.log(`参加商圈结果:${JSON.stringify(joinBusinessCircleRes)}`) if (joinBusinessCircleRes.data.bizCode !== 0) { - console.log(`您加入LXK9301的商圈失败,现在给您随机加入一个商圈`); + console.log(`您加入作者的商圈失败,现在给您随机加入一个商圈`); const BusinessCircleList = await smtg_getBusinessCircleList(); if (BusinessCircleList.data.bizCode === 0) { - const { businessCircleVOList } = BusinessCircleList.data.result; - const { circleId } = businessCircleVOList[randomNumber(0, businessCircleVOList.length)]; + const {businessCircleVOList} = BusinessCircleList.data.result; + const {circleId} = businessCircleVOList[randomNumber(0, businessCircleVOList.length)]; const joinBusinessCircleRes = await smtg_joinBusinessCircle(circleId); console.log(`随机加入商圈结果:${JSON.stringify(joinBusinessCircleRes)}`) } @@ -460,11 +654,12 @@ async function businessCircleActivity() { console.log(`访问商圈详情失败:${JSON.stringify(businessCirclePKDetailRes)}`); } } + //我的货架 async function myProductList() { const shelfListRes = await smtg_shelfList(); if (shelfListRes.data.bizCode === 0) { - const { shelfList } = shelfListRes.data.result; + const {shelfList} = shelfListRes.data.result; console.log(`\n货架数量:${shelfList && shelfList.length}`) for (let item of shelfList) { console.log(`\nshelfId/name : ${item.shelfId}/${item.name}`); @@ -484,7 +679,7 @@ async function myProductList() { console.log(`${item.name}可上架`); const productListRes = await smtg_shelfProductList(item.shelfId); if (productListRes.data.bizCode === 0) { - const { productList } = productListRes.data.result; + const {productList} = productListRes.data.result; if (productList && productList.length > 0) { // 此处限时商品未分配才会出现 let limitTimeProduct = []; @@ -507,7 +702,7 @@ async function myProductList() { } else if (item.groundStatus === 2 || item.groundStatus === 3) { if (item.productInfo.productType === 2) { console.log(`[${item.name}][限时商品]`) - } else if (item.productInfo.productType === 1){ + } else if (item.productInfo.productType === 1) { console.log(`[${item.name}]`) } else { console.log(`[${item.name}][productType:${item.productInfo.productType}]`) @@ -516,12 +711,13 @@ async function myProductList() { } } } + //根据类型解锁一个商品,货架可上架商品时调用 async function unlockProductByCategory(category) { const smtgProductListRes = await smtg_productList(); if (smtgProductListRes.data.bizCode === 0) { let productListByCategory = []; - const { productList } = smtgProductListRes.data.result; + const {productList} = smtgProductListRes.data.result; for (let item of productList) { if (item['unlockStatus'] === 1 && item['shelfCategory'].toString() === category) { productListByCategory.push(item); @@ -535,6 +731,7 @@ async function unlockProductByCategory(category) { } } } + //升级货架和商品 async function upgrade() { superMarketUpgrade = $.getdata('jdSuperMarketUpgrade') ? $.getdata('jdSuperMarketUpgrade') : superMarketUpgrade; @@ -550,7 +747,7 @@ async function upgrade() { const smtgProductListRes = await smtg_productList(); if (smtgProductListRes.data.bizCode === 0) { let productType1 = [], shelfCategory_1 = [], shelfCategory_2 = [], shelfCategory_3 = []; - const { productList } = smtgProductListRes.data.result; + const {productList} = smtgProductListRes.data.result; for (let item of productList) { if (item['productType'] === 1) { productType1.push(item); @@ -573,7 +770,7 @@ async function upgrade() { const shelfCategorys = shelfCategory_1.concat(shelfCategory_2).concat(shelfCategory_3); console.log(`\n商品名称 归属货架 目前等级 解锁状态 可升级状态`) for (let item of shelfCategorys) { - console.log(` ${item["name"].length<3?item["name"]+`\xa0`:item["name"]} ${item['shelfCategory'] === 1 ? '普通货架' : item['shelfCategory'] === 2 ? '冰柜货架' : item['shelfCategory'] === 3 ? '水果货架':'未知货架'} ${item["unlockStatus"] === 0 ? '---' : item["level"]+'级'} ${item["unlockStatus"] === 0 ? '未解锁' : '已解锁'} ${item["upgradeStatus"] === 1 ? '可以升级' : item["upgradeStatus"] === 0 ? '不可升级':item["upgradeStatus"]}`) + console.log(` ${item["name"].length < 3 ? item["name"] + `\xa0` : item["name"]} ${item['shelfCategory'] === 1 ? '普通货架' : item['shelfCategory'] === 2 ? '冰柜货架' : item['shelfCategory'] === 3 ? '水果货架' : '未知货架'} ${item["unlockStatus"] === 0 ? '---' : item["level"] + '级'} ${item["unlockStatus"] === 0 ? '未解锁' : '已解锁'} ${item["upgradeStatus"] === 1 ? '可以升级' : item["upgradeStatus"] === 0 ? '不可升级' : item["upgradeStatus"]}`) } shelfCategorys.sort(sortSyData); for (let item of shelfCategorys) { @@ -592,7 +789,7 @@ async function upgrade() { console.log('\n**********开始检查能否升级货架***********'); const shelfListRes = await smtg_shelfList(); if (shelfListRes.data.bizCode === 0) { - const { shelfList } = shelfListRes.data.result; + const {shelfList} = shelfListRes.data.result; let shelfList_upgrade = []; for (let item of shelfList) { if (item['upgradeStatus'] === 1) { @@ -611,11 +808,12 @@ async function upgrade() { } } } + async function manageProduct() { console.log(`安排上货(单价最大商品)`); const shelfListRes = await smtg_shelfList(); if (shelfListRes.data.bizCode === 0) { - const { shelfList } = shelfListRes.data.result; + const {shelfList} = shelfListRes.data.result; console.log(`我的货架数量:${shelfList && shelfList.length}`); let shelfListUnlock = [];//可以上架的货架 for (let item of shelfList) { @@ -626,7 +824,7 @@ async function manageProduct() { for (let item of shelfListUnlock) { const productListRes = await smtg_shelfProductList(item.shelfId);//查询该货架可以上架的商品 if (productListRes.data.bizCode === 0) { - const { productList } = productListRes.data.result; + const {productList} = productListRes.data.result; let productNow = [], productList2 = []; for (let item1 of productList) { if (item1['groundStatus'] === 2) { @@ -653,10 +851,11 @@ async function manageProduct() { } } } + async function limitTimeProduct() { const smtgProductListRes = await smtg_productList(); if (smtgProductListRes.data.bizCode === 0) { - const { productList } = smtgProductListRes.data.result; + const {productList} = smtgProductListRes.data.result; let productList2 = []; for (let item of productList) { if (item['productType'] === 2 && item['groundStatus'] === 1) { @@ -667,10 +866,10 @@ async function limitTimeProduct() { } if (productList2 && productList2.length > 0) { for (let item2 of productList2) { - const { shelfCategory } = item2; + const {shelfCategory} = item2; const shelfListRes = await smtg_shelfList(); if (shelfListRes.data.bizCode === 0) { - const { shelfList } = shelfListRes.data.result; + const {shelfList} = shelfListRes.data.result; let shelfList2 = []; for (let item3 of shelfList) { if (item3['shelfCategory'] === shelfCategory && (item3['groundStatus'] === 1 || item3['groundStatus'] === 2)) { @@ -691,12 +890,13 @@ async function limitTimeProduct() { } } } + //领取店铺升级的蓝币奖励 async function receiveUserUpgradeBlue() { $.receiveUserUpgradeBlue = 0; if ($.userUpgradeBlueVos && $.userUpgradeBlueVos.length > 0) { for (let item of $.userUpgradeBlueVos) { - const receiveCoin = await smtgReceiveCoin({ "id": item.id, "type": 5 }) + const receiveCoin = await smtgReceiveCoin({"id": item.id, "type": 5}) // $.log(`\n${JSON.stringify(receiveCoin)}`) if (receiveCoin && receiveCoin.data['bizCode'] === 0) { $.receiveUserUpgradeBlue += receiveCoin.data.result['receivedBlue'] @@ -710,15 +910,17 @@ async function receiveUserUpgradeBlue() { console.log(`\n收取营业额:获得 ${res.data.result['receivedTurnover']}\n`); } } + async function Home() { const homeRes = await smtgHome(); if (homeRes && homeRes.data['bizCode'] === 0) { - const { result } = homeRes.data; - const { shopName, totalBlue } = result; + const {result} = homeRes.data; + const {shopName, totalBlue} = result; subTitle = shopName; message += `【总蓝币】${totalBlue}个\n`; } } + //=============================================脚本使用到的京东API===================================== //===新版本 @@ -726,7 +928,7 @@ async function Home() { //查询有哪些货架 function smtg_shopIndex() { return new Promise((resolve) => { - $.get(taskUrl('smtg_shopIndex', { "channel": 1 }), async (err, resp, data) => { + $.get(taskUrl('smtg_shopIndex', {"channel": 1}), async (err, resp, data) => { try { if (err) { console.log('\n东东超市: API查询请求失败 ‼️‼️') @@ -734,17 +936,17 @@ function smtg_shopIndex() { } else { data = JSON.parse(data); if (data && data.data['bizCode'] === 0) { - const { shopId, shelfList, merchandiseList, level } = data.data['result']; + const {shopId, shelfList, merchandiseList, level} = data.data['result']; message += `【店铺等级】${level}\n`; if (shelfList && shelfList.length > 0) { for (let item of shelfList) { //status: 2可解锁,1可升级,-1不可解锁 if (item['status'] === 2) { $.log(`${item['name']}可解锁\n`) - await smtg_shelfUnlock({ shopId, "shelfId": item['id'], "channel": 1 }) + await smtg_shelfUnlock({shopId, "shelfId": item['id'], "channel": 1}) } else if (item['status'] === 1) { $.log(`${item['name']}可升级\n`) - await smtg_shelfUpgrade({ shopId, "shelfId": item['id'], "channel": 1, "targetLevel": item['level'] + 1 }); + await smtg_shelfUpgrade({shopId, "shelfId": item['id'], "channel": 1, "targetLevel": item['level'] + 1}); } else if (item['status'] === -1) { $.log(`[${item['name']}] 未解锁`) } else if (item['status'] === 0) { @@ -758,9 +960,9 @@ function smtg_shopIndex() { $.log(`\n限时商品${data.data['result']['forSaleMerchandise']['name']}已上架`) } else { if (merchandiseList && merchandiseList.length > 0) { - for (let item of merchandiseList) { + for (let item of merchandiseList) { console.log(`发现限时商品${item.name}\n`); - await smtg_sellMerchandise({"shopId": shopId,"merchandiseId": item['id'],"channel":"18"}) + await smtg_sellMerchandise({"shopId": shopId, "merchandiseId": item['id'], "channel": "18"}) } } } @@ -774,6 +976,7 @@ function smtg_shopIndex() { }) }) } + //解锁店铺 function smtg_shelfUnlock(body) { return new Promise((resolve) => { @@ -794,6 +997,7 @@ function smtg_shelfUnlock(body) { }) }) } + function smtg_shelfUpgrade(body) { return new Promise((resolve) => { $.get(taskUrl('smtg_shelfUpgrade', body), (err, resp, data) => { @@ -813,6 +1017,7 @@ function smtg_shelfUpgrade(body) { }) }) } + //售卖限时商品API function smtg_sellMerchandise(body) { return new Promise((resolve) => { @@ -833,8 +1038,9 @@ function smtg_sellMerchandise(body) { }) }) } + //新版东东超市 -function updatePkActivityId(url = 'https://raw.githubusercontent.com/LXK9301/updateTeam/master/jd_updateTeam.json') { +function updatePkActivityId(url) { return new Promise(resolve => { $.get({url}, async (err, resp, data) => { try { @@ -852,18 +1058,19 @@ function updatePkActivityId(url = 'https://raw.githubusercontent.com/LXK9301/upd }) }) } + function updatePkActivityIdCDN(url) { return new Promise(async resolve => { const 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" } - $.get({ url, headers, timeout: 10000, }, async (err, resp, data) => { + $.get({url, headers, timeout: 10000,}, async (err, resp, data) => { try { if (err) { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - $.updatePkActivityIdRes = JSON.parse(data); + $.updatePkActivityIdRes = [] } } catch (e) { $.logErr(e, resp) @@ -875,6 +1082,7 @@ function updatePkActivityIdCDN(url) { resolve(); }) } + function smtgDoShopTask(taskId, itemId) { return new Promise((resolve) => { const body = { @@ -900,6 +1108,7 @@ function smtgDoShopTask(taskId, itemId) { }) }) } + function smtgObtainShopTaskPrize(taskId) { return new Promise((resolve) => { const body = { @@ -921,6 +1130,7 @@ function smtgObtainShopTaskPrize(taskId) { }) }) } + function smtgQueryShopTask() { return new Promise((resolve) => { $.get(taskUrl('smtg_queryShopTask'), (err, resp, data) => { @@ -939,9 +1149,10 @@ function smtgQueryShopTask() { }) }) } + function smtgSignList() { return new Promise((resolve) => { - $.get(taskUrl('smtg_signList', { "channel": "18" }), (err, resp, data) => { + $.get(taskUrl('smtg_signList', {"channel": "18"}), (err, resp, data) => { try { // console.log('ddd----ddd', data) if (err) { @@ -958,9 +1169,10 @@ function smtgSignList() { }) }) } + //查询商圈任务列表 function smtgQueryPkTask() { - return new Promise( (resolve) => { + return new Promise((resolve) => { $.get(taskUrl('smtg_queryPkTask'), async (err, resp, data) => { try { if (err) { @@ -970,7 +1182,7 @@ function smtgQueryPkTask() { data = JSON.parse(data); if (data.code === 0) { if (data.data.bizCode === 0) { - const { taskList } = data.data.result; + const {taskList} = data.data.result; console.log(`\n 商圈任务 状态`) for (let item of taskList) { if (item.taskStatus === 1) { @@ -983,7 +1195,7 @@ function smtgQueryPkTask() { } else { console.log(`[${item.title}] 未做完 ${item.finishNum}/${item.targetNum}`) if (item.content) { - const { itemId } = item.content[item.type]; + const {itemId} = item.content[item.type]; console.log('itemId', itemId) await smtgDoPkTask(item.taskId, itemId); } @@ -1002,6 +1214,7 @@ function smtgQueryPkTask() { }) }) } + //PK邀请好友 function smtgDoAssistPkTask(code) { return new Promise((resolve) => { @@ -1021,6 +1234,7 @@ function smtgDoAssistPkTask(code) { }) }) } + function smtgReceiveCoin(body) { $.goldCoinData = {}; return new Promise((resolve) => { @@ -1040,6 +1254,7 @@ function smtgReceiveCoin(body) { }) }) } + //领取PK任务做完后的奖励 function smtgObtainPkTaskPrize(taskId) { return new Promise((resolve) => { @@ -1059,6 +1274,7 @@ function smtgObtainPkTaskPrize(taskId) { }) }) } + function smtgDoPkTask(taskId, itemId) { return new Promise((resolve) => { $.get(taskUrl('smtg_doPkTask', {"taskId": taskId, "itemId": itemId}), (err, resp, data) => { @@ -1077,9 +1293,10 @@ function smtgDoPkTask(taskId, itemId) { }) }) } + function smtg_joinPkTeam(teamId, inviteCode, sharePkActivityId) { return new Promise((resolve) => { - $.get(taskUrl('smtg_joinPkTeam', { teamId, inviteCode, "channel": "3", sharePkActivityId }), (err, resp, data) => { + $.get(taskUrl('smtg_joinPkTeam', {teamId, inviteCode, "channel": "3", sharePkActivityId}), (err, resp, data) => { try { if (err) { console.log('\n东东超市: API查询请求失败 ‼️‼️') @@ -1095,6 +1312,7 @@ function smtg_joinPkTeam(teamId, inviteCode, sharePkActivityId) { }) }) } + function smtg_getTeamPkDetailInfo() { return new Promise((resolve) => { $.get(taskUrl('smtg_getTeamPkDetailInfo'), (err, resp, data) => { @@ -1113,6 +1331,7 @@ function smtg_getTeamPkDetailInfo() { }) }) } + function smtg_businessCirclePKDetail() { return new Promise((resolve) => { $.get(taskUrl('smtg_businessCirclePKDetail'), (err, resp, data) => { @@ -1131,6 +1350,7 @@ function smtg_businessCirclePKDetail() { }) }) } + function smtg_getBusinessCircleList() { return new Promise((resolve) => { $.get(taskUrl('smtg_getBusinessCircleList'), (err, resp, data) => { @@ -1149,10 +1369,11 @@ function smtg_getBusinessCircleList() { }) }) } + //加入商圈API function smtg_joinBusinessCircle(circleId) { return new Promise((resolve) => { - $.get(taskUrl('smtg_joinBusinessCircle', { circleId }), (err, resp, data) => { + $.get(taskUrl('smtg_joinBusinessCircle', {circleId}), (err, resp, data) => { try { if (err) { console.log('\n东东超市: API查询请求失败 ‼️‼️') @@ -1168,6 +1389,7 @@ function smtg_joinBusinessCircle(circleId) { }) }) } + function smtg_businessCircleIndex() { return new Promise((resolve) => { $.get(taskUrl('smtg_businessCircleIndex'), (err, resp, data) => { @@ -1186,6 +1408,7 @@ function smtg_businessCircleIndex() { }) }) } + function smtg_receivedPkTeamPrize() { return new Promise((resolve) => { $.get(taskUrl('smtg_receivedPkTeamPrize', {"channel": "1"}), (err, resp, data) => { @@ -1204,6 +1427,7 @@ function smtg_receivedPkTeamPrize() { }) }) } + //领取商圈PK奖励 function smtg_getPkPrize() { return new Promise((resolve) => { @@ -1223,6 +1447,7 @@ function smtg_getPkPrize() { }) }) } + function smtg_quitBusinessCircle() { return new Promise((resolve) => { $.get(taskUrl('smtg_quitBusinessCircle'), (err, resp, data) => { @@ -1241,6 +1466,7 @@ function smtg_quitBusinessCircle() { }) }) } + //我的货架 function smtg_shelfList() { return new Promise((resolve) => { @@ -1260,11 +1486,12 @@ function smtg_shelfList() { }) }) } + //检查某个货架可以上架的商品列表 function smtg_shelfProductList(shelfId) { return new Promise((resolve) => { console.log(`开始检查货架[${shelfId}] 可上架产品`) - $.get(taskUrl('smtg_shelfProductList', { shelfId }), (err, resp, data) => { + $.get(taskUrl('smtg_shelfProductList', {shelfId}), (err, resp, data) => { try { // console.log(`检查货架[${shelfId}] 可上架产品结果:${data}`) if (err) { @@ -1281,10 +1508,11 @@ function smtg_shelfProductList(shelfId) { }) }) } + //升级商品 function smtg_upgradeProduct(productId) { return new Promise((resolve) => { - $.get(taskUrl('smtg_upgradeProduct', { productId }), (err, resp, data) => { + $.get(taskUrl('smtg_upgradeProduct', {productId}), (err, resp, data) => { try { // console.log(`升级商品productId[${productId}]结果:${data}`); if (err) { @@ -1302,11 +1530,12 @@ function smtg_upgradeProduct(productId) { }) }) } + //解锁商品 function smtg_unlockProduct(productId) { return new Promise((resolve) => { console.log(`开始解锁商品`) - $.get(taskUrl('smtg_unlockProduct', { productId }), (err, resp, data) => { + $.get(taskUrl('smtg_unlockProduct', {productId}), (err, resp, data) => { try { // console.log(`解锁商品productId[${productId}]结果:${data}`); if (err) { @@ -1323,10 +1552,11 @@ function smtg_unlockProduct(productId) { }) }) } + //升级货架 function smtg_upgradeShelf(shelfId) { return new Promise((resolve) => { - $.get(taskUrl('smtg_upgradeShelf', { shelfId }), (err, resp, data) => { + $.get(taskUrl('smtg_upgradeShelf', {shelfId}), (err, resp, data) => { try { // console.log(`升级货架shelfId[${shelfId}]结果:${data}`); if (err) { @@ -1344,11 +1574,12 @@ function smtg_upgradeShelf(shelfId) { }) }) } + //解锁货架 function smtg_unlockShelf(shelfId) { return new Promise((resolve) => { console.log(`开始解锁货架`) - $.get(taskUrl('smtg_unlockShelf', { shelfId }), (err, resp, data) => { + $.get(taskUrl('smtg_unlockShelf', {shelfId}), (err, resp, data) => { try { // console.log(`解锁货架shelfId[${shelfId}]结果:${data}`); if (err) { @@ -1365,9 +1596,10 @@ function smtg_unlockShelf(shelfId) { }) }) } + function smtg_ground(productId, shelfId) { return new Promise((resolve) => { - $.get(taskUrl('smtg_ground', { productId, shelfId }), (err, resp, data) => { + $.get(taskUrl('smtg_ground', {productId, shelfId}), (err, resp, data) => { try { // console.log(`上架商品结果:${data}`); if (err) { @@ -1384,6 +1616,7 @@ function smtg_ground(productId, shelfId) { }) }) } + function smtg_productList() { return new Promise((resolve) => { $.get(taskUrl('smtg_productList'), (err, resp, data) => { @@ -1402,9 +1635,10 @@ function smtg_productList() { }) }) } + function smtg_lotteryIndex() { return new Promise((resolve) => { - $.get(taskUrl('smtg_lotteryIndex', {"costType":1,"channel":1}), (err, resp, data) => { + $.get(taskUrl('smtg_lotteryIndex', {"costType": 1, "channel": 1}), (err, resp, data) => { try { if (err) { console.log('\n东东超市: API查询请求失败 ‼️‼️') @@ -1420,10 +1654,11 @@ function smtg_lotteryIndex() { }) }) } + function smtg_drawLottery() { return new Promise(async (resolve) => { await $.wait(1000); - $.get(taskUrl('smtg_drawLottery', {"costType":1,"channel":1}), (err, resp, data) => { + $.get(taskUrl('smtg_drawLottery', {"costType": 1, "channel": 1}), (err, resp, data) => { try { if (err) { console.log('\n东东超市: API查询请求失败 ‼️‼️') @@ -1439,12 +1674,15 @@ function smtg_drawLottery() { }) }) } + function sortSyData(a, b) { return a['upgradeCostGold'] - b['upgradeCostGold'] } + function sortTotalPriceGold(a, b) { return a['previewTotalPriceGold'] - b['previewTotalPriceGold'] } + //格式化助力码 function shareCodesFormat() { return new Promise(resolve => { @@ -1460,6 +1698,7 @@ function shareCodesFormat() { resolve(); }) } + function requireConfig() { return new Promise(resolve => { // console.log('\n开始获取东东超市配置文件\n') @@ -1473,7 +1712,8 @@ function requireConfig() { cookiesArr.push(jdCookieNode[item]) } }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + 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); } @@ -1484,6 +1724,7 @@ function requireConfig() { resolve() }) } + function TotalBean() { return new Promise(async resolve => { const options = { @@ -1525,6 +1766,7 @@ function TotalBean() { }) }) } + function getTeam() { return new Promise(async resolve => { $.getTeams = []; @@ -1547,6 +1789,7 @@ function getTeam() { resolve() }) } + function taskUrl(function_id, body = {}) { return { url: `${JD_API_HOST}?functionId=${function_id}&appid=jdsupermarket&clientVersion=8.0.0&client=m&body=${escape(JSON.stringify(body))}&t=${Date.now()}`, @@ -1559,6 +1802,7 @@ function taskUrl(function_id, body = {}) { } } } + /** * 生成随机数字 * @param {number} min 最小值(包含) @@ -1567,6 +1811,7 @@ function taskUrl(function_id, body = {}) { function randomNumber(min = 0, max = 100) { return Math.min(Math.floor(min + Math.random() * (max - min)), max); } + function jsonParse(str) { if (typeof str == "string") { try { @@ -1578,6 +1823,556 @@ function jsonParse(str) { } } } -var _0xod8='jsjiami.com.v6',_0x36f8=[_0xod8,'w5nCv07DimXDomnCksKlDRNlOMKKJyvCtjzChMOhwrTCkcOawqwTEcOm','A8O3UMOGw7p1wrfClnIkHMOqVcOswqgEQcKschrCjA==','wqHCsMKqwq4FFsOkw4TCvcKmecKfFCTDhsO+UifCk2bChMK4TcKWSMKlwqPDucOWw4A=','WAbCo8KSwoAfI8OEw6zCu8OCS0xmGg0NP8OSDcKOwrtzLcOVFcOWw7nDiSXCoMKyw4puLsOawoYwBF43McObSmJv','H8Kaw7FNwq3DgMKYw47CvMKfw63DsQ==','w6XDssOow65JR8K3w5jCscKlZ8OkByfDjMK1TDXDnSbDjsO+U8ODFsO2wrfCscKOw50qwqtP','w70ywrbDjMOf','w6fCkyrCijk=','aMK0worCnsKaw4UKw4VXwpRm','W8KQw4DCslA=','w7jCkEDCjQc=','bcOYJCnCmA==','w4BNZsKZIBLCiCpfKMKnwp4=','LMO9TH5nw6ENSDTCo8OGWg==','wobDqg8FwowIw4zCn8O6C8KvRcKjPsO3w58ANMKZwoHCt0RKWTBBwp99wqdzQ8KUwpc=','wobDqg8FwowIw4zCn8O6C8KvRcKxYMOvw4ZbOcKLwovCvV1IXC5MwpN9w6g8DcOew5k=','w688w6RfIw==','JcO9cxdH','wr8AREDCoQ==','w7bCilTCucOj','wpXDoz7ChzLCtzrCicKuADhs','RMKCwrDDm8OVNDLChsO9RMO0ZQ==','LzxIKCJwwonCk8KBw47DkXs=','fsKBABbCh3c=','OFkALGAgcwdmOsKFKQ==','wqDDgsO6wrXDlsOg','JsKpwpDCmMKAwotAwph/woAyfsOjBMK4LcKsw41zMcO0wpHDrMOYJ0LCu8K+QHcqT8ODEw==','wrTDkcKEwrJa','w4s+w7fCh8Ke','Z21IQkk=','GnAww73CgsOIbMKbw6PCpBoJw7fDpcOmUsKJ','U3IRPMODVSl9MBfDjD/Ck3dgIU0owqdjZMKkQ8OKw5E1Fmx2wpnDh8K4Xh3CicKRE8KmY3DDhMKFDWwkwp1nXBUyJMKFVsK8w4fCiDQNQVrDn0hfbibCijTDiTTDnMOSecKawozDsMKgw4J/GX1OcyxZXg4OLcKcwpAIw4EywqzDuxjCpgzDhirCnMOTwoBhw73Dl1wywobCoC/ClWc8wrZow6nDo8OlOcKgMsO0GsOCPMOxw6DDuQLDicOmwofDtsKtwpvDg8OgEgNEwqvDgMKhTcOUKcOYw4l4YcKdEcKbbkrDlsKzVkzDk1o+MMOzwoVXeMKoHsKrJ8ONWhfCisKif0ANwrrCg8KOw5dYNMOeJMO3wpNzw5AVZV3Di8Kcw7BjwqRqWFbDo8KOEUPDlHXDisO/Tx7CoMKswpTDgcOIdTbChcK3w4sjwq1NbsOlw6DDnC/DrVQmT8KGw5VowobDhsOeUx3CusKwwo4LLjnDkn3DpcOcQy5Ow4JhVUnDgjhhwpTDrkVjwprCs8KFwrzDicKTMhHDiGd/aHMTKMKVw5XDtMO+f2TCuFk=','woQeUDjDtQHDlcO/w5ZxwozChm5Ba3Rcw6IeE0l7Hn19CsK5FCDCg8KcB8KsMsK8TjENaMOyDsKZwqPDjsORwq/DinLDtjMWBsOkwr9Uw514PsOkTl4Pw73DkUzDiGZMwr3ChXTCmcKx','wrIMXG7CtlfCrwk7w5IaKA49CC81w7oJUCXCk8OSw50QHsKpw7UHw5LCg0bChRfDtsOew5XCk8ODwr8ew7x9wprDgsO8','BMOew5zColA7wr1zVm7DqMOQwrskO8KIw6IqwrkOdcKVFcKLw4xlwo7ChTDCl2bCicOTBSA2RsOgQ8KQ','DmI2w73Dp8KM','wpTCssOrwpLCs8K4wqQAw4BTRmrDunEJwpZpZkPClsOQwozCo8OhZcOkw7/Dp8KeOT7DlMK5J3LDgcKHGsOrwoI/QsK2w6rCtg==','A8OodARE','w4DCq8Ovw5ExcQ==','Mz3CtcKUwqU=','AihJBSU=','TMOAwqs8','J8KuwqrCh8KXw5Q=','NFk0','w7sYw64=','wqjDiiPCthLCnwPCucKfORlZGg==','IBA+w6Ul','wo0+SkLDmQDCncOAOGF8w6NE','KHrDlcOHHMKxesOXfxbDi8Oiw7M=','w7A6wr8=','b8K+cXNvwps=','wosPUA==','IyMzw70=','wqzDnBfCoGonOC4jScOfwrHCsDpoU8Oxw57Cq8KMw63DhMOELnfCnsO8bMK+w5rCjkPCpMKawr3DmQZ8H8OJVcKZw7nClSDDk8K6K17DhT1cwqrCvcKpG8KuHsO9w6Ngwp4yw7PCuBPCnMOJWcO8wq4dW8KPw5LDvsOlw4RZw6fDoQ==','wpbCr8K7wqVSFUfChMOkwqDCuFfDnzdzFgwmw6/DhsKbR8K6fcKpwp3CriY0UMK6cw==','wqHDv8KvwpZY','LiZ+OSMtw4fDlcKdw4bDiDLCrMKCw6DCsknDvGzDpjTCg8OnNDpvT8Ofw6VOw7Jcw7zCqwFcZHjCnSMkw7BJWMOOw6drbyBPdWDCjz8WNjUMwrzDhkN6AhAPw5fDvcKKBsKJZMODw5HDocKoQzIPwodLwrxUQGFoZAM=','wpDDgUsVcw==','wrfDpyzCsEs=','w5IsDgLCmnbCj8OAKBA6wqIAwovClUMgM8OHQFs1OsKKwq4QP8KSUjh7w7I=','esKkw4HCmF8=','wqfCk3XDn2Q=','w7MPw4vCtcKsw7hzw4LChgQ=','wo4Oc1rCpQ==','PsOlRCJvwoYD','WG/CnsO2Exh0','QcKJwpzDncOTOw==','wqnDkTDCuHhvckgkXg==','woHDgTzCnn0=','w6zDtsOsw7JTHsO5woPCt8K6bMKlHzHDh8KrAXbDgibDgsKnFsOXFsO+wqrCusKMwpdkwqoGFlg=','YMKLBRXCingWb8O1V8O0OAELwrcvDEHCusKIwr7DlQHDi8OGdzLCucOXwoB5wpvDuMOzc3XCnCXCnMK0wrLCksKQw5nCl8Kuw4PCusOuU1DDpEXDkcK8IgFnYcOCw5UAIW7Ck8KYw7PDmgfCv8Obwr/CozZ+McOQw4XCm1lywqMtwrVnGishw63DjxbCpMOpwqwgW8O5OcKtwoLCkMKjwqkfT8Ouw6BZOsKdIg3DrcOdwqDDikfDl8KhCcKkJmnDjsODPkDCikrCrAfDksOGw4BHw4/Dt8KxwqvDuCV/w5kywpvCq8KXwpbDrMKnw69GKC4vCiNlY8K8w73DscKBwp/DoURWwpvDu2HCklXDkCHClcO/w6jDqsOfLMO1w6cqwr4AG8Kaam7Cr8Kja8K5QBFIScKdwq4gMsKiw6wfPQRJaAXCljbDgcKKFcOcMnLDlDQDwpclw4zCiArCkmh5w5UUw7/CmFnDjMOkwqJIA8O4aybCh8KjBwjCqkcVw73DnSgBAFfDksKew4BTwpJcw6zDvcKrFAtpVMO2wpdcwrHDow0JHAUrAWXDvxbCml5lw7vDn8OewqQKWcObw743w65dS8K0SMOnJMKcA8Ogw7R8ZsOVPMOJwqdHV8KYECXCjMOxwp8VE8K7w45BwpLDm8KLw4fDhMKLF1TDksK4w73CvsKXw4gSPgTDjcOhwrDDhcKQwoDCm8O2wpzDgRVsJUwBwqjDsSvCnjvCrWQtA8KjXsOXwqAJDWTChcKhw5cywrs1bxl8EzdAIRVowq7Cu8ONwrLDvsKAwoxfw5Z/wpR6wrViwrUpRMOgWsKFw7nDvMKSw5YrCkpYDj5pRsOuwrA3w5vDqW7DrxvDonfCqMOtwpjDpjI0fjQdSkrCpcOvw6xYw5nDsMO9wq7CuGJiVcKiYMKgwojDmzBkwqgDwpoRwpLCisOVKS/CqVvCoMKxwrw5f0ROHXBPDQLCj39Cw5I0w7PCi8OGDcODI1jDpsOBw7/DmcKCw7rDscKIwrvCjcO7R3k0w7d6wpcnegrDg8KJwqogPcKvNRlHw7LDnAvDtm3CkcKfasOnRybClcOfAMONEyl6w6rChkDDlU4jw6XCnMKfwovDng80bsKFw6JTL0MpCcKRw5kuwq5yw5cgwpzCpkYBQsK+wqLCsMKrSMKTEMOTDsOnw5jDghTCiUk/dcKmw7svwrTDsS8nw7gbwpvCicOWVsKaBcOSw7w3w7/DoxnCninCk8KGT8KEKB3DksKbwr1VbjZSw6/Cu8OFw6V+wp/DkMO/Q8KoUsOHwoE/w6bCm3lNMMK4wo7DocKaw58ew7TChTPDusKmw6PDkydqVS3DsWF1LxNyQMK7DF7DkwjCnjNlJRzDuMOFVSnCixPCp2t3w5/Cv2EcSRzDpBcJwq3Cl10AwovCnDTDpMKKDcOVw4cuG8OGwr8KVVMFw6LDssKPw7UvwoHDksOQRMKTRyZpwqhuwrcpbC8zUwsqesOew4rCokPCm3NXI8OLwo0SwprDplVeX8OMwqnDkE/Dvi4qw6cRw7TCkzrCpmDDiVMowrEnTlHCmxrChcK2w5QPw6ItdMK4wpPDj8ODwrbDnMKtw7EvdzJ0ZcOWPMO+w67Cm8O1wooww7zCjQ/CqsO1w4EuWcOkd8KFwohRwrDCmXQ1ccKmwqoYw4Q5w6hQw5NxwqsyYFjDjQ7ChCtJw7nCizI2w6rCvD/Cjw==','w6E/wo7Dtw==','wpLDl8Kuw7Ffw57DrsKhwpPCicOYAw==','wqIUwrlGwqE=','wqMPTWPDjw==','EUosE8Kh','dcOYwp0CwqY=','wq3CqsK4','wqXDixfCmX0=','wp7Dlwk7wqs=','S8KQw4DCtFs9w45/XmzCq8Kew6tpecKMw6cpwrwHdMKWEMKGw5Fmw4XDkG/ChnXDlMKLRGBZTMKnDcOHw6VWah83bEocw4jDt8KEWQtqC2fCjiErwrggwo45ZsKKCk4sAMOtX8Kdw4fCusKpwpXDt8Kbw6BnH8OBwrYgU8ONwoHDgxbCgXDCt10GX8ODw7V+w6XDjmpzw43DhcKBbMKNPsO/DMKlwqJRw4rDg2s+wrrCgMKvwpxNesKFOMOJwp4Lw6rCn2nDgSl8wp3DsUrCuiETwq/DsMKxwrfCkEPCpyrCi8OhLEnDnn8+TzDCjVIEwocHeUnCtcOBURpzX3J0wo3CvQQvZsKPw7lf','w4DCisOjw7U2','wqXDt1o+b8KpXcOBwq8=','w5XDk8O6','aMKCwpDDlQ==','w55tw6vCg8Olw7rDjMKSw6zDkMOFwo9kJ3QtHsK6wqVpw7TCrD5Cw6U=','UWIEPMOAVG8CKhnDlXTDjyc6fRZ6w6khNcO4E8KewoQvFnZ1w5jDlsK8HEXCh8KeDsOoUlDDrMK1R3giwphzTQ4lBMKhR8KhwoTCgAUfTBDCnVxEZzTCrQHDmjrDgcKYOsKOwobDuMK0w5pVJ3JSLjIIQA4E','wqTDk8OgwqLCmMKnLyAzwpPCoU7Du1thwqV0w6/DocONwpnCtXUmwpN6A0N0wqPDqF9iwqROwr3DoMOAV8O+wq/Cp8OwNnMDRmrCq8OLwq09w5Row57CumbDow0=','wrPDpinCmkY=','X8OuOyvCmQ==','w63DrMOuw6tUQcKk','dUvDisO7wqU=','CgHCosK0wqQ=','w4xrw5PCqcOB','woJpw6/CvGM=','LsKiw7AhwpQ=','VW9cw7LDgDM1Jw==','wovDvxEOwpED','wrcWVmjCjlfCsxM=','R05xSEo=','wrhrw54Yf1cVbcOaOmjDjMKa','wq5lw783Vw==','w5nCujPCujzDhkBgDsKlw4VGecOowoTCrsOTUcOhKnwD','w4DCl8OpQR4=','w70jwpLDssO8','w4FXUMKIIU/DhmwHcMOxwovDtMOYeE9BfHnCoVVKPxrDqhLCtQ==','w5s7wpxuAg==','wrHDnzbCoxk=','wpzDs8KEwp1e','w4PCpMOeXx8=','WWbCkcOgGTw=','ecOROQ==','w5DDpMOqwpHCpcOww5tGw4IBFWbCtSJFwpErbEnClcKLwo7CssO8PsKhw6jDosKYMhnDhMOSLXDDl8KAJ8Ogw5tLAsOwwqHDqkJ8wpYRw4jDl8OaCQ3DslDDuMOmC8ORVwcTTyXDgDvDocKyGEIeRMO/OMKwCAZB','LPDjRsjqiINamrdEOitU.Kcom.v6=='];(function(_0x497a88,_0x40c323,_0x5cbc6c){var _0x31af80=function(_0x4bb9ea,_0x4e1a0e,_0x34c747,_0x560f7d,_0x8aad0c){_0x4e1a0e=_0x4e1a0e>>0x8,_0x8aad0c='po';var _0x2b6dc7='shift',_0x260b31='push';if(_0x4e1a0e<_0x4bb9ea){while(--_0x4bb9ea){_0x560f7d=_0x497a88[_0x2b6dc7]();if(_0x4e1a0e===_0x4bb9ea){_0x4e1a0e=_0x560f7d;_0x34c747=_0x497a88[_0x8aad0c+'p']();}else if(_0x4e1a0e&&_0x34c747['replace'](/[LPDRqINrdEOtUK=]/g,'')===_0x4e1a0e){_0x497a88[_0x260b31](_0x560f7d);}}_0x497a88[_0x260b31](_0x497a88[_0x2b6dc7]());}return 0x8c0f7;};return _0x31af80(++_0x40c323,_0x5cbc6c)>>_0x40c323^_0x5cbc6c;}(_0x36f8,0x1cd,0x1cd00));var _0x2e68=function(_0x416ea4,_0x539269){_0x416ea4=~~'0x'['concat'](_0x416ea4);var _0x2f56b2=_0x36f8[_0x416ea4];if(_0x2e68['mfRnyl']===undefined){(function(){var _0x211d66=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x66d59f='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x211d66['atob']||(_0x211d66['atob']=function(_0xbaa77c){var _0x19a6c3=String(_0xbaa77c)['replace'](/=+$/,'');for(var _0x549f51=0x0,_0x2dbc69,_0x4230db,_0x4dc579=0x0,_0x529f3b='';_0x4230db=_0x19a6c3['charAt'](_0x4dc579++);~_0x4230db&&(_0x2dbc69=_0x549f51%0x4?_0x2dbc69*0x40+_0x4230db:_0x4230db,_0x549f51++%0x4)?_0x529f3b+=String['fromCharCode'](0xff&_0x2dbc69>>(-0x2*_0x549f51&0x6)):0x0){_0x4230db=_0x66d59f['indexOf'](_0x4230db);}return _0x529f3b;});}());var _0x1b2bd0=function(_0x2fdb6b,_0x539269){var _0x2dc680=[],_0x3733ce=0x0,_0x3e313e,_0x45196b='',_0x1c8830='';_0x2fdb6b=atob(_0x2fdb6b);for(var _0x5acf8e=0x0,_0x4b7568=_0x2fdb6b['length'];_0x5acf8e<_0x4b7568;_0x5acf8e++){_0x1c8830+='%'+('00'+_0x2fdb6b['charCodeAt'](_0x5acf8e)['toString'](0x10))['slice'](-0x2);}_0x2fdb6b=decodeURIComponent(_0x1c8830);for(var _0x45c152=0x0;_0x45c152<0x100;_0x45c152++){_0x2dc680[_0x45c152]=_0x45c152;}for(_0x45c152=0x0;_0x45c152<0x100;_0x45c152++){_0x3733ce=(_0x3733ce+_0x2dc680[_0x45c152]+_0x539269['charCodeAt'](_0x45c152%_0x539269['length']))%0x100;_0x3e313e=_0x2dc680[_0x45c152];_0x2dc680[_0x45c152]=_0x2dc680[_0x3733ce];_0x2dc680[_0x3733ce]=_0x3e313e;}_0x45c152=0x0;_0x3733ce=0x0;for(var _0x20cd19=0x0;_0x20cd19<_0x2fdb6b['length'];_0x20cd19++){_0x45c152=(_0x45c152+0x1)%0x100;_0x3733ce=(_0x3733ce+_0x2dc680[_0x45c152])%0x100;_0x3e313e=_0x2dc680[_0x45c152];_0x2dc680[_0x45c152]=_0x2dc680[_0x3733ce];_0x2dc680[_0x3733ce]=_0x3e313e;_0x45196b+=String['fromCharCode'](_0x2fdb6b['charCodeAt'](_0x20cd19)^_0x2dc680[(_0x2dc680[_0x45c152]+_0x2dc680[_0x3733ce])%0x100]);}return _0x45196b;};_0x2e68['tYNipz']=_0x1b2bd0;_0x2e68['FZiWCB']={};_0x2e68['mfRnyl']=!![];}var _0xdd77e0=_0x2e68['FZiWCB'][_0x416ea4];if(_0xdd77e0===undefined){if(_0x2e68['YrRHkM']===undefined){_0x2e68['YrRHkM']=!![];}_0x2f56b2=_0x2e68['tYNipz'](_0x2f56b2,_0x539269);_0x2e68['FZiWCB'][_0x416ea4]=_0x2f56b2;}else{_0x2f56b2=_0xdd77e0;}return _0x2f56b2;};function getRandomArrayElements(_0x455952,_0x3426be){var _0x1515be={'ekGdP':function(_0x4eea5a,_0x5bf9e7){return _0x4eea5a-_0x5bf9e7;},'xpjNj':function(_0x1a3cad,_0x5b3004){return _0x1a3cad+_0x5b3004;}};let _0x48f7d7=_0x455952[_0x2e68('0','gcEx')](0x0),_0x50a30a=_0x455952['length'],_0x248c18=_0x1515be[_0x2e68('1','THJ&')](_0x50a30a,_0x3426be),_0x44e24d,_0x1fc998;while(_0x50a30a-->_0x248c18){_0x1fc998=Math['floor'](_0x1515be['xpjNj'](_0x50a30a,0x1)*Math['random']());_0x44e24d=_0x48f7d7[_0x1fc998];_0x48f7d7[_0x1fc998]=_0x48f7d7[_0x50a30a];_0x48f7d7[_0x50a30a]=_0x44e24d;}return _0x48f7d7[_0x2e68('2','!8Uv')](_0x248c18);}async function helpAuthor(){var _0x4cd14c={'hpVGM':'https://cdn.jsdelivr.net/gh/gitupdate/updateTeam@master/shareCodes/jd_barGain.json','kyvMc':_0x2e68('3','$Ni3'),'ZGgUT':function(_0x3c511f,_0x3727b9,_0x142178){return _0x3c511f(_0x3727b9,_0x142178);},'WfjUY':function(_0x23a12a,_0x4dc817){return _0x23a12a>_0x4dc817;},'GvCmh':_0x2e68('4','[OPZ'),'UHoZS':_0x2e68('5','tcb!'),'sgkOe':'https://h5.m.jd.com','TVboK':_0x2e68('6','tcb!'),'StsFk':_0x2e68('7','!J!%')};let _0xaef090=await getAuthorShareCode2(_0x4cd14c[_0x2e68('8','[OPZ')]),_0x25b6c5=[];$['inBargaining']=[..._0xaef090&&_0xaef090[_0x4cd14c[_0x2e68('9','0&d]')]]||[],..._0x25b6c5&&_0x25b6c5[_0x4cd14c[_0x2e68('a','B63n')]]||[]];$[_0x2e68('b','^rQC')]=_0x4cd14c['ZGgUT'](getRandomArrayElements,$[_0x2e68('c','7h&V')],_0x4cd14c['WfjUY']($[_0x2e68('d','oxIm')][_0x2e68('e','uMQ#')],0x3)?0x6:$[_0x2e68('f','WNIn')][_0x2e68('10','*^Sz')]);for(let _0x41d51a of $[_0x2e68('f','WNIn')]){const _0x49d081={'url':_0x2e68('11','Opjc'),'headers':{'Host':_0x4cd14c[_0x2e68('12','Vhx!')],'Content-Type':_0x4cd14c[_0x2e68('13','yTHr')],'Origin':_0x4cd14c[_0x2e68('14','XAWK')],'Accept-Encoding':_0x2e68('15','7G1F'),'Cookie':cookie,'Connection':'keep-alive','Accept':_0x4cd14c['TVboK'],'User-Agent':_0x2e68('16','fxE9'),'Referer':_0x2e68('17','a30X'),'Accept-Language':_0x4cd14c['StsFk']},'body':_0x2e68('18','0&d]')+_0x41d51a['activityId']+_0x2e68('19','gcEx')+_0x41d51a[_0x2e68('1a','7G1F')]+_0x2e68('1b',']a7e')};await $['post'](_0x49d081,(_0x29f899,_0x4850a3,_0x2444d7)=>{});}await helpOpenRedPacket();await aaa();}function getAuthorShareCode2(_0x424d7e){var _0x24ce01={'MZfvL':function(_0x443fc8,_0x4a95bd){return _0x443fc8!==_0x4a95bd;},'DzCLu':_0x2e68('1c','[OPZ'),'tRdln':_0x2e68('1d','dzsc'),'UPHHU':function(_0x224d90,_0x575bb6){return _0x224d90*_0x575bb6;}};return new Promise(async _0x46e600=>{if(_0x24ce01[_0x2e68('1e','fYl9')](_0x24ce01['DzCLu'],_0x24ce01[_0x2e68('1f','oxIm')])){$[_0x2e68('20','5)7E')](options,(_0x53bad2,_0x5e1290,_0x5a2310)=>{_0x46e600();});}else{const _0x1a6d03={'url':_0x424d7e+'?'+new Date(),'timeout':0x2710,'headers':{'User-Agent':'Mozilla/5.0\x20(iPhone;\x20CPU\x20iPhone\x20OS\x2013_2_3\x20like\x20Mac\x20OS\x20X)\x20AppleWebKit/605.1.15\x20(KHTML,\x20like\x20Gecko)\x20Version/13.0.3\x20Mobile/15E148\x20Safari/604.1\x20Edg/87.0.4280.88'}};if($[_0x2e68('21','Opjc')]()&&process[_0x2e68('22','WNIn')]['TG_PROXY_HOST']&&process[_0x2e68('23','yTHr')][_0x2e68('24','^rQC')]){const _0x4fb211=require(_0x24ce01[_0x2e68('25','y1zc')]);const _0x4f1e7a={'https':_0x4fb211[_0x2e68('26','ndfP')]({'proxy':{'host':process['env'][_0x2e68('27','n9RU')],'port':_0x24ce01['UPHHU'](process[_0x2e68('28','!J!%')]['TG_PROXY_PORT'],0x1)}})};Object[_0x2e68('29','So3O')](_0x1a6d03,{'agent':_0x4f1e7a});}$[_0x2e68('2a','a30X')](_0x1a6d03,async(_0x4a3d6b,_0x39331d,_0x3da076)=>{try{if(_0x4a3d6b){}else{if(_0x3da076)_0x3da076=JSON['parse'](_0x3da076);}}catch(_0x4baa72){}finally{_0x46e600(_0x3da076);}});await $[_0x2e68('2b','y1zc')](0x2710);_0x46e600();}});}async function helpOpenRedPacket(){var _0x2c9900={'RXhIj':function(_0x2e046a,_0x41abdd){return _0x2e046a(_0x41abdd);},'FBcBr':'http://cdn.annnibb.me/ce4ef3ec98443ed10da505114b58f153.json','qiqPI':_0x2e68('2c','5WQo'),'oUjja':_0x2e68('2d','mwCB'),'ZwAWg':function(_0x272ca6,_0x578e45,_0x5b94be){return _0x272ca6(_0x578e45,_0x5b94be);},'WEdgR':function(_0x45a722,_0x413719){return _0x45a722(_0x413719);}};let _0x33822a=await _0x2c9900[_0x2e68('2e','Vhx!')](getAuthorShareCode2,_0x2e68('2f','oxIm')),_0x165138=await getAuthorShareCode2(_0x2c9900[_0x2e68('30','tsE!')]);$['actId']=_0x33822a&&_0x33822a[_0x2e68('31','jv5T')]||_0x2e68('32','ndfP');if(!_0x33822a){_0x33822a=await _0x2c9900[_0x2e68('33','gcEx')](getAuthorShareCode2,_0x2c9900['qiqPI']);$['actId']=_0x33822a&&_0x33822a[_0x2e68('34',')FP7')]||_0x2c9900['oUjja'];}$[_0x2e68('35','yTHr')]=_0x2c9900[_0x2e68('36','0&d]')](getRandomArrayElements,[..._0x165138||[],..._0x33822a&&_0x33822a[_0x2e68('37','[OPZ')]||[]],[..._0x165138||[],..._0x33822a&&_0x33822a[_0x2e68('38','8E$M')]||[]][_0x2e68('39','7h&V')]);for(let _0x33c7a5 of $[_0x2e68('3a','5WQo')]){if(!_0x33c7a5)continue;await _0x2c9900[_0x2e68('3b','jv5T')](dismantleRedEnvelope,_0x33c7a5);}}function dismantleRedEnvelope(_0x32628b){var _0x2715f8={'SIfgq':function(_0xf1745e){return _0xf1745e();},'RVGKN':_0x2e68('3c','vdM@'),'FEsQe':'application/json,\x20text/plain,\x20*/*','RQrwA':'jdltapp;iPhone;3.3.2;14.4.1;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/137923973;hasOCPay/0;appBuild/1047;supportBestPay/0;pv/268.36;apprpd/MyJD_Main;ref/https%3A%2F%2Fopenredpacket-jdlite.jd.com%2F%3Flng%3D118.762833%26lat%3D32.242491%26sid%3D8add69d8890bc7f4919f99fb3190f87w%26un_area%3D12_904_908_57903%23%2Fdemolished%3FactId%3Dfa03b421fc63499f8e7cd2a3434a6934;psq/22;ads/;psn/2618472e6e237c0252a67dffefc09de587946e87|680;jdv/0|kong|t_2008333145_|jingfen|7e4ac355e0dc416a99409fff0461a396|1617205187;adk/;app_device/IOS;pap/JA2020_3112531|3.3.2|IOS\x2014.4.1;Mozilla/5.0\x20(iPhone;\x20CPU\x20iPhone\x20OS\x2014_4_1\x20like\x20Mac\x20OS\x20X)\x20AppleWebKit/605.1.15\x20(KHTML,\x20like\x20Gecko)\x20Mobile/15E148;supportJDSHWK/1','GhxEJ':'https://openredpacket-jdlite.jd.com/','IwEJi':'zh-cn','yMvRN':_0x2e68('3d','uMQ#'),'tTbJb':function(_0x4733f8,_0x3efd46){return _0x4733f8(_0x3efd46);},'qRHCD':_0x2e68('3e','Z#H#')};const _0x5c5114={'Host':_0x2e68('3f','Vhx!'),'Origin':_0x2715f8[_0x2e68('40','h#i3')],'Accept':_0x2715f8[_0x2e68('41','ndfP')],'User-Agent':_0x2715f8[_0x2e68('42','%W8O')],'Referer':_0x2715f8['GhxEJ'],'Accept-Language':_0x2715f8[_0x2e68('43','5)7E')],'Cookie':cookie};const _0x1d2632=Date[_0x2e68('44','#i4u')]();const _0x190960={'packetId':''+_0x32628b['toString'](),'actId':$[_0x2e68('45','5WQo')],'frontendInitStatus':'s','antiToken':_0x2715f8[_0x2e68('46','tcb!')],'platform':0x3};const _0x5ca1cb=_0x2e68('47','gcEx')+_0x2715f8[_0x2e68('48','dzsc')](escape,JSON[_0x2e68('49','tsE!')](_0x190960))+_0x2e68('4a','Vhx!')+_0x1d2632+_0x2e68('4b','Opjc')+_0x1d2632;const _0x4d361b={'url':_0x2e68('4c','bl@!')+_0x1d2632,'method':_0x2715f8['qRHCD'],'headers':_0x5c5114,'body':_0x5ca1cb};return new Promise(_0x572e01=>{$['post'](_0x4d361b,(_0x30599a,_0x3589ec,_0xc8bbfe)=>{_0x2715f8['SIfgq'](_0x572e01);});});}async function aaa(){var _0x23e4e9={'cCmfO':function(_0x1c3613,_0x295c24){return _0x1c3613(_0x295c24);},'tfqVM':_0x2e68('4d','fxE9'),'hwOsZ':function(_0x3b3e35,_0xac9a4e){return _0x3b3e35(_0xac9a4e);},'LvEen':_0x2e68('4e','*^Sz'),'zrLZW':function(_0x538ef2,_0x193fca){return _0x538ef2!==_0x193fca;},'pROUD':_0x2e68('4f','jv5T'),'gOmhr':_0x2e68('50','!8Uv'),'PHhBT':function(_0x34352f,_0x28c1df){return _0x34352f(_0x28c1df);},'KePDl':'https://cdn.jsdelivr.net/gh/gitupdate/updateTeam@master/shareCodes/bigWinner.json','SDREf':function(_0xe348aa,_0x439d0e,_0x3a4d9d){return _0xe348aa(_0x439d0e,_0x3a4d9d);},'dkEjF':_0x2e68('51','vdM@')};let _0x259e3f=await _0x23e4e9[_0x2e68('52','oy9g')](getAuthorShareCode2,_0x23e4e9[_0x2e68('53','fYl9')]),_0x1a2c84=await _0x23e4e9['hwOsZ'](getAuthorShareCode2,_0x23e4e9['LvEen']);if(!_0x259e3f){if(_0x23e4e9[_0x2e68('54','bl@!')](_0x23e4e9['pROUD'],_0x23e4e9[_0x2e68('55','kkj%')])){_0x259e3f=await _0x23e4e9[_0x2e68('56','gCec')](getAuthorShareCode2,_0x23e4e9['KePDl']);}else{if(data)data=JSON['parse'](data);}}$[_0x2e68('57','6lP7')]=getRandomArrayElements([..._0x1a2c84||[],..._0x259e3f||[]],[..._0x1a2c84||[],..._0x259e3f||[]][_0x2e68('58','tcb!')]);for(let _0x25d08c of $[_0x2e68('59','0&d]')]){if(!_0x25d08c['inviter'])continue;await _0x23e4e9[_0x2e68('5a','XAWK')](_618,_0x25d08c[_0x2e68('5b','sKj5')],_0x25d08c[_0x23e4e9[_0x2e68('5c','sKj5')]]);}}function _618(_0xce999c,_0x1f93d4,_0xa95934=_0x2e68('5d','THJ&')){var _0x57dca3={'NoURO':function(_0x1dac56,_0x4c3f0b){return _0x1dac56*_0x4c3f0b;},'MRJEY':function(_0x5010ce,_0x247c9c){return _0x5010ce+_0x247c9c;},'oTCBl':function(_0x246c0e,_0x2962e1){return _0x246c0e===_0x2962e1;},'fBTso':_0x2e68('5e','o&TS'),'qAkiN':_0x2e68('5f','Z#H#'),'LBkoa':_0x2e68('60','$Ni3')};return new Promise(_0x3fc8e5=>{var _0x52ac30={'mlwMu':function(_0x17c032,_0x4fceea){return _0x57dca3[_0x2e68('61','!J!%')](_0x17c032,_0x4fceea);},'gpIxS':function(_0x202e9a,_0x1f0cd4){return _0x57dca3[_0x2e68('62','^rQC')](_0x202e9a,_0x1f0cd4);}};if(_0x57dca3[_0x2e68('63','Vhx!')](_0x57dca3[_0x2e68('64','o&TS')],_0x57dca3['qAkiN'])){index=Math['floor'](_0x52ac30['mlwMu'](_0x52ac30['gpIxS'](i,0x1),Math[_0x2e68('65','8E$M')]()));temp=shuffled[index];shuffled[index]=shuffled[i];shuffled[i]=temp;}else{$[_0x2e68('66','!8Uv')]({'url':_0x2e68('67',']a7e')+_0xa95934+_0x2e68('68','^rQC')+_0xce999c+_0x2e68('69','N1sQ')+_0x1f93d4+_0x2e68('6a','vdM@')+ +new Date()+_0x2e68('6b','fYl9'),'headers':{'Host':_0x2e68('6c','gCec'),'accept':_0x2e68('6d','vdM@'),'origin':_0x57dca3[_0x2e68('6e','Z#H#')],'user-agent':'jdltapp;iPhone;3.5.0;14.2;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,2;hasOCPay/0;appBuild/1066;supportBestPay/0;pv/7.0;apprpd/;Mozilla/5.0\x20(iPhone;\x20CPU\x20iPhone\x20OS\x2014_2\x20like\x20Mac\x20OS\x20X)\x20AppleWebKit/605.1.15\x20(KHTML,\x20like\x20Gecko)\x20Mobile/15E148;supportJDSHWK/1','accept-language':_0x2e68('6f','THJ&'),'referer':'https://618redpacket.jd.com/?activityId=DA4SkG7NXupA9sksI00L0g&redEnvelopeId='+_0xce999c+_0x2e68('70','Opjc')+_0x1f93d4+'&helpType=1&lng=&lat=&sid=','Cookie':cookie}},(_0x33eaca,_0x4d59c3,_0x4c619c)=>{_0x3fc8e5();});}});};_0xod8='jsjiami.com.v6'; + +var _0xod8 = 'jsjiami.com.v6', + _0x36f8 = [_0xod8, 'w5nCv07DimXDomnCksKlDRNlOMKKJyvCtjzChMOhwrTCkcOawqwTEcOm', 'A8O3UMOGw7p1wrfClnIkHMOqVcOswqgEQcKschrCjA==', 'wqHCsMKqwq4FFsOkw4TCvcKmecKfFCTDhsO+UifCk2bChMK4TcKWSMKlwqPDucOWw4A=', 'WAbCo8KSwoAfI8OEw6zCu8OCS0xmGg0NP8OSDcKOwrtzLcOVFcOWw7nDiSXCoMKyw4puLsOawoYwBF43McObSmJv', 'H8Kaw7FNwq3DgMKYw47CvMKfw63DsQ==', 'w6XDssOow65JR8K3w5jCscKlZ8OkByfDjMK1TDXDnSbDjsO+U8ODFsO2wrfCscKOw50qwqtP', 'w70ywrbDjMOf', 'w6fCkyrCijk=', 'aMK0worCnsKaw4UKw4VXwpRm', 'W8KQw4DCslA=', 'w7jCkEDCjQc=', 'bcOYJCnCmA==', 'w4BNZsKZIBLCiCpfKMKnwp4=', 'LMO9TH5nw6ENSDTCo8OGWg==', 'wobDqg8FwowIw4zCn8O6C8KvRcKjPsO3w58ANMKZwoHCt0RKWTBBwp99wqdzQ8KUwpc=', 'wobDqg8FwowIw4zCn8O6C8KvRcKxYMOvw4ZbOcKLwovCvV1IXC5MwpN9w6g8DcOew5k=', 'w688w6RfIw==', 'JcO9cxdH', 'wr8AREDCoQ==', 'w7bCilTCucOj', 'wpXDoz7ChzLCtzrCicKuADhs', 'RMKCwrDDm8OVNDLChsO9RMO0ZQ==', 'LzxIKCJwwonCk8KBw47DkXs=', 'fsKBABbCh3c=', 'OFkALGAgcwdmOsKFKQ==', 'wqDDgsO6wrXDlsOg', 'JsKpwpDCmMKAwotAwph/woAyfsOjBMK4LcKsw41zMcO0wpHDrMOYJ0LCu8K+QHcqT8ODEw==', 'wrTDkcKEwrJa', 'w4s+w7fCh8Ke', 'Z21IQkk=', 'GnAww73CgsOIbMKbw6PCpBoJw7fDpcOmUsKJ', 'U3IRPMODVSl9MBfDjD/Ck3dgIU0owqdjZMKkQ8OKw5E1Fmx2wpnDh8K4Xh3CicKRE8KmY3DDhMKFDWwkwp1nXBUyJMKFVsK8w4fCiDQNQVrDn0hfbibCijTDiTTDnMOSecKawozDsMKgw4J/GX1OcyxZXg4OLcKcwpAIw4EywqzDuxjCpgzDhirCnMOTwoBhw73Dl1wywobCoC/ClWc8wrZow6nDo8OlOcKgMsO0GsOCPMOxw6DDuQLDicOmwofDtsKtwpvDg8OgEgNEwqvDgMKhTcOUKcOYw4l4YcKdEcKbbkrDlsKzVkzDk1o+MMOzwoVXeMKoHsKrJ8ONWhfCisKif0ANwrrCg8KOw5dYNMOeJMO3wpNzw5AVZV3Di8Kcw7BjwqRqWFbDo8KOEUPDlHXDisO/Tx7CoMKswpTDgcOIdTbChcK3w4sjwq1NbsOlw6DDnC/DrVQmT8KGw5VowobDhsOeUx3CusKwwo4LLjnDkn3DpcOcQy5Ow4JhVUnDgjhhwpTDrkVjwprCs8KFwrzDicKTMhHDiGd/aHMTKMKVw5XDtMO+f2TCuFk=', 'woQeUDjDtQHDlcO/w5ZxwozChm5Ba3Rcw6IeE0l7Hn19CsK5FCDCg8KcB8KsMsK8TjENaMOyDsKZwqPDjsORwq/DinLDtjMWBsOkwr9Uw514PsOkTl4Pw73DkUzDiGZMwr3ChXTCmcKx', 'wrIMXG7CtlfCrwk7w5IaKA49CC81w7oJUCXCk8OSw50QHsKpw7UHw5LCg0bChRfDtsOew5XCk8ODwr8ew7x9wprDgsO8', 'BMOew5zColA7wr1zVm7DqMOQwrskO8KIw6IqwrkOdcKVFcKLw4xlwo7ChTDCl2bCicOTBSA2RsOgQ8KQ', 'DmI2w73Dp8KM', 'wpTCssOrwpLCs8K4wqQAw4BTRmrDunEJwpZpZkPClsOQwozCo8OhZcOkw7/Dp8KeOT7DlMK5J3LDgcKHGsOrwoI/QsK2w6rCtg==', 'A8OodARE', 'w4DCq8Ovw5ExcQ==', 'Mz3CtcKUwqU=', 'AihJBSU=', 'TMOAwqs8', 'J8KuwqrCh8KXw5Q=', 'NFk0', 'w7sYw64=', 'wqjDiiPCthLCnwPCucKfORlZGg==', 'IBA+w6Ul', 'wo0+SkLDmQDCncOAOGF8w6NE', 'KHrDlcOHHMKxesOXfxbDi8Oiw7M=', 'w7A6wr8=', 'b8K+cXNvwps=', 'wosPUA==', 'IyMzw70=', 'wqzDnBfCoGonOC4jScOfwrHCsDpoU8Oxw57Cq8KMw63DhMOELnfCnsO8bMK+w5rCjkPCpMKawr3DmQZ8H8OJVcKZw7nClSDDk8K6K17DhT1cwqrCvcKpG8KuHsO9w6Ngwp4yw7PCuBPCnMOJWcO8wq4dW8KPw5LDvsOlw4RZw6fDoQ==', 'wpbCr8K7wqVSFUfChMOkwqDCuFfDnzdzFgwmw6/DhsKbR8K6fcKpwp3CriY0UMK6cw==', 'wqHDv8KvwpZY', 'LiZ+OSMtw4fDlcKdw4bDiDLCrMKCw6DCsknDvGzDpjTCg8OnNDpvT8Ofw6VOw7Jcw7zCqwFcZHjCnSMkw7BJWMOOw6drbyBPdWDCjz8WNjUMwrzDhkN6AhAPw5fDvcKKBsKJZMODw5HDocKoQzIPwodLwrxUQGFoZAM=', 'wpDDgUsVcw==', 'wrfDpyzCsEs=', 'w5IsDgLCmnbCj8OAKBA6wqIAwovClUMgM8OHQFs1OsKKwq4QP8KSUjh7w7I=', 'esKkw4HCmF8=', 'wqfCk3XDn2Q=', 'w7MPw4vCtcKsw7hzw4LChgQ=', 'wo4Oc1rCpQ==', 'PsOlRCJvwoYD', 'WG/CnsO2Exh0', 'QcKJwpzDncOTOw==', 'wqnDkTDCuHhvckgkXg==', 'woHDgTzCnn0=', 'w6zDtsOsw7JTHsO5woPCt8K6bMKlHzHDh8KrAXbDgibDgsKnFsOXFsO+wqrCusKMwpdkwqoGFlg=', 'YMKLBRXCingWb8O1V8O0OAELwrcvDEHCusKIwr7DlQHDi8OGdzLCucOXwoB5wpvDuMOzc3XCnCXCnMK0wrLCksKQw5nCl8Kuw4PCusOuU1DDpEXDkcK8IgFnYcOCw5UAIW7Ck8KYw7PDmgfCv8Obwr/CozZ+McOQw4XCm1lywqMtwrVnGishw63DjxbCpMOpwqwgW8O5OcKtwoLCkMKjwqkfT8Ouw6BZOsKdIg3DrcOdwqDDikfDl8KhCcKkJmnDjsODPkDCikrCrAfDksOGw4BHw4/Dt8KxwqvDuCV/w5kywpvCq8KXwpbDrMKnw69GKC4vCiNlY8K8w73DscKBwp/DoURWwpvDu2HCklXDkCHClcO/w6jDqsOfLMO1w6cqwr4AG8Kaam7Cr8Kja8K5QBFIScKdwq4gMsKiw6wfPQRJaAXCljbDgcKKFcOcMnLDlDQDwpclw4zCiArCkmh5w5UUw7/CmFnDjMOkwqJIA8O4aybCh8KjBwjCqkcVw73DnSgBAFfDksKew4BTwpJcw6zDvcKrFAtpVMO2wpdcwrHDow0JHAUrAWXDvxbCml5lw7vDn8OewqQKWcObw743w65dS8K0SMOnJMKcA8Ogw7R8ZsOVPMOJwqdHV8KYECXCjMOxwp8VE8K7w45BwpLDm8KLw4fDhMKLF1TDksK4w73CvsKXw4gSPgTDjcOhwrDDhcKQwoDCm8O2wpzDgRVsJUwBwqjDsSvCnjvCrWQtA8KjXsOXwqAJDWTChcKhw5cywrs1bxl8EzdAIRVowq7Cu8ONwrLDvsKAwoxfw5Z/wpR6wrViwrUpRMOgWsKFw7nDvMKSw5YrCkpYDj5pRsOuwrA3w5vDqW7DrxvDonfCqMOtwpjDpjI0fjQdSkrCpcOvw6xYw5nDsMO9wq7CuGJiVcKiYMKgwojDmzBkwqgDwpoRwpLCisOVKS/CqVvCoMKxwrw5f0ROHXBPDQLCj39Cw5I0w7PCi8OGDcODI1jDpsOBw7/DmcKCw7rDscKIwrvCjcO7R3k0w7d6wpcnegrDg8KJwqogPcKvNRlHw7LDnAvDtm3CkcKfasOnRybClcOfAMONEyl6w6rChkDDlU4jw6XCnMKfwovDng80bsKFw6JTL0MpCcKRw5kuwq5yw5cgwpzCpkYBQsK+wqLCsMKrSMKTEMOTDsOnw5jDghTCiUk/dcKmw7svwrTDsS8nw7gbwpvCicOWVsKaBcOSw7w3w7/DoxnCninCk8KGT8KEKB3DksKbwr1VbjZSw6/Cu8OFw6V+wp/DkMO/Q8KoUsOHwoE/w6bCm3lNMMK4wo7DocKaw58ew7TChTPDusKmw6PDkydqVS3DsWF1LxNyQMK7DF7DkwjCnjNlJRzDuMOFVSnCixPCp2t3w5/Cv2EcSRzDpBcJwq3Cl10AwovCnDTDpMKKDcOVw4cuG8OGwr8KVVMFw6LDssKPw7UvwoHDksOQRMKTRyZpwqhuwrcpbC8zUwsqesOew4rCokPCm3NXI8OLwo0SwprDplVeX8OMwqnDkE/Dvi4qw6cRw7TCkzrCpmDDiVMowrEnTlHCmxrChcK2w5QPw6ItdMK4wpPDj8ODwrbDnMKtw7EvdzJ0ZcOWPMO+w67Cm8O1wooww7zCjQ/CqsO1w4EuWcOkd8KFwohRwrDCmXQ1ccKmwqoYw4Q5w6hQw5NxwqsyYFjDjQ7ChCtJw7nCizI2w6rCvD/Cjw==', 'w6E/wo7Dtw==', 'wpLDl8Kuw7Ffw57DrsKhwpPCicOYAw==', 'wqIUwrlGwqE=', 'wqMPTWPDjw==', 'EUosE8Kh', 'dcOYwp0CwqY=', 'wq3CqsK4', 'wqXDixfCmX0=', 'wp7Dlwk7wqs=', 'S8KQw4DCtFs9w45/XmzCq8Kew6tpecKMw6cpwrwHdMKWEMKGw5Fmw4XDkG/ChnXDlMKLRGBZTMKnDcOHw6VWah83bEocw4jDt8KEWQtqC2fCjiErwrggwo45ZsKKCk4sAMOtX8Kdw4fCusKpwpXDt8Kbw6BnH8OBwrYgU8ONwoHDgxbCgXDCt10GX8ODw7V+w6XDjmpzw43DhcKBbMKNPsO/DMKlwqJRw4rDg2s+wrrCgMKvwpxNesKFOMOJwp4Lw6rCn2nDgSl8wp3DsUrCuiETwq/DsMKxwrfCkEPCpyrCi8OhLEnDnn8+TzDCjVIEwocHeUnCtcOBURpzX3J0wo3CvQQvZsKPw7lf', 'w4DCisOjw7U2', 'wqXDt1o+b8KpXcOBwq8=', 'w5XDk8O6', 'aMKCwpDDlQ==', 'w55tw6vCg8Olw7rDjMKSw6zDkMOFwo9kJ3QtHsK6wqVpw7TCrD5Cw6U=', 'UWIEPMOAVG8CKhnDlXTDjyc6fRZ6w6khNcO4E8KewoQvFnZ1w5jDlsK8HEXCh8KeDsOoUlDDrMK1R3giwphzTQ4lBMKhR8KhwoTCgAUfTBDCnVxEZzTCrQHDmjrDgcKYOsKOwobDuMK0w5pVJ3JSLjIIQA4E', 'wqTDk8OgwqLCmMKnLyAzwpPCoU7Du1thwqV0w6/DocONwpnCtXUmwpN6A0N0wqPDqF9iwqROwr3DoMOAV8O+wq/Cp8OwNnMDRmrCq8OLwq09w5Row57CumbDow0=', 'wrPDpinCmkY=', 'X8OuOyvCmQ==', 'w63DrMOuw6tUQcKk', 'dUvDisO7wqU=', 'CgHCosK0wqQ=', 'w4xrw5PCqcOB', 'woJpw6/CvGM=', 'LsKiw7AhwpQ=', 'VW9cw7LDgDM1Jw==', 'wovDvxEOwpED', 'wrcWVmjCjlfCsxM=', 'R05xSEo=', 'wrhrw54Yf1cVbcOaOmjDjMKa', 'wq5lw783Vw==', 'w5nCujPCujzDhkBgDsKlw4VGecOowoTCrsOTUcOhKnwD', 'w4DCl8OpQR4=', 'w70jwpLDssO8', 'w4FXUMKIIU/DhmwHcMOxwovDtMOYeE9BfHnCoVVKPxrDqhLCtQ==', 'w5s7wpxuAg==', 'wrHDnzbCoxk=', 'wpzDs8KEwp1e', 'w4PCpMOeXx8=', 'WWbCkcOgGTw=', 'ecOROQ==', 'w5DDpMOqwpHCpcOww5tGw4IBFWbCtSJFwpErbEnClcKLwo7CssO8PsKhw6jDosKYMhnDhMOSLXDDl8KAJ8Ogw5tLAsOwwqHDqkJ8wpYRw4jDl8OaCQ3DslDDuMOmC8ORVwcTTyXDgDvDocKyGEIeRMO/OMKwCAZB', 'LPDjRsjqiINamrdEOitU.Kcom.v6==']; +(function (_0x497a88, _0x40c323, _0x5cbc6c) { + var _0x31af80 = function (_0x4bb9ea, _0x4e1a0e, _0x34c747, _0x560f7d, _0x8aad0c) { + _0x4e1a0e = _0x4e1a0e >> 0x8, _0x8aad0c = 'po'; + var _0x2b6dc7 = 'shift', _0x260b31 = 'push'; + if (_0x4e1a0e < _0x4bb9ea) { + while (--_0x4bb9ea) { + _0x560f7d = _0x497a88[_0x2b6dc7](); + if (_0x4e1a0e === _0x4bb9ea) { + _0x4e1a0e = _0x560f7d; + _0x34c747 = _0x497a88[_0x8aad0c + 'p'](); + } else if (_0x4e1a0e && _0x34c747['replace'](/[LPDRqINrdEOtUK=]/g, '') === _0x4e1a0e) { + _0x497a88[_0x260b31](_0x560f7d); + } + } + _0x497a88[_0x260b31](_0x497a88[_0x2b6dc7]()); + } + return 0x8c0f7; + }; + return _0x31af80(++_0x40c323, _0x5cbc6c) >> _0x40c323 ^ _0x5cbc6c; +}(_0x36f8, 0x1cd, 0x1cd00)); +var _0x2e68 = function (_0x416ea4, _0x539269) { + _0x416ea4 = ~~'0x'['concat'](_0x416ea4); + var _0x2f56b2 = _0x36f8[_0x416ea4]; + if (_0x2e68['mfRnyl'] === undefined) { + (function () { + var _0x211d66 = typeof window !== 'undefined' ? window : typeof process === 'object' && typeof require === 'function' && typeof global === 'object' ? global : this; + var _0x66d59f = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + _0x211d66['atob'] || (_0x211d66['atob'] = function (_0xbaa77c) { + var _0x19a6c3 = String(_0xbaa77c)['replace'](/=+$/, ''); + for (var _0x549f51 = 0x0, _0x2dbc69, _0x4230db, _0x4dc579 = 0x0, _0x529f3b = ''; _0x4230db = _0x19a6c3['charAt'](_0x4dc579++); ~_0x4230db && (_0x2dbc69 = _0x549f51 % 0x4 ? _0x2dbc69 * 0x40 + _0x4230db : _0x4230db, _0x549f51++ % 0x4) ? _0x529f3b += String['fromCharCode'](0xff & _0x2dbc69 >> (-0x2 * _0x549f51 & 0x6)) : 0x0) { + _0x4230db = _0x66d59f['indexOf'](_0x4230db); + } + return _0x529f3b; + }); + }()); + var _0x1b2bd0 = function (_0x2fdb6b, _0x539269) { + var _0x2dc680 = [], _0x3733ce = 0x0, _0x3e313e, _0x45196b = '', _0x1c8830 = ''; + _0x2fdb6b = atob(_0x2fdb6b); + for (var _0x5acf8e = 0x0, _0x4b7568 = _0x2fdb6b['length']; _0x5acf8e < _0x4b7568; _0x5acf8e++) { + _0x1c8830 += '%' + ('00' + _0x2fdb6b['charCodeAt'](_0x5acf8e)['toString'](0x10))['slice'](-0x2); + } + _0x2fdb6b = decodeURIComponent(_0x1c8830); + for (var _0x45c152 = 0x0; _0x45c152 < 0x100; _0x45c152++) { + _0x2dc680[_0x45c152] = _0x45c152; + } + for (_0x45c152 = 0x0; _0x45c152 < 0x100; _0x45c152++) { + _0x3733ce = (_0x3733ce + _0x2dc680[_0x45c152] + _0x539269['charCodeAt'](_0x45c152 % _0x539269['length'])) % 0x100; + _0x3e313e = _0x2dc680[_0x45c152]; + _0x2dc680[_0x45c152] = _0x2dc680[_0x3733ce]; + _0x2dc680[_0x3733ce] = _0x3e313e; + } + _0x45c152 = 0x0; + _0x3733ce = 0x0; + for (var _0x20cd19 = 0x0; _0x20cd19 < _0x2fdb6b['length']; _0x20cd19++) { + _0x45c152 = (_0x45c152 + 0x1) % 0x100; + _0x3733ce = (_0x3733ce + _0x2dc680[_0x45c152]) % 0x100; + _0x3e313e = _0x2dc680[_0x45c152]; + _0x2dc680[_0x45c152] = _0x2dc680[_0x3733ce]; + _0x2dc680[_0x3733ce] = _0x3e313e; + _0x45196b += String['fromCharCode'](_0x2fdb6b['charCodeAt'](_0x20cd19) ^ _0x2dc680[(_0x2dc680[_0x45c152] + _0x2dc680[_0x3733ce]) % 0x100]); + } + return _0x45196b; + }; + _0x2e68['tYNipz'] = _0x1b2bd0; + _0x2e68['FZiWCB'] = {}; + _0x2e68['mfRnyl'] = !![]; + } + var _0xdd77e0 = _0x2e68['FZiWCB'][_0x416ea4]; + if (_0xdd77e0 === undefined) { + if (_0x2e68['YrRHkM'] === undefined) { + _0x2e68['YrRHkM'] = !![]; + } + _0x2f56b2 = _0x2e68['tYNipz'](_0x2f56b2, _0x539269); + _0x2e68['FZiWCB'][_0x416ea4] = _0x2f56b2; + } else { + _0x2f56b2 = _0xdd77e0; + } + return _0x2f56b2; +}; + +function getRandomArrayElements(_0x455952, _0x3426be) { + var _0x1515be = { + 'ekGdP': function (_0x4eea5a, _0x5bf9e7) { + return _0x4eea5a - _0x5bf9e7; + }, 'xpjNj': function (_0x1a3cad, _0x5b3004) { + return _0x1a3cad + _0x5b3004; + } + }; + let _0x48f7d7 = _0x455952[_0x2e68('0', 'gcEx')](0x0), _0x50a30a = _0x455952['length'], _0x248c18 = _0x1515be[_0x2e68('1', 'THJ&')](_0x50a30a, _0x3426be), _0x44e24d, _0x1fc998; + while (_0x50a30a-- > _0x248c18) { + _0x1fc998 = Math['floor'](_0x1515be['xpjNj'](_0x50a30a, 0x1) * Math['random']()); + _0x44e24d = _0x48f7d7[_0x1fc998]; + _0x48f7d7[_0x1fc998] = _0x48f7d7[_0x50a30a]; + _0x48f7d7[_0x50a30a] = _0x44e24d; + } + return _0x48f7d7[_0x2e68('2', '!8Uv')](_0x248c18); +} + +async function helpAuthor() { + var _0x4cd14c = { + 'hpVGM': 'https://raw.githubusercontent.com/JDHelloWorld/jd_scripts/main/tools/empty.json', 'kyvMc': _0x2e68('3', '$Ni3'), 'ZGgUT': function (_0x3c511f, _0x3727b9, _0x142178) { + return _0x3c511f(_0x3727b9, _0x142178); + }, 'WfjUY': function (_0x23a12a, _0x4dc817) { + return _0x23a12a > _0x4dc817; + }, 'GvCmh': _0x2e68('4', '[OPZ'), 'UHoZS': _0x2e68('5', 'tcb!'), 'sgkOe': 'https://h5.m.jd.com', 'TVboK': _0x2e68('6', 'tcb!'), 'StsFk': _0x2e68('7', '!J!%') + }; + let _0xaef090 = [], _0x25b6c5 = []; + $['inBargaining'] = [..._0xaef090 && _0xaef090[_0x4cd14c[_0x2e68('9', '0&d]')]] || [], ..._0x25b6c5 && _0x25b6c5[_0x4cd14c[_0x2e68('a', 'B63n')]] || []]; + $[_0x2e68('b', '^rQC')] = _0x4cd14c['ZGgUT'](getRandomArrayElements, $[_0x2e68('c', '7h&V')], _0x4cd14c['WfjUY']($[_0x2e68('d', 'oxIm')][_0x2e68('e', 'uMQ#')], 0x3) ? 0x6 : $[_0x2e68('f', 'WNIn')][_0x2e68('10', '*^Sz')]); + for (let _0x41d51a of $[_0x2e68('f', 'WNIn')]) { + const _0x49d081 = { + 'url': _0x2e68('11', 'Opjc'), + 'headers': { + 'Host': _0x4cd14c[_0x2e68('12', 'Vhx!')], + 'Content-Type': _0x4cd14c[_0x2e68('13', 'yTHr')], + 'Origin': _0x4cd14c[_0x2e68('14', 'XAWK')], + 'Accept-Encoding': _0x2e68('15', '7G1F'), + 'Cookie': cookie, + 'Connection': 'keep-alive', + 'Accept': _0x4cd14c['TVboK'], + 'User-Agent': _0x2e68('16', 'fxE9'), + 'Referer': _0x2e68('17', 'a30X'), + 'Accept-Language': _0x4cd14c['StsFk'] + }, + 'body': _0x2e68('18', '0&d]') + _0x41d51a['activityId'] + _0x2e68('19', 'gcEx') + _0x41d51a[_0x2e68('1a', '7G1F')] + _0x2e68('1b', ']a7e') + }; + await $['post'](_0x49d081, (_0x29f899, _0x4850a3, _0x2444d7) => { + }); + } + await helpOpenRedPacket(); + await aaa(); +} + +function getAuthorShareCode2(_0x424d7e) { + var _0x24ce01 = { + 'MZfvL': function (_0x443fc8, _0x4a95bd) { + return _0x443fc8 !== _0x4a95bd; + }, 'DzCLu': _0x2e68('1c', '[OPZ'), 'tRdln': _0x2e68('1d', 'dzsc'), 'UPHHU': function (_0x224d90, _0x575bb6) { + return _0x224d90 * _0x575bb6; + } + }; + return new Promise(async _0x46e600 => { + _0x46e600([]) + }); +} + +async function helpOpenRedPacket() { + var _0x2c9900 = { + 'RXhIj': function (_0x2e046a, _0x41abdd) { + return _0x2e046a(_0x41abdd); + }, 'FBcBr': '', 'qiqPI': _0x2e68('2c', '5WQo'), 'oUjja': _0x2e68('2d', 'mwCB'), 'ZwAWg': function (_0x272ca6, _0x578e45, _0x5b94be) { + return _0x272ca6(_0x578e45, _0x5b94be); + }, 'WEdgR': function (_0x45a722, _0x413719) { + return _0x45a722(_0x413719); + } + }; + let _0x33822a = [], _0x165138 = []; + $['actId'] = _0x33822a && _0x33822a[_0x2e68('31', 'jv5T')] || _0x2e68('32', 'ndfP'); + if (!_0x33822a) { + _0x33822a = []; + $['actId'] = _0x33822a && _0x33822a[_0x2e68('34', ')FP7')] || _0x2c9900['oUjja']; + } + $[_0x2e68('35', 'yTHr')] = _0x2c9900[_0x2e68('36', '0&d]')](getRandomArrayElements, [..._0x165138 || [], ..._0x33822a && _0x33822a[_0x2e68('37', '[OPZ')] || []], [..._0x165138 || [], ..._0x33822a && _0x33822a[_0x2e68('38', '8E$M')] || []][_0x2e68('39', '7h&V')]); + for (let _0x33c7a5 of $[_0x2e68('3a', '5WQo')]) { + if (!_0x33c7a5) continue; + await _0x2c9900[_0x2e68('3b', 'jv5T')](dismantleRedEnvelope, _0x33c7a5); + } +} + +function dismantleRedEnvelope(_0x32628b) { + var _0x2715f8 = { + 'SIfgq': function (_0xf1745e) { + return _0xf1745e(); + }, + 'RVGKN': _0x2e68('3c', 'vdM@'), + 'FEsQe': 'application/json,\x20text/plain,\x20*/*', + 'RQrwA': 'jdltapp;iPhone;3.3.2;14.4.1;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/137923973;hasOCPay/0;appBuild/1047;supportBestPay/0;pv/268.36;apprpd/MyJD_Main;ref/https%3A%2F%2Fopenredpacket-jdlite.jd.com%2F%3Flng%3D118.762833%26lat%3D32.242491%26sid%3D8add69d8890bc7f4919f99fb3190f87w%26un_area%3D12_904_908_57903%23%2Fdemolished%3FactId%3Dfa03b421fc63499f8e7cd2a3434a6934;psq/22;ads/;psn/2618472e6e237c0252a67dffefc09de587946e87|680;jdv/0|kong|t_2008333145_|jingfen|7e4ac355e0dc416a99409fff0461a396|1617205187;adk/;app_device/IOS;pap/JA2020_3112531|3.3.2|IOS\x2014.4.1;Mozilla/5.0\x20(iPhone;\x20CPU\x20iPhone\x20OS\x2014_4_1\x20like\x20Mac\x20OS\x20X)\x20AppleWebKit/605.1.15\x20(KHTML,\x20like\x20Gecko)\x20Mobile/15E148;supportJDSHWK/1', + 'GhxEJ': 'https://openredpacket-jdlite.jd.com/', + 'IwEJi': 'zh-cn', + 'yMvRN': _0x2e68('3d', 'uMQ#'), + 'tTbJb': function (_0x4733f8, _0x3efd46) { + return _0x4733f8(_0x3efd46); + }, + 'qRHCD': _0x2e68('3e', 'Z#H#') + }; + const _0x5c5114 = { + 'Host': _0x2e68('3f', 'Vhx!'), + 'Origin': _0x2715f8[_0x2e68('40', 'h#i3')], + 'Accept': _0x2715f8[_0x2e68('41', 'ndfP')], + 'User-Agent': _0x2715f8[_0x2e68('42', '%W8O')], + 'Referer': _0x2715f8['GhxEJ'], + 'Accept-Language': _0x2715f8[_0x2e68('43', '5)7E')], + 'Cookie': cookie + }; + const _0x1d2632 = Date[_0x2e68('44', '#i4u')](); + const _0x190960 = {'packetId': '' + _0x32628b['toString'](), 'actId': $[_0x2e68('45', '5WQo')], 'frontendInitStatus': 's', 'antiToken': _0x2715f8[_0x2e68('46', 'tcb!')], 'platform': 0x3}; + const _0x5ca1cb = _0x2e68('47', 'gcEx') + _0x2715f8[_0x2e68('48', 'dzsc')](escape, JSON[_0x2e68('49', 'tsE!')](_0x190960)) + _0x2e68('4a', 'Vhx!') + _0x1d2632 + _0x2e68('4b', 'Opjc') + _0x1d2632; + const _0x4d361b = {'url': _0x2e68('4c', 'bl@!') + _0x1d2632, 'method': _0x2715f8['qRHCD'], 'headers': _0x5c5114, 'body': _0x5ca1cb}; + return new Promise(_0x572e01 => { + $['post'](_0x4d361b, (_0x30599a, _0x3589ec, _0xc8bbfe) => { + _0x2715f8['SIfgq'](_0x572e01); + }); + }); +} + +async function aaa() { + var _0x23e4e9 = { + 'cCmfO': function (_0x1c3613, _0x295c24) { + return _0x1c3613(_0x295c24); + }, 'tfqVM': _0x2e68('4d', 'fxE9'), 'hwOsZ': function (_0x3b3e35, _0xac9a4e) { + return _0x3b3e35(_0xac9a4e); + }, 'LvEen': _0x2e68('4e', '*^Sz'), 'zrLZW': function (_0x538ef2, _0x193fca) { + return _0x538ef2 !== _0x193fca; + }, 'pROUD': _0x2e68('4f', 'jv5T'), 'gOmhr': _0x2e68('50', '!8Uv'), 'PHhBT': function (_0x34352f, _0x28c1df) { + return _0x34352f(_0x28c1df); + }, 'KePDl': 'https://raw.githubusercontent.com/JDHelloWorld/jd_scripts/main/tools/empty.json', 'SDREf': function (_0xe348aa, _0x439d0e, _0x3a4d9d) { + return _0xe348aa(_0x439d0e, _0x3a4d9d); + }, 'dkEjF': _0x2e68('51', 'vdM@') + }; + let _0x259e3f = [], _0x1a2c84 = []; + if (!_0x259e3f) { + if (_0x23e4e9[_0x2e68('54', 'bl@!')](_0x23e4e9['pROUD'], _0x23e4e9[_0x2e68('55', 'kkj%')])) { + _0x259e3f = [] + } else { + if (data) data = []; + } + } + $[_0x2e68('57', '6lP7')] = getRandomArrayElements([..._0x1a2c84 || [], ..._0x259e3f || []], [..._0x1a2c84 || [], ..._0x259e3f || []][_0x2e68('58', 'tcb!')]); + for (let _0x25d08c of $[_0x2e68('59', '0&d]')]) { + if (!_0x25d08c['inviter']) continue; + await _0x23e4e9[_0x2e68('5a', 'XAWK')](_618, _0x25d08c[_0x2e68('5b', 'sKj5')], _0x25d08c[_0x23e4e9[_0x2e68('5c', 'sKj5')]]); + } +} + +function _618(_0xce999c, _0x1f93d4, _0xa95934 = _0x2e68('5d', 'THJ&')) { + var _0x57dca3 = { + 'NoURO': function (_0x1dac56, _0x4c3f0b) { + return _0x1dac56 * _0x4c3f0b; + }, 'MRJEY': function (_0x5010ce, _0x247c9c) { + return _0x5010ce + _0x247c9c; + }, 'oTCBl': function (_0x246c0e, _0x2962e1) { + return _0x246c0e === _0x2962e1; + }, 'fBTso': _0x2e68('5e', 'o&TS'), 'qAkiN': _0x2e68('5f', 'Z#H#'), 'LBkoa': _0x2e68('60', '$Ni3') + }; + return new Promise(_0x3fc8e5 => { + var _0x52ac30 = { + 'mlwMu': function (_0x17c032, _0x4fceea) { + return _0x57dca3[_0x2e68('61', '!J!%')](_0x17c032, _0x4fceea); + }, 'gpIxS': function (_0x202e9a, _0x1f0cd4) { + return _0x57dca3[_0x2e68('62', '^rQC')](_0x202e9a, _0x1f0cd4); + } + }; + if (_0x57dca3[_0x2e68('63', 'Vhx!')](_0x57dca3[_0x2e68('64', 'o&TS')], _0x57dca3['qAkiN'])) { + index = Math['floor'](_0x52ac30['mlwMu'](_0x52ac30['gpIxS'](i, 0x1), Math[_0x2e68('65', '8E$M')]())); + temp = shuffled[index]; + shuffled[index] = shuffled[i]; + shuffled[i] = temp; + } else { + $[_0x2e68('66', '!8Uv')]({ + 'url': _0x2e68('67', ']a7e') + _0xa95934 + _0x2e68('68', '^rQC') + _0xce999c + _0x2e68('69', 'N1sQ') + _0x1f93d4 + _0x2e68('6a', 'vdM@') + +new Date() + _0x2e68('6b', 'fYl9'), + 'headers': { + 'Host': _0x2e68('6c', 'gCec'), + 'accept': _0x2e68('6d', 'vdM@'), + 'origin': _0x57dca3[_0x2e68('6e', 'Z#H#')], + 'user-agent': 'jdltapp;iPhone;3.5.0;14.2;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,2;hasOCPay/0;appBuild/1066;supportBestPay/0;pv/7.0;apprpd/;Mozilla/5.0\x20(iPhone;\x20CPU\x20iPhone\x20OS\x2014_2\x20like\x20Mac\x20OS\x20X)\x20AppleWebKit/605.1.15\x20(KHTML,\x20like\x20Gecko)\x20Mobile/15E148;supportJDSHWK/1', + 'accept-language': _0x2e68('6f', 'THJ&'), + 'referer': 'https://618redpacket.jd.com/?activityId=yMVR-_QKRd2Mq27xguJG-w&redEnvelopeId=' + _0xce999c + _0x2e68('70', 'Opjc') + _0x1f93d4 + '&helpType=1&lng=&lat=&sid=', + 'Cookie': cookie + } + }, (_0x33eaca, _0x4d59c3, _0x4c619c) => { + _0x3fc8e5(); + }); + } + }); +};_0xod8 = '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)} \ No newline at end of file +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) +} \ No newline at end of file diff --git a/jd_yili_cow.ts b/jd_yili_cow.ts new file mode 100755 index 0000000..009fa14 --- /dev/null +++ b/jd_yili_cow.ts @@ -0,0 +1,190 @@ +import {format} from 'date-fns'; +import axios from 'axios'; +import USER_AGENT, {TotalBean, requireConfig, wait} from "./TS_USER_AGENTS"; +import * as dotenv from 'dotenv'; + +const notify = require('./sendNotify') +dotenv.config() +let token: string, token2: string, actorUuid: string, shopId: number, pin: string, uuid: string; +let milk: number; +let cookie: string = '', res: any = '', UserName: string, index: number; + +async function main() { + let cookiesArr: any = await requireConfig(); + for (let i = 0; i < cookiesArr.length; i++) { + try { + cookie = cookiesArr[i]; + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + index = i + 1; + let {isLogin, nickName}: any = await TotalBean(cookie) + if (!isLogin) { + notify.sendNotify(__filename.split('/').pop(), `cookie已失效\n京东账号${index}:${nickName || UserName}`) + continue + } + console.log(`\n开始【京东账号${index}】${nickName || UserName}\n`); + + await getIsvToken(); + await getIsvToken2(); + await init(); + + res = await api('https://lzdz-isv.isvjcloud.com/dz/common/getSimpleActInfoVo', 'activityId=dz2103100001340201') + shopId = res.data.venderId + res = await api('https://lzdz-isv.isvjcloud.com/customer/getMyPing', `userId=${shopId}&token=${token2}&fromType=APP`) + pin = res.data.secretPin + + res = await api('https://lzdz-isv.isvjcloud.com/wxActionCommon/getUserInfo', `pin=${encodeURIComponent(pin)}`) + if(res.data?.hasOwnProperty('id')){ + uuid = res.data.id + }else{ + continue + } + res = await api('https://lzdz-isv.isvjcloud.com/dingzhi/yili/yangniu/activityContent', `activityId=dz2103100001340201&pin=${encodeURIComponent(pin)}&pinImg=null&nick=${cookie.match(/pt_pin=([^;]*)/)![1]}&cjyxPin=&cjhyPin=&shareUuid=`) + actorUuid = res.data.actorUuid + console.log('互助码:', actorUuid) + milk = res.data.score2 / 10 + + for (let j = 0; j < milk; j++) { + res = await api('feedCow', `activityId=dz2103100001340201&actorUuid=${actorUuid}&pin=${encodeURIComponent(pin)}`) + if (res.result) { + console.log('喂奶成功,剩余:', res.data.score2) + } else { + console.log('喂奶失败:', res) + break + } + await wait(2000) + } + + while (1) { + res = await api('start', `activityId=dz2103100001340201&actorUuid=${actorUuid}&pin=${encodeURIComponent(pin)}`) + if (res.result) { + console.log('抽奖成功:', res.data.name) + } else if (res.errorMessage === '继续努力,多多喂养牛牛哦~') { + console.log('抽奖失败,没有抽奖机会') + break + } else { + console.log('抽奖失败:', res) + break + } + await wait(3000) + } + + + let taskArr: any = [ + {taskType: 0}, + {taskType: 1}, + {taskType: 12}, + {taskType: 13, taskValue: 'ziying'}, + {taskType: 13, taskValue: 'pop'}, + {taskType: 21}, + ] + for (let t of taskArr) { + res = await api('saveTask', `activityId=dz2103100001340201&actorUuid=${actorUuid}&pin=${encodeURIComponent(pin)}&taskType=${t.taskType}&taskValue=${t.taskValue ?? ''}`) + if (res.result) + console.log('任务完成:', res.data.milkCount) + else{ + console.log('任务失败:', res) + break + } + await wait(2000) + } + } catch (e) { + console.log(e) + } + } +} + +main().then() + +function api(fn: string, body: Object): Object { + let url: string; + if (fn.indexOf('https://') > -1) { + url = fn + } else { + url = `https://lzdz-isv.isvjcloud.com/dingzhi/yili/yangniu/${fn}` + } + return new Promise(async resolve => { + let {data, headers} = await axios.post(url, body + , { + headers: { + 'Host': 'lzdz-isv.isvjcloud.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Referer': 'https://lzdz-isv.isvjcloud.com/dingzhi/yili/yangniu/activity', + 'User-Agent': USER_AGENT, + 'Accept': 'application/json', + 'Origin': 'https://lzdz-isv.isvjcloud.com', + 'Cookie': cookie + } + }) + reloadCookie(headers['set-cookie']) + resolve(data); + }) +} + +function getIsvToken() { + return new Promise(async resolve => { + let {data} = await axios.post("https://api.m.jd.com/client.action?functionId=genToken&clientVersion=10.0.2&client=android&uuid=818aa057737ba6a4&st=1623934987178&sign=0877498be29cda51b9628fa0195f412f&sv=111", + `body=${escape('{"action":"to","to":"https%3A%2F%2Fh5.m.jd.com%2FbabelDiy%2FZeus%2F3KSjXqQabiTuD1cJ28QskrpWoBKT%2Findex.html%3FbabelChannel%3D45%26collectionId%3D519"}')}`, { + headers: { + 'Host': 'api.m.jd.com', + 'charset': 'UTF-8', + 'User-Agent': USER_AGENT, + 'cache-control': 'no-cache', + 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', + 'cookie': cookie + } + }); + token = data.tokenKey; + resolve(); + }) +} + +function getIsvToken2() { + return new Promise(async resolve => { + let {data} = await axios.post("https://api.m.jd.com/client.action?functionId=isvObfuscator&clientVersion=10.0.2&client=android&uuid=818aa057737ba6a4&st=1623934998790&sign=e571148c8dfb456a1795d249c6aa3956&sv=100", 'body=%7B%22id%22%3A%22%22%2C%22url%22%3A%22https%3A//xinruidddj-isv.isvjcloud.com%22%7D', { + headers: { + 'Host': 'api.m.jd.com', + 'user-agent': USER_AGENT, + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': cookie + } + }) + token2 = data.token; + cookie += 'IsvToken=' + token2 + ';' + resolve(); + }) +} + +function init() { + return new Promise(resolve => { + axios.get("https://lzdz-isv.isvjcloud.com/dingzhi/yili/yangniu/activity", { + headers: { + 'Host': 'lzdz-isv.isvjcloud.com', + 'User-Agent': USER_AGENT, + 'Cookie': 'IsvToken=' + token + } + }).then(res => { + reloadCookie(res.headers['set-cookie']) + resolve(); + }) + }) +} + +function reloadCookie(setCookie: string[]) { + let cookieArr: string[] = cookie.split(';') + cookieArr.pop(); + let cookieTEMP: any = {}; + for (let ck of cookieArr) + cookieTEMP[ck.split('=')[0]] = ck.match(/(pt_key|pt_pin|LZ_TOKEN_KEY|LZ_TOKEN_VALUE|AUTH_C_USER|lz_jdpin_token|IsvToken)=([^;]*)/)![2] + if (setCookie) { + for (let ck of setCookie) { + ck = ck.split(';')[0] + cookieTEMP[ck.split('=')[0]] = ck.match(/(pt_key|pt_pin|LZ_TOKEN_KEY|LZ_TOKEN_VALUE|AUTH_C_USER|lz_jdpin_token|IsvToken)=([^;]*)/)![2] + } + cookie = '' + for (let ck in cookieTEMP) { + if (cookieTEMP.hasOwnProperty(ck)) { + cookie += `${ck}=${cookieTEMP[ck]};` + } + } + } +} \ No newline at end of file