diff --git a/docker/crontab_list.sh b/docker/crontab_list.sh index ec77352..82743ac 100755 --- a/docker/crontab_list.sh +++ b/docker/crontab_list.sh @@ -183,5 +183,8 @@ #大乐透 15 6 * * * node /scripts/jd_DrawEntrance.js >> /scripts/logs/jd_DrawEntrance.log 2>&1 +0 8,12 * * * node /scripts/jd_crowdfunding_wish.js >> /scripts/logs/jd_crowdfunding_wish.log 2>&1 + +8 8 * * * node /scripts/jd_shop_sign.js >> /scripts/logs/jd_shop_sign.log 2>&1 ##############可选脚本############## diff --git a/jd_5g.js b/jd_5g.js index c4d6509..d149551 100755 --- a/jd_5g.js +++ b/jd_5g.js @@ -2,85 +2,79 @@ 京东手机狂欢城活动 活动时间: 2021-8-9至2021-8-28 活动入口:暂无 [活动地址](https://carnivalcity.m.jd.com) - 往期奖励: a、第1名可获得实物手机一部 b、 每日第2-10000名,可获得50个京豆 c、 每日第10001-30000名可获得20个京豆 - 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js ===================quantumultx================ [task_local] #京东手机狂欢城 -0 0-18/6 * * * jd_5g.js, tag=京东手机狂欢城, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true - +0 0-18/6 * * * jd_carnivalcity.js, tag=京东手机狂欢城, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true =====================Loon================ [Script] -cron "0 0-18/6 * * *" script-path=jd_5g.js, tag=京东手机狂欢城 - +cron "0 0-18/6 * * *" script-path=jd_carnivalcity.js, tag=京东手机狂欢城 ====================Surge================ -京东手机狂欢城 = type=cron,cronexp=0 0-18/6 * * *,wake-system=1,timeout=3600,script-path=gua_carnivalcity.js - +京东手机狂欢城 = type=cron,cronexp=0 0-18/6 * * *,wake-system=1,timeout=3600,script-path=jd_carnivalcity.js ============小火箭========= -5G狂欢城 = type=cron,script-path=jd_5g.js, cronexpr="0 0,6,12,18 * * *", timeout=3600, enable=true +5G狂欢城 = type=cron,script-path=jd_carnivalcity.js, cronexpr="0 0,6,12,18 * * *", timeout=3600, enable=true */ -const jd_heplers = require("./utils/JDHelpers.js"); +const jd_helpers = require("./utils/JDHelpers.js"); const jd_env = require("./utils/JDEnv.js"); const $ = jd_env.env("京东手机狂欢城"); const notify = $.isNode() ? require("./sendNotify") : ""; //Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; //IOS等用户直接用NobyDa的jd cookie -let cookiesArr = [], - cookie = "", - message = "", - allMessage = ""; +let cookiesArr = [], cookie = '', message = '', allMessage = ''; + if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { - cookiesArr.push(jdCookieNode[item]); - }); - if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; - if (JSON.stringify(process.env).indexOf("GITHUB") > -1) process.exit(0); + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + if (JSON.stringify(process.env).indexOf('GITHUB') > -1) process.exit(0) } else { - cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...jd_heplers.jsonParse($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...jd_helpers.jsonParse($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); } let inviteCodes = []; $.shareCodesArr = []; -const JD_API_HOST = "https://api.m.jd.com/api"; -const activeEndTime = "2021/08/28 00:00:00+08:00"; //活动结束时间 -let nowTime = new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000; +const JD_API_HOST = 'https://api.m.jd.com/api'; +const activeEndTime = '2021/08/28 00:00:00+08:00';//活动结束时间 +let nowTime = new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000; !(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" }); + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); return; } $.temp = []; if (nowTime > new Date(activeEndTime).getTime()) { //活动结束后弹窗提醒 - $.msg($.name, "活动已结束", `该活动累计获得京豆:${$.jingBeanNum}个\n请删除此脚本\n咱江湖再见`); - if ($.isNode()) await notify.sendNotify($.name + "活动已结束", `请删除此脚本\n咱江湖再见`); - return; + $.msg($.name, '活动已结束', `该活动累计获得京豆:${$.jingBeanNum}个\n请删除此脚本\n咱江湖再见`); + if ($.isNode()) await notify.sendNotify($.name + '活动已结束', `请删除此脚本\n咱江湖再见`); + return } + await requireConfig(); for (let i = 0; i < cookiesArr.length; i++) { if (cookiesArr[i]) { cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) $.index = i + 1; $.isLogin = true; - $.nickName = ""; - $.jingBeanNum = 0; //累计获得京豆 - $.integralCount = 0; //累计获得积分 - $.integer = 0; //当天获得积分 - $.lasNum = 0; //当天参赛人数 - $.num = 0; //当天排名 - $.beans = 0; //本次运行获得京豆数量 - $.blockAccount = false; //黑号 - message = ""; + $.nickName = ''; + $.jingBeanNum = 0;//累计获得京豆 + $.integralCount = 0;//累计获得积分 + $.integer = 0;//当天获得积分 + $.lasNum = 0;//当天参赛人数 + $.num = 0;//当天排名 + $.beans = 0;//本次运行获得京豆数量 + $.blockAccount = false;//黑号 + message = ''; console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); - getUA(); + getUA() await shareCodesFormat(); await JD818(); } @@ -88,9 +82,9 @@ let nowTime = new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 for (let i = 0; i < cookiesArr.length; i++) { if (cookiesArr[i]) { cookie = cookiesArr[i]; - $.canHelp = true; //能否助力 - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); - if (cookiesArr && cookiesArr.length >= 1 && $.canHelp) { + $.canHelp = true;//能否助力 + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + if ((cookiesArr && cookiesArr.length >= 1) && $.canHelp) { console.log(`\n先自己账号内部相互邀请助力\n`); for (let item of $.temp) { console.log(`\n${$.UserName} 去参助力 ${item}`); @@ -103,210 +97,209 @@ let nowTime = new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 } } if ($.canHelp) { - console.log(`\n\n如果有剩余助力机会,则给作者以及随机码助力`); + console.log(`\n\n如果有剩余助力机会,则给作者以及随机码助力`) await doHelp(); } } } // console.log(JSON.stringify($.temp)) if (allMessage) { - //NODE端,默认每月一日运行进行推送通知一次 if ($.isNode()) { - await notify.sendNotify($.name, allMessage, { url: JD_API_HOST }); - $.msg($.name, "", allMessage); + await notify.sendNotify($.name, allMessage, { url: "https://carnivalcity.m.jd.com" }); + $.msg($.name, '', allMessage); } } })() - .catch((e) => { - $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); - }) - .finally(() => { - $.done(); - }); + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) async function JD818() { try { - await indexInfo(); //获取任务 - await supportList(); //助力情况 - await getHelp(); //获取邀请码 - if ($.blockAccount) return; - await indexInfo(true); //获取任务 - await doHotProducttask(); //做热销产品任务 - await doBrandTask(); //做品牌手机任务 - await doBrowseshopTask(); //逛好货街,做任务 + await indexInfo();//获取任务 + await supportList();//助力情况 + await getHelp();//获取邀请码 + if ($.blockAccount) return + // await indexInfo(true);//获取任务 + await doHotProducttask();//做热销产品任务 + await doBrandTask();//做品牌手机任务 + await doBrowseshopTask();//逛好货街,做任务 // await doHelp(); - await myRank(); //领取往期排名奖励 + await myRank();//领取往期排名奖励 await getListRank(); await getListIntegral(); await getListJbean(); - await check(); //查询抽奖记录(未兑换的,发送提醒通知); - await showMsg(); + await check();//查询抽奖记录(未兑换的,发送提醒通知); + await showMsg() } catch (e) { - $.logErr(e); + $.logErr(e) } } async function doHotProducttask() { - $.hotProductList = $.hotProductList.filter((v) => !!v && v["status"] === "1"); - if ($.hotProductList && $.hotProductList.length) console.log(`开始 【浏览热销手机产品】任务,需等待6秒`); + $.hotProductList = $.hotProductList.filter(v => !!v && v['status'] === "1"); + if ($.hotProductList && $.hotProductList.length) console.log(`开始 【浏览热销手机产品】任务,需等待6秒`) for (let item of $.hotProductList) { - await doBrowse(item["id"], "", "hot", "browse", "browseHotSku"); + await doBrowse(item['id'], "", "hot", "browse", "browseHotSku"); await $.wait(1000 * 6); if ($.browseId) { - await getBrowsePrize($.browseId); + await getBrowsePrize($.browseId) } } } //做任务 API function doBrowse(id = "", brandId = "", taskMark = "hot", type = "browse", logMark = "browseHotSku") { - $.browseId = ""; - return new Promise((resolve) => { - const body = { brandId: `${brandId}`, id: `${id}`, taskMark: `${taskMark}`, type: `${type}`, logMark: `${logMark}` }; - const options = taskPostUrl("/khc/task/doBrowse", body); + $.browseId = '' + return new Promise(resolve => { + const body = {"brandId":`${brandId}`,"id":`${id}`,"taskMark":`${taskMark}`,"type":`${type}`,"logMark":`${logMark}`}; + const options = taskPostUrl('/khc/task/doBrowse', body) $.post(options, (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`); - console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) } else { console.log(`doBrowse 做${taskMark}任务:${data}`); data = JSON.parse(data); - if (data && data["code"] === 200) { - $.browseId = data["data"]["browseId"] || ""; + if (data && data['code'] === 200) { + $.browseId = data['data']['browseId'] || ""; } else { console.log(`doBrowse异常`); } } } catch (e) { - $.logErr(e, resp); + $.logErr(e, resp) } finally { resolve(); } - }); - }); + }) + }) } //领取奖励 -function getBrowsePrize(browseId, brandId = "") { - return new Promise((resolve) => { - const body = { browseId: browseId, brandId: `${brandId}` }; - const options = taskPostUrl("/khc/task/getBrowsePrize", body); +function getBrowsePrize(browseId, brandId = '') { + return new Promise(resolve => { + const body = {"browseId":browseId, "brandId":`${brandId}`}; + const options = taskPostUrl('/khc/task/getBrowsePrize', body) $.post(options, (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`); - console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) } else { console.log(`getBrowsePrize 领取奖励 结果:${data}`); data = JSON.parse(data); - if (data && data["code"] === 200) { - if (data["data"]["jingBean"]) $.beans += data["data"]["jingBean"]; + if (data && data['code'] === 200) { + if (data['data']['jingBean']) $.beans += data['data']['jingBean']; } } } catch (e) { - $.logErr(e, resp); + $.logErr(e, resp) } finally { resolve(data); } - }); - }); + }) + }) } // 关注 -function followShop(browseId, brandId = "") { - return new Promise((resolve) => { - const body = { id: `${browseId}`, brandId: `${brandId}` }; - const options = taskPostUrl("/khc/task/followShop", body); +function followShop(browseId, brandId = '') { + return new Promise(resolve => { + const body = {"id":`${browseId}`, "brandId":`${brandId}`}; + const options = taskPostUrl('/khc/task/followShop', body) $.post(options, (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`); - console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) } else { console.log(`followShop 领取奖励 结果:${data}`); data = JSON.parse(data); - if (data && data["code"] === 200) { - if (data["data"]["jingBean"]) $.beans += data["data"]["jingBean"]; + if (data && data['code'] === 200) { + if (data['data']['jingBean']) $.beans += data['data']['jingBean']; } } } catch (e) { - $.logErr(e, resp); + $.logErr(e, resp) } finally { resolve(data); } - }); - }); + }) + }) } async function doBrandTask() { for (let brand of $.brandList) { - await brandTaskInfo(brand["brandId"]); + await brandTaskInfo(brand['brandId']); } } function brandTaskInfo(brandId) { - const body = { brandId: `${brandId}` }; - const options = taskPostUrl("/khc/index/brandTaskInfo", body); + const body = {"brandId":`${brandId}`}; + const options = taskPostUrl('/khc/index/brandTaskInfo', body) $.skuTask = []; $.shopTask = []; $.meetingTask = []; $.questionTask = {}; - return new Promise((resolve) => { + return new Promise( (resolve) => { $.post(options, async (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`); - console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) } else { data = $.toObj(data); if (data.code === 200) { - let brandId = data["data"]["brandId"]; - $.skuTask = data["data"]["skuTask"] || []; - $.shopTask = data["data"]["shopTask"] || []; - $.meetingTask = data["data"]["meetingTask"] || []; - $.questionTask = data["data"]["questionTask"] || []; - let flag = true; - for (let sku of $.shopTask.filter((vo) => !!vo && vo["status"] !== "4")) { - if (flag) console.log(`\n开始做 品牌手机 【${data["data"]["brandName"]}】 任务`); - if (flag) flag = false; - console.log(`开始浏览 1-F 关注 任务 ${sku["name"]}`); - if (sku["status"] == 3) { - await followShop(sku["id"], brandId); - } else if (sku["status"] == 8) { - await doBrowse(sku["id"], brandId, "brand", "follow", "browseShop"); + let brandId = data['data']['brandId']; + $.skuTask = data['data']['skuTask'] || []; + $.shopTask = data['data']['shopTask'] || []; + $.meetingTask = data['data']['meetingTask'] || []; + $.questionTask = data['data']['questionTask'] || []; + let flag = true + for (let sku of $.shopTask.filter(vo => !!vo && vo['status'] !== '4')){ + if(flag) console.log(`\n开始做 品牌手机 【${data['data']['brandName']}】 任务`) + if(flag) flag = false + console.log(`开始浏览 1-F 关注 任务 ${sku['name']}`); + if(sku['status'] == 3){ + await followShop(sku['id'], brandId); + }else if(sku['status'] == 8){ + await doBrowse(sku['id'], brandId, "brand", "follow", "browseShop"); await $.wait(1000 * 6); if ($.browseId) await getBrowsePrize($.browseId, brandId); - } else { - console.log(`未知任务状态 ${sku["status"]}`); + }else{ + console.log(`未知任务状态 ${sku['status']}`) } } - flag = true; - for (let sku of $.skuTask.filter((vo) => !!vo && vo["status"] !== "4")) { - if (flag) console.log(`\n开始做 品牌手机 【${data["data"]["brandName"]}】 任务`); - if (flag) flag = false; - console.log(`开始浏览 2-F 单品区 任务 ${sku["name"]}`); - await doBrowse(sku["id"], brandId, "brand", "presell", "browseSku"); + flag = true + for (let sku of $.skuTask.filter(vo => !!vo && vo['status'] !== '4')){ + if(flag) console.log(`\n开始做 品牌手机 【${data['data']['brandName']}】 任务`) + if(flag) flag = false + console.log(`开始浏览 2-F 单品区 任务 ${sku['name']}`); + await doBrowse(sku['id'], brandId, "brand", "presell", "browseSku"); await $.wait(1000 * 6); if ($.browseId) await getBrowsePrize($.browseId, brandId); } - flag = true; - for (let sku of $.meetingTask.filter((vo) => !!vo && vo["status"] !== "4")) { - if (flag) console.log(`\n开始做 品牌手机 【${data["data"]["brandName"]}】 任务`); - if (flag) flag = false; - console.log(`开始浏览 3-F 综合区 任务 ${sku["name"]},需等待10秒`); - await doBrowse(sku["id"], brandId, "brand", "meeting", "browseVenue"); + flag = true + for (let sku of $.meetingTask.filter(vo => !!vo && vo['status'] !== '4')){ + if(flag) console.log(`\n开始做 品牌手机 【${data['data']['brandName']}】 任务`) + if(flag) flag = false + console.log(`开始浏览 3-F 综合区 任务 ${sku['name']},需等待10秒`); + await doBrowse(sku['id'], brandId, "brand", "meeting", "browseVenue"); await $.wait(10500); if ($.browseId) await getBrowsePrize($.browseId, brandId); } - flag = true; - if ($.questionTask.hasOwnProperty("id") && $.questionTask["result"] === "0") { - if (flag) console.log(`\n开始做 品牌手机 【${data["data"]["brandName"]}】 任务`); - if (flag) flag = false; - console.log(`开始做答题任务 ${$.questionTask["question"]}`); + flag = true + if ($.questionTask.hasOwnProperty('id') && $.questionTask['result'] === '0') { + if(flag) console.log(`\n开始做 品牌手机 【${data['data']['brandName']}】 任务`) + if(flag) flag = false + console.log(`开始做答题任务 ${$.questionTask['question']}`); let result = 0; - for (let i = 0; i < $.questionTask["answers"].length; i++) { - if ($.questionTask["answers"][i]["right"]) { - result = i + 1; //正确答案 + for (let i = 0; i < $.questionTask['answers'].length; i ++) { + if ($.questionTask['answers'][i]['right']) { + result = i + 1;//正确答案 } } if (result !== 0) { - await doQuestion(brandId, $.questionTask["id"], result); + await doQuestion(brandId, $.questionTask['id'], result); } } } else { @@ -318,64 +311,64 @@ function brandTaskInfo(brandId) { } finally { resolve(data); } - }); + }) }); } function doQuestion(brandId, questionId, result) { - return new Promise((resolve) => { - const body = { brandId: `${brandId}`, questionId: `${questionId}`, result: result }; - const options = taskPostUrl("/khc/task/doQuestion", body); + return new Promise(resolve => { + const body = {"brandId":`${brandId}`,"questionId":`${questionId}`,"result":result}; + const options = taskPostUrl('/khc/task/doQuestion', body) $.post(options, (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`); - console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) } else { console.log(`doQuestion 领取答题任务奖励 结果:${data}`); data = JSON.parse(data); - if (data && data["code"] === 200) { - if (data["data"]["jingBean"]) $.beans += data["data"]["jingBean"]; + if (data && data['code'] === 200) { + if (data['data']['jingBean']) $.beans += data['data']['jingBean']; } } } catch (e) { - $.logErr(e, resp); + $.logErr(e, resp) } finally { resolve(data); } - }); - }); + }) + }) } //逛好货街,做任务 async function doBrowseshopTask() { - $.browseshopList = $.browseshopList.filter((v) => !!v && v["status"] === "6"); - if ($.browseshopList && $.browseshopList.length) console.log(`\n开始 【逛好货街,做任务】,需等待10秒`); + $.browseshopList = $.browseshopList.filter(v => !!v && v['status'] === "6"); + if ($.browseshopList && $.browseshopList.length) console.log(`\n开始 【逛好货街,做任务】,需等待10秒`) for (let shop of $.browseshopList) { - await doBrowse(shop["id"], "", "browseShop", "browse", "browseShop"); + await doBrowse(shop['id'], "", "browseShop", "browse", "browseShop"); await $.wait(10000); if ($.browseId) { - await getBrowsePrize($.browseId); + await getBrowsePrize($.browseId) } } } function indexInfo(flag = false) { - const options = taskPostUrl(`/khc/index/indexInfo`, {}); + const options = taskPostUrl(`/khc/index/indexInfo`, {}) $.hotProductList = []; $.brandList = []; $.browseshopList = []; - return new Promise((resolve) => { + return new Promise( (resolve) => { $.post(options, async (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`); - console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) } else { data = $.toObj(data); if (data.code === 200) { - $.hotProductList = data["data"]["hotProductList"]; - $.brandList = data["data"]["brandList"]; - $.browseshopList = data["data"]["browseshopList"]; + $.hotProductList = data['data']['hotProductList']; + $.brandList = data['data']['brandList']; + $.browseshopList = data['data']['browseshopList']; } else { - console.log(`异常:${JSON.stringify(data)}`); + console.log(`异常:${JSON.stringify(data)}`) } } } catch (e) { @@ -383,23 +376,23 @@ function indexInfo(flag = false) { } finally { resolve(); } - }); + }) }); } //获取助力信息 function supportList() { - const options = taskPostUrl("/khc/index/supportList", {}); - return new Promise((resolve) => { + const options = taskPostUrl('/khc/index/supportList', {}) + return new Promise( (resolve) => { $.post(options, async (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`); - console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) } else { data = JSON.parse(data); if (data.code === 200) { - console.log(`助力情况:${data["data"]["supportedNums"]}/${data["data"]["supportNeedNums"]}`); - message += `邀请好友助力:${data["data"]["supportedNums"]}/${data["data"]["supportNeedNums"]}\n`; + console.log(`助力情况:${data['data']['supportedNums']}/${data['data']['supportNeedNums']}`); + message += `邀请好友助力:${data['data']['supportedNums']}/${data['data']['supportNeedNums']}\n` } } } catch (e) { @@ -407,30 +400,30 @@ function supportList() { } finally { resolve(); } - }); + }) }); } //积分抽奖 function lottery() { - const options = taskPostUrl("/khc/record/lottery", {}); - return new Promise((resolve) => { + const options = taskPostUrl('/khc/record/lottery', {}) + return new Promise( (resolve) => { $.post(options, async (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`); - console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) } else { data = JSON.parse(data); if (data.code === 200) { if (data.data.prizeId !== 8) { //已中奖 - const url = "https://carnivalcity.m.jd.com/#/integralDetail"; + const url = 'https://carnivalcity.m.jd.com/#/integralDetail'; console.log(`积分抽奖获得:${data.data.prizeName}`); message += `积分抽奖获得:${data.data.prizeName}\n`; - $.msg($.name, "", `京东账号 ${$.index} ${$.nickName || $.UserName}\n积分抽奖获得:${data.data.prizeName}\n兑换地址:${url}`, { "open-url": url }); + $.msg($.name, '', `京东账号 ${$.index} ${$.nickName || $.UserName}\n积分抽奖获得:${data.data.prizeName}\n兑换地址:${url}`, { 'open-url': url }); if ($.isNode()) await notify.sendNotify($.name, `京东账号 ${$.index} ${$.nickName || $.UserName}\n积分抽奖获得:${data.data.prizeName}\n兑换地址:${url}`); } else { - console.log(`积分抽奖结果:${data["data"]["prizeName"]}}`); + console.log(`积分抽奖结果:${data['data']['prizeName']}}`); } } } @@ -439,31 +432,31 @@ function lottery() { } finally { resolve(); } - }); + }) }); } //查询抽奖记录(未兑换的) function check() { - const options = taskPostUrl("/khc/record/convertRecord", { pageNum: 1 }); - return new Promise((resolve) => { + const options = taskPostUrl('/khc/record/convertRecord', { pageNum: 1 }) + return new Promise( (resolve) => { $.post(options, async (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`); - console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) } else { data = JSON.parse(data); - let str = ""; + let str = ''; if (data.code === 200) { for (let obj of data.data) { - if (obj.hasOwnProperty("fillStatus") && obj.fillStatus !== true) { + if (obj.hasOwnProperty('fillStatus') && obj.fillStatus !== true) { str += JSON.stringify(obj); } } } if (str.length > 0) { - const url = "https://api.m.jd.com/api/#/integralDetail"; - $.msg($.name, "", `京东账号 ${$.index} ${$.nickName || $.UserName}\n积分抽奖获得:${str}\n兑换地址:${url}`, { "open-url": url }); + const url = 'https://carnivalcity.m.jd.com/#/integralDetail'; + $.msg($.name, '', `京东账号 ${$.index} ${$.nickName || $.UserName}\n积分抽奖获得:${str}\n兑换地址:${url}`, { 'open-url': url }); if ($.isNode()) await notify.sendNotify($.name, `京东账号 ${$.index} ${$.nickName || $.UserName}\n积分抽奖获得:${str}\n兑换地址:${url}`); } } @@ -472,123 +465,123 @@ function check() { } finally { resolve(); } - }); + }) }); } function myRank() { - return new Promise((resolve) => { + return new Promise(resolve => { const options = taskPostUrl("/khc/rank/myPastRanks", {}); $.post(options, async (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`); - console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) } else { data = JSON.parse(data); if (data.code === 200) { if (data.data && data.data.length) { for (let i = 0; i < data.data.length; i++) { - $.date = data.data[i]["date"]; - if (data.data[i].status === "1") { - console.log(`开始领取往期奖励【${data.data[i]["prizeName"]}】`); + $.date = data.data[i]['date']; + if (data.data[i].status === '1') { + console.log(`开始领取往期奖励【${data.data[i]['prizeName']}】`) let res = await saveJbean($.date); // console.log('领奖结果', res) if (res && res.code === 200) { $.beans += Number(res.data); - console.log(`${data.data[i]["date"]}日 【${res.data}】京豆奖励领取成功`); + console.log(`${data.data[i]['date']}日 【${res.data}】京豆奖励领取成功`) } else { console.log(`往期奖励领取失败:${JSON.stringify(res)}`); } await $.wait(500); - } else if (data.data[i].status === "3") { - console.log(`${data.data[i]["date"]}日 【${data.data[i]["prizeName"]}】往期京豆奖励已领取~`); + } else if (data.data[i].status === '3') { + console.log(`${data.data[i]['date']}日 【${data.data[i]['prizeName']}】往期京豆奖励已领取~`) } else { - console.log(`${data.data[i]["date"]}日 【${data.data[i]["status"]}】往期京豆奖励,今日争取进入前30000名哦~`); + console.log(`${data.data[i]['date']}日 【${data.data[i]['status']}】往期京豆奖励,今日争取进入前30000名哦~`) } } } } } } catch (e) { - $.logErr(e, resp); + $.logErr(e, resp) } finally { resolve(data); } - }); - }); + }) + }) } //领取往期奖励API function saveJbean(date) { - return new Promise((resolve) => { - const body = "date=" + date; - const options = taskPostUrl("/khc/rank/getRankJingBean", body); + return new Promise(resolve => { + const body = {"date":`${date}`}; + const options = taskPostUrl('/khc/rank/getRankJingBean', body) $.post(options, (err, resp, data) => { try { // console.log('领取京豆结果', data); if (err) { - console.log(`${JSON.stringify(err)}`); - console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) } else { data = JSON.parse(data); } } catch (e) { - $.logErr(e, resp); + $.logErr(e, resp) } finally { resolve(data); } - }); - }); + }) + }) } async function doHelp() { console.log(`\n开始助力好友`); for (let i in $.newShareCodes) { - let item = $.newShareCodes[i]; + let item = $.newShareCodes[i] if (!item) continue; const helpRes = await toHelp(item.trim()); if (helpRes.data.status === 5) { console.log(`助力机会已耗尽,跳出助力`); break; - } else if (helpRes.data.status === 4) { + }else if (helpRes.data.status === 4){ console.log(`该助力码[${item}]已达上限`); - $.newShareCodes[i] = ""; + $.newShareCodes[i] = '' } } } //助力API -function toHelp(code = "ca5cb827-4f0d-4133-85cc-9059ef8588e0") { - return new Promise((resolve) => { - const body = { shareId: `${code}` }; - const options = taskPostUrl("/khc/task/doSupport", body); +function toHelp(code = "576faa38-201c-4fc3-aef8-913d4994c32b") { + return new Promise(resolve => { + const body = {"shareId":`${code}`}; + const options = taskPostUrl('/khc/task/doSupport', body) $.post(options, (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`); - console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) } else { console.log(`助力结果:${data}`); data = JSON.parse(data); - if (data && data["code"] === 200) { - if (data["data"]["status"] === 6) console.log(`助力成功\n`); - if (data["data"]["jdNums"]) $.beans += data["data"]["jdNums"]; + if (data && data['code'] === 200) { + if (data['data']['status'] === 6) console.log(`助力成功\n`) + if (data['data']['jdNums']) $.beans += data['data']['jdNums']; } } } catch (e) { - $.logErr(e, resp); + $.logErr(e, resp) } finally { resolve(data); } - }); - }); + }) + }) } //获取邀请码API function getHelp() { - return new Promise((resolve) => { + return new Promise(resolve => { const options = taskPostUrl("/khc/task/getSupport", {}); $.post(options, async (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`); - console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) } else { data = JSON.parse(data); if (data.code === 200) { @@ -597,29 +590,29 @@ function getHelp() { $.temp.push(data.data.shareId); } else { console.log(`获取邀请码失败:${JSON.stringify(data)}`); - if (data.code === 1002) $.blockAccount = true; + if (data.code === 1002 || data.code === 1001) $.blockAccount = true; } } } catch (e) { - $.logErr(e, resp); + $.logErr(e, resp) } finally { resolve(data); } - }); - }); + }) + }) } //获取当前活动总京豆数量 function getListJbean() { - return new Promise((resolve) => { + return new Promise(resolve => { const body = { - pageNum: ``, - }; + pageNum: `` + } const options = taskPostUrl("/khc/record/jingBeanRecord", body); $.post(options, async (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`); - console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) } else { data = JSON.parse(data); if (data.code === 200) { @@ -630,32 +623,32 @@ function getListJbean() { } } } catch (e) { - $.logErr(e, resp); + $.logErr(e, resp) } finally { resolve(data); } - }); - }); + }) + }) } //查询累计获得积分 function getListIntegral() { - return new Promise((resolve) => { + return new Promise(resolve => { const body = { - pageNum: ``, - }; + pageNum: `` + } const options = taskPostUrl("/khc/record/integralRecord", body); $.post(options, async (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`); - console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) } else { data = JSON.parse(data); if (data.code === 200) { - $.integralCount = data.data.integralNum || 0; //累计活动积分 + $.integralCount = data.data.integralNum || 0;//累计活动积分 message += `累计获得积分:${$.integralCount}\n`; console.log(`开始抽奖,当前积分可抽奖${parseInt($.integralCount / 50)}次\n`); - for (let i = 0; i < parseInt($.integralCount / 50); i++) { + for (let i = 0; i < parseInt($.integralCount / 50); i ++) { await lottery(); await $.wait(500); } @@ -664,104 +657,142 @@ function getListIntegral() { } } } catch (e) { - $.logErr(e, resp); + $.logErr(e, resp) } finally { resolve(data); } - }); - }); + }) + }) } //查询今日累计积分与排名 function getListRank() { - return new Promise((resolve) => { + return new Promise(resolve => { const options = taskPostUrl("/khc/rank/dayRank", {}); $.post(options, async (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`); - console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) } else { data = JSON.parse(data); if (data.code === 200) { if (data.data.myRank) { - $.integer = data.data.myRank.integral; //当前获得积分 - $.num = data.data.myRank.rank; //当前排名 + $.integer = data.data.myRank.integral;//当前获得积分 + $.num = data.data.myRank.rank;//当前排名 message += `当前获得积分:${$.integer}\n`; message += `当前获得排名:${$.num}\n`; } if (data.data.lastRank) { - $.lasNum = data.data.lastRank.rank; //当前参加活动人数 + $.lasNum = data.data.lastRank.rank;//当前参加活动人数 message += `当前参赛人数:${$.lasNum}\n`; } } } } catch (e) { - $.logErr(e, resp); + $.logErr(e, resp) } finally { resolve(data); } - }); - }); + }) + }) } +function updateShareCodesCDN(url = 'https://cdn.jsdelivr.net/gh/smiek2221/updateTeam@master/shareCodes/jd_cityShareCodes.json') { + return new Promise(resolve => { + $.get({url , headers:{"User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1")}, timeout: 200000}, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + $.updatePkActivityIdRes = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} //格式化助力码 function shareCodesFormat() { - return new Promise(async (resolve) => { + return new Promise(async resolve => { // console.log(`第${$.index}个京东账号的助力码:::${$.shareCodesArr[$.index - 1]}`) $.newShareCodes = []; if ($.shareCodesArr[$.index - 1]) { - $.newShareCodes = $.shareCodesArr[$.index - 1].split("@"); + $.newShareCodes = $.shareCodesArr[$.index - 1].split('@'); } else { // console.log(`由于您第${$.index}个京东账号未提供shareCode,将采纳本脚本自带的助力码\n`) - const tempIndex = $.index > inviteCodes.length ? inviteCodes.length - 1 : $.index - 1; - $.newShareCodes = (inviteCodes[tempIndex] && inviteCodes[tempIndex].split("@")) || []; + const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); + $.newShareCodes = inviteCodes[tempIndex] && inviteCodes[tempIndex].split('@') || []; if ($.updatePkActivityIdRes && $.updatePkActivityIdRes.length) $.newShareCodes = [...$.updatePkActivityIdRes, ...$.newShareCodes]; } + // console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) resolve(); - }); + }) +} +function requireConfig() { + return new Promise(resolve => { + console.log(`开始获取${$.name}配置文件\n`); + let shareCodes = []; + if ($.isNode()) { + if (process.env.JD818_SHARECODES) { + if (process.env.JD818_SHARECODES.indexOf('\n') > -1) { + shareCodes = process.env.JD818_SHARECODES.split('\n'); + } else { + shareCodes = process.env.JD818_SHARECODES.split('&'); + } + } + } + console.log(`共${cookiesArr.length}个京东账号\n`); + $.shareCodesArr = []; + if ($.isNode()) { + Object.keys(shareCodes).forEach((item) => { + if (shareCodes[item]) { + $.shareCodesArr.push(shareCodes[item]) + } + }) + } + console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); + resolve() + }) } -function taskPostUrl(a, t = {}) { - const body = $.toStr({ ...t, apiMapping: `${a}` }); +function taskPostUrl(a,t = {}) { + const body = $.toStr({...t,"apiMapping":`${a}`}) return { url: `${JD_API_HOST}`, body: `appid=guardian-starjd&functionId=carnivalcity_jd_prod&body=${body}&t=${Date.now()}&loginType=2`, headers: { - Accept: "application/json, text/plain, */*", + "Accept": "application/json, text/plain, */*", "Accept-Encoding": "gzip, deflate, br", "Accept-Language": "zh-cn", - Connection: "keep-alive", + "Connection": "keep-alive", "Content-Type": "application/x-www-form-urlencoded", - Origin: "https://carnivalcity.m.jd.com", - Referer: "https://carnivalcity.m.jd.com/", - Cookie: cookie, + "Origin": "https://carnivalcity.m.jd.com", + "Referer": "https://carnivalcity.m.jd.com/", + "Cookie": cookie, "User-Agent": $.UA, - }, - }; + } + } } async function showMsg() { if ($.beans) { - allMessage += `京东账号${$.index} ${$.nickName || $.UserName}\n本次运行获得:${ - $.beans - }京豆\n${message}活动地址:https://carnivalcity.m.jd.com/#/home?shareId=ddd345fb-57bb-4ece-968b-7bf4c92be7cc&t=${Date.now()}${$.index !== cookiesArr.length ? "\n\n" : ""}`; + allMessage += `京东账号${$.index} ${$.nickName || $.UserName}\n本次运行获得:${$.beans}京豆\n${message}活动地址:https://carnivalcity.m.jd.com${$.index !== cookiesArr.length ? '\n\n' : ''}` } - $.msg($.name, `京东账号${$.index} ${$.nickName || $.UserName}`, `${message}具体详情点击弹窗跳转后即可查看`, { - "open-url": "https://carnivalcity.m.jd.com/#/home?shareId=ddd345fb-57bb-4ece-968b-7bf4c92be7cc&t=" + Date.now(), - }); + $.msg($.name, `京东账号${$.index} ${$.nickName || $.UserName}`, `${message}具体详情点击弹窗跳转后即可查看`, {"open-url": "https://carnivalcity.m.jd.com"}); } -function getUA() { - $.UA = `jdapp;iPhone;10.0.10;14.3;${randomString( - 40 - )};network/wifi;model/iPhone12,1;addressid/4199175193;appBuild/167741;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`; +function getUA(){ + $.UA = `jdapp;iPhone;10.0.10;14.3;${randomString(40)};network/wifi;model/iPhone12,1;addressid/4199175193;appBuild/167741;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` } function randomString(e) { e = e || 32; - let t = "abcdef0123456789", - a = t.length, - n = ""; - for (i = 0; i < e; i++) n += t.charAt(Math.floor(Math.random() * a)); - return n; -} + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} \ No newline at end of file diff --git a/jd_car.js b/jd_car.js index e8bd1ee..7b19695 100755 --- a/jd_car.js +++ b/jd_car.js @@ -1,26 +1,28 @@ /* 京东汽车,签到满500赛点可兑换500京豆,一天运行一次即可 长期活动 -活动入口:京东APP首页-京东汽车-屏幕右中部,车主福利 -更新地址:https://gitee.com/lxk0301/jd_scripts/raw/master/jd_car.js +活动入口:首页👉京东汽车👉屏幕右中部,车主福利 +更新地址:https://raw.githubusercontent.com/LXK9301/jd_scripts/master/jd_car.js 已支持IOS双京东账号, Node.js支持N个京东账号 脚本兼容: QuantumultX, Surge, Loon, 小火箭,JSBox, Node.js ============Quantumultx=============== [task_local] #京东汽车 -10 7 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_car.js, tag=京东汽车, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_redPacket.png, enabled=true +10 7 * * * https://raw.githubusercontent.com/LXK9301/jd_scripts/master/jd_car.js, tag=京东汽车, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_redPacket.png, enabled=true ================Loon============== [Script] -cron "10 7 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_car.js, tag=京东汽车 +cron "10 7 * * *" script-path=https://raw.githubusercontent.com/LXK9301/jd_scripts/master/jd_car.js, tag=京东汽车 ===============Surge================= -京东汽车 = type=cron,cronexp="10 7 * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_car.js +京东汽车 = type=cron,cronexp="10 7 * * *",wake-system=1,timeout=20,script-path=https://raw.githubusercontent.com/LXK9301/jd_scripts/master/jd_car.js ============小火箭========= -京东汽车 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_car.js, cronexpr="10 7 * * *", timeout=3600, enable=true +京东汽车 = type=cron,script-path=https://raw.githubusercontent.com/LXK9301/jd_scripts/master/jd_car.js, cronexpr="10 7 * * *", timeout=200, enable=true */ -const $ = new Env('京东汽车'); +const jd_helpers = require("./utils/JDHelpers.js"); +const jd_env = require("./utils/JDEnv.js"); +const $ = jd_env.env("京东汽车"); const notify = $.isNode() ? require('./sendNotify') : ''; //Node.js用户请在jdCookie.js处填写京东ck; @@ -36,7 +38,13 @@ if ($.isNode()) { if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; } else { - cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = jd_helpers.jsonParse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => item !== "" && item !== null && item !== undefined); } const JD_API_HOST = 'https://car-member.jd.com/api/'; !(async () => { @@ -47,7 +55,7 @@ const JD_API_HOST = 'https://car-member.jd.com/api/'; for (let i = 0; i < cookiesArr.length; i++) { if (cookiesArr[i]) { cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) $.index = i + 1; $.isLogin = true; $.nickName = ''; @@ -99,7 +107,7 @@ function check() { console.log(`${data.error.msg}`) message += `签到失败,${data.error.msg}\n` } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); console.log(`兑换结果:${JSON.stringify(data)}`) } @@ -122,7 +130,7 @@ function sign() { console.log(`${data.error.msg}`) message += `签到失败,${data.error.msg}\n` } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.status) { console.log(`签到成功,获得${data.data.point},已签到${data.data.signDays}天`) @@ -147,7 +155,7 @@ function mission() { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.status) { let missions = data.data.missionList @@ -179,7 +187,7 @@ function doMission(missionId) { data = JSON.parse(resp.body) console.log(`${data.error.msg}`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.status) { console.log("任务领取成功") @@ -204,7 +212,7 @@ function receiveMission(missionId) { data = JSON.parse(resp.body) console.log(`${data.error.msg}`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.status) { console.log("任务完成成功") @@ -228,7 +236,7 @@ function getPoint() { data = JSON.parse(resp.body) console.log(`${data.error.msg}`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.status) { if (data.data.remainPoint >= data.data.oncePoint) { @@ -262,7 +270,7 @@ function taskUrl(function_id, body = {}) { "Host": "car-member.jd.com", "Referer": "https://h5.m.jd.com/babelDiy/Zeus/44bjzCpzH9GpspWeBzYSqBA7jEtP/index.html", "Cookie": cookie, - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), } } } @@ -281,7 +289,7 @@ function taskPostUrl(function_id, body = {}) { "activityid": "39443aee3ff74fcb806a6f755240d127", "Referer": "https://h5.m.jd.com/babelDiy/Zeus/44bjzCpzH9GpspWeBzYSqBA7jEtP/index.html", "Cookie": cookie, - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), } } } @@ -298,7 +306,7 @@ function TotalBean() { "Connection": "keep-alive", "Cookie": cookie, "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0") } } $.post(options, (err, resp, data) => { @@ -313,11 +321,7 @@ function TotalBean() { $.isLogin = false; //cookie过期 return } - if (data['retcode'] === 0) { - $.nickName = (data['base'] && data['base'].nickname) || $.UserName; - } else { - $.nickName = $.UserName - } + $.nickName = data['base'].nickname; } else { console.log(`京东服务器返回空数据`) } @@ -329,29 +333,4 @@ function TotalBean() { } }) }) -} - -function safeGet(data) { - try { - if (typeof JSON.parse(data) == "object") { - return true; - } - } catch (e) { - console.log(e); - console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); - return false; - } -} -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') - return []; - } - } -} -// prettier-ignore -function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} +} \ No newline at end of file diff --git a/jd_car_exchange.js b/jd_car_exchange.js index 130617f..686dfca 100755 --- a/jd_car_exchange.js +++ b/jd_car_exchange.js @@ -2,193 +2,183 @@ 京东汽车兑换,500赛点兑换500京豆 长期活动 -活动入口:京东APP首页-京东汽车-屏幕右中部,车主福利 +活动入口 +京东APP:首页👉京东汽车兑换👉屏幕右中部,车主福利 活动网页地址:https://h5.m.jd.com/babelDiy/Zeus/44bjzCpzH9GpspWeBzYSqBA7jEtP/index.html#/journey -更新地址:https://gitee.com/lxk0301/jd_scripts/raw/master/jd_car_exchange +更新地址:https://raw.githubusercontent.com/LXK9301/jd_scripts/master/jd_car_exchange 已支持IOS, Node.js支持N个京东账号 脚本兼容: QuantumultX, Surge, Loon, 小火箭,JSBox, Node.js ============Quantumultx=============== [task_local] #京东汽车兑换 -0 0 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_car_exchange.js, tag=京东汽车兑换, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_redPacket.png, enabled=true +0 0 * * * https://raw.githubusercontent.com/LXK9301/jd_scripts/master/jd_car_exchange.js, tag=京东汽车兑换, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_redPacket.png, enabled=true ================Loon============== [Script] -cron "0 0 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_car_exchange.js, tag=京东汽车兑换 +cron "0 0 * * *" script-path=https://raw.githubusercontent.com/LXK9301/jd_scripts/master/jd_car_exchange.js, tag=京东汽车兑换 ===============Surge================= -京东汽车兑换 = type=cron,cronexp="0 0 * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_car_exchange.js +京东汽车兑换 = type=cron,cronexp="0 0 * * *",wake-system=1,timeout=2000,script-path=https://raw.githubusercontent.com/LXK9301/jd_scripts/master/jd_car_exchange.js ============小火箭========= -京东汽车兑换 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_car_exchange.js, cronexpr="0 0 * * *", timeout=3600, enable=true +京东汽车兑换 = type=cron,script-path=https://raw.githubusercontent.com/LXK9301/jd_scripts/master/jd_car_exchange.js, cronexpr="0 0 * * *", timeout=2000, enable=true */ -const $ = new Env('京东汽车兑换'); +const jd_helpers = require("./utils/JDHelpers.js"); +const jd_env = require("./utils/JDEnv.js"); +const $ = jd_env.env("京东汽车兑换"); -const notify = $.isNode() ? require('./sendNotify') : ''; +const notify = $.isNode() ? require("./sendNotify") : ""; //Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; -let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +let jdNotify = true; //是否关闭通知,false打开通知推送,true关闭通知推送 const randomCount = $.isNode() ? 20 : 5; //IOS等用户直接用NobyDa的jd cookie -let cookiesArr = [], cookie = '', message; +let cookiesArr = [], + cookie = "", + message; if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { - cookiesArr.push(jdCookieNode[item]) - }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { - }; + cookiesArr.push(jdCookieNode[item]); + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; } else { - cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + let cookiesData = $.getdata("CookiesJD") || "[]"; + cookiesData = jd_helpers.jsonParse(cookiesData); + cookiesArr = cookiesData.map((item) => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata("CookieJD2"), $.getdata("CookieJD")]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter((item) => item !== "" && item !== null && item !== undefined); } -const JD_API_HOST = 'https://car-member.jd.com/api/'; +const JD_API_HOST = "https://car-member.jd.com/api/"; !(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"}); + $.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/bean/signIndex.action", { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); return; } - for (let j = 0; j < 2; ++j) + for (let j = 0; j < 20; ++j) for (let i = 0; i < cookiesArr.length; i++) { if (cookiesArr[i]) { cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]); $.index = i + 1; - console.log(`*********京东账号${$.index} ${$.UserName}*********`) + console.log(`京东账号${$.index} ${$.UserName}`); $.isLogin = true; - $.nickName = ''; - message = ''; + $.nickName = ""; + message = ""; await jdCar(); - await $.wait(2000) } } })() .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); }) .finally(() => { $.done(); - }) + }); async function jdCar() { - await exchange() + await exchange(); } function showMsg() { - return new Promise(resolve => { - $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); - resolve() - }) + return new Promise((resolve) => { + $.msg($.name, "", `【京东账号${$.index}】${$.nickName}\n${message}`); + resolve(); + }); } function exchange() { - return new Promise(resolve => { - $.get(taskUrl('v1/user/exchange/bean/check'), (err, resp, data) => { + return new Promise((resolve) => { + $.post(taskUrl("v1/user/exchange/bean"), (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`) - //console.log(`${$.name} user/exchange/bean API请求失败,请检查网路重试\n`) + data = JSON.parse(resp.body); } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); - console.log(`兑换结果:${JSON.stringify(data)}\n`) + console.log(`兑换结果:${JSON.stringify(data)}`); } } } catch (e) { - $.logErr(e, resp) + $.logErr(e, resp); } finally { resolve(); } - }) - }) + }); + }); } function taskUrl(function_id, body = {}) { return { url: `${JD_API_HOST}${function_id}?timestamp=${new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000}`, headers: { - "Accept": "application/json,text/plain,*/*", + Accept: "*/*", "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-CN,en-US;q=0.9", - "Connection": "keep-alive", + "Accept-Language": "zh-cn", + Connection: "keep-alive", "Content-Type": "application/x-www-form-urlencoded", - "Host": "car-member.jd.com", - 'activityid': '39443aee3ff74fcb806a6f755240d127', - 'origin': 'https://h5.m.jd.com', - "Referer": "https://h5.m.jd.com/babelDiy/Zeus/44bjzCpzH9GpspWeBzYSqBA7jEtP/index.html", - "Cookie": cookie, - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), - } - } + Host: "car-member.jd.com", + activityid: "39443aee3ff74fcb806a6f755240d127", + origin: "https://h5.m.jd.com", + Referer: "https://h5.m.jd.com/babelDiy/Zeus/44bjzCpzH9GpspWeBzYSqBA7jEtP/index.html", + Cookie: cookie, + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : require("./USER_AGENTS").USER_AGENT + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0", + }, + }; } - function TotalBean() { - return new Promise(async resolve => { + return new Promise(async (resolve) => { const options = { - "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, - "headers": { - "Accept": "application/json,text/plain, */*", + url: `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + headers: { + Accept: "application/json,text/plain, */*", "Content-Type": "application/x-www-form-urlencoded", "Accept-Encoding": "gzip, deflate, br", "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") - } - } + Connection: "keep-alive", + Cookie: cookie, + Referer: "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : require("./USER_AGENTS").USER_AGENT + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0", + }, + }; $.post(options, (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); } else { if (data) { data = JSON.parse(data); - if (data['retcode'] === 13) { + if (data["retcode"] === 13) { $.isLogin = false; //cookie过期 - return - } - if (data['retcode'] === 0) { - $.nickName = (data['base'] && data['base'].nickname) || $.UserName; - } else { - $.nickName = $.UserName + return; } + $.nickName = data["base"].nickname; } else { - console.log(`京东服务器返回空数据`) + console.log(`京东服务器返回空数据`); } } } catch (e) { - $.logErr(e, resp) + $.logErr(e, resp); } finally { resolve(); } - }) - }) + }); + }); } - -function safeGet(data) { - try { - if (typeof JSON.parse(data) == "object") { - return true; - } - } catch (e) { - console.log(e); - console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); - return false; - } -} -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') - return []; - } - } -} -// prettier-ignore -function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_cash.js b/jd_cash.js index 5c6da73..cbe5410 100755 --- a/jd_cash.js +++ b/jd_cash.js @@ -8,19 +8,21 @@ ============Quantumultx=============== [task_local] #签到领现金 -2 0-23/4 * * * jd_cash.js, tag=签到领现金, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +2 0-23/4 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_cash.js, tag=签到领现金, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true ================Loon============== [Script] -cron "2 0-23/4 * * *" script-path=jd_cash.js,tag=签到领现金 +cron "2 0-23/4 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_cash.js,tag=签到领现金 ===============Surge================= -签到领现金 = type=cron,cronexp="2 0-23/4 * * *",wake-system=1,timeout=3600,script-path=jd_cash.js +签到领现金 = type=cron,cronexp="2 0-23/4 * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_cash.js ============小火箭========= -签到领现金 = type=cron,script-path=jd_cash.js, cronexpr="2 0-23/4 * * *", timeout=3600, enable=true +签到领现金 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_cash.js, cronexpr="2 0-23/4 * * *", timeout=3600, enable=true */ -const $ = new Env('签到领现金'); +const jd_helpers = require("./utils/JDHelpers.js"); +const jd_env = require("./utils/JDEnv.js"); +const $ = jd_env.env("签到领现金"); const notify = $.isNode() ? require('./sendNotify') : ''; //Node.js用户请在jdCookie.js处填写京东ck; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; @@ -28,10 +30,10 @@ let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭 //IOS等用户直接用NobyDa的jd cookie let cookiesArr = [], cookie = '', message; let helpAuthor = true; -const randomCount = $.isNode() ? 5 : 0; +const randomCount = 0; let cash_exchange = false;//是否消耗2元红包兑换200京豆,默认否 const inviteCodes = [ - `eU9Yau6yNPkm9zrVzHsb3w@eU9YLarDP6Z1rRq8njtZ@eU9YN6nLObVHriuNuA9O` + 'eU9Yau6yNPkm9zrVzHsb3w@eU9YLarDP6Z1rRq8njtZ@eU9YN6nLObVHriuNuA9O' ] if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { @@ -39,7 +41,7 @@ if ($.isNode()) { }) 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); + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...jd_helpers.jsonParse($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); } const JD_API_HOST = 'https://api.m.jd.com/client.action'; let allMessage = ''; @@ -49,12 +51,6 @@ let allMessage = ''; return; } await requireConfig() - $.authorCode = await getAuthorShareCode('https://raw.githubusercontent.com/Aaron-lv/updateTeam/master/shareCodes/jd_updateCash.json') - if (!$.authorCode) { - $.http.get({url: 'https://purge.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/jd_updateCash.json'}).then((resp) => {}).catch((e) => $.log('刷新CDN异常', e)); - await $.wait(1000) - $.authorCode = await getAuthorShareCode('https://cdn.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/jd_updateCash.json') || [] - } for (let i = 0; i < cookiesArr.length; i++) { if (cookiesArr[i]) { cookie = cookiesArr[i]; @@ -91,7 +87,7 @@ async function jdCash() { $.signMoney = 0; await index() await shareCodesFormat() - await helpFriends() + // await helpFriends() await getReward() await getReward('2'); $.exchangeBeanNum = 0; @@ -129,7 +125,7 @@ function index(info=false) { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if(data.code===0 && data.data.result){ if(info){ @@ -209,7 +205,7 @@ function helpFriend(helpInfo) { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if( data.code === 0 && data.data.bizCode === 0){ console.log(`助力成功,获得${data.data.result.cashStr}`) @@ -238,7 +234,7 @@ function doTask(type,taskInfo) { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if( data.code === 0){ console.log(`任务完成成功`) @@ -264,7 +260,7 @@ function getReward(source = 1) { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.code === 0 && data.data.bizCode === 0) { console.log(`领奖成功,${data.data.result.shareRewardTip}【${data.data.result.shareRewardAmount}】`) @@ -317,7 +313,7 @@ function exchange2(node) { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data['code'] === 0) { if (data.data.bizCode === 0) { @@ -390,10 +386,10 @@ function shareCodesFormat() { let authorCode = deepCopy($.authorCode) $.newShareCodes = [...(authorCode.map((item, index) => authorCode[index] = item['inviteCode'])), ...$.newShareCodes]; } - const readShareCodeRes = await readShareCode(); - if (readShareCodeRes && readShareCodeRes.code === 200) { - $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; - } + // const readShareCodeRes = await readShareCode(); + // if (readShareCodeRes && readShareCodeRes.code === 200) { + // $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; + // } $.newShareCodes.map((item, index) => $.newShareCodes[index] = { "inviteCode": item, "shareDate": $.shareDate }) console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) resolve(); @@ -423,7 +419,7 @@ function requireConfig() { }) } else { if ($.getdata('jd_cash_invite')) $.shareCodesArr = $.getdata('jd_cash_invite').split('\n').filter(item => !!item); - console.log(`\nBoxJs设置的京东签到领现金邀请码:${$.getdata('jd_cash_invite')}\n`); + console.log(`\nBoxJs设置的领现金邀请码:${$.getdata('jd_cash_invite')}\n`); } console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); resolve() @@ -462,39 +458,6 @@ function taskUrl(functionId, body = {}) { } } -function getAuthorShareCode(url) { - return new Promise(resolve => { - const options = { - url: `${url}?${new Date()}`, "timeout": 10000, headers: { - "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" - } - }; - if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { - const tunnel = require("tunnel"); - const agent = { - https: tunnel.httpsOverHttp({ - proxy: { - host: process.env.TG_PROXY_HOST, - port: process.env.TG_PROXY_PORT * 1 - } - }) - } - Object.assign(options, { agent }) - } - $.get(options, async (err, resp, data) => { - try { - if (err) { - } else { - if (data) data = JSON.parse(data) - } - } catch (e) { - // $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} function TotalBean() { return new Promise(async resolve => { const options = { @@ -538,28 +501,4 @@ function TotalBean() { } }) }) -} -function safeGet(data) { - try { - if (typeof JSON.parse(data) == "object") { - return true; - } - } catch (e) { - console.log(e); - console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); - return false; - } -} -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') - return []; - } - } -} -// prettier-ignore -function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file +} \ No newline at end of file diff --git a/jd_cash_exchange.js b/jd_cash_exchange.js new file mode 100755 index 0000000..00350c9 --- /dev/null +++ b/jd_cash_exchange.js @@ -0,0 +1,106 @@ +/* +签到领现金兑换 +需要填写exchangeAccounts参数,兑换多少取决于app内显示,默认为所有账号兑换10红包,部分账号会出现参数错误的提示。指定账号+金额应这样填写 export exchangeAccounts="pt_pin1@2&pt_pin2@10" +0 0 * * * jd_cash_exchange.js +*/ +const jd_helpers = require("./utils/JDHelpers.js"); +const jd_env = require("./utils/JDEnv.js"); +const $ = jd_env.env("签到领现金兑换"); +const ua = `jdltapp;iPhone;3.1.0;${Math.ceil(Math.random() * 4 + 10)}.${Math.ceil(Math.random() * 4)};${randomString(40)}`; +let cookiesArr = []; +var exchangeAccounts = process.env.exchangeAccounts ?? ""; +let amount = 10; +!(async () => { + if (exchangeAccounts) { + v = exchangeAccounts.split("&"); + exchangeAccounts = {}; + for (var i of v) { + j = i.split("@"); + exchangeAccounts[j[0]] = j[1] ? +j[1] : 10; + } + } + await requireConfig(); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + pt_pin = cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]; + amount = 0; + if (exchangeAccounts) { + amount = exchangeAccounts[pt_pin]; + if (!amount) continue; + } + exchange(cookie, amount, pt_pin); + } + } + await $.wait(3000); +})(); +function exchange(cookie, amount, pt_pin) { + body = ""; + if (amount == 2) { + body = `adid=41CBA646-6EA3-4E79-8623-680F74A5FD7D&body={"type":"2","amount":"200"}&build=167724&client=apple&clientVersion=10.0.6&d_brand=apple&d_model=iPhone10,4&eid=eidI56d7812024s3J0UGWUp+RVK4+9/EY14sMidFB85YSXDSHPI9r07frvvGbXtVFQYuMENUoWFIARXaAYlZNGDyc8dfGQqd42Fer11K0PRjAQjbTBp5&isBackground=N&joycious=79&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=96ca9290eae9f41770e2c16fd4d07c67eb06b445&osVersion=14.4.2&partner=apple&rfs=0000&scope=10&screen=750*1334&sign=1be417384d1ffccde3dbf6a207277706&st=1625756188161&sv=111&uemps=0-0&uts=0f31TVRjBSsqndu4/jgUPz6uymy50MQJCNy5Ou1kywjunNJYhK2mQzTDwvkNHz8d6J9JA+AN8f7dHT8E/pp+/K+s+/hw3ktfXf7rIWQ3qVqjrVZ8RJpuJJq5WCCsy0wGM2uum+4ppHaNVwnSBrL/ZniFeKJAAxcyCaBFHBfNkP1t3YA8CtB8pQTjm5pvQ/eWyy8qqiBgfB+iPthLx1deRA==&uuid=hjudwgohxzVu96krv/T6Hg==`; + } else { + amount = 10; + body = `adid=A23D8ECF-B992-477E-BA88-A5E7680DD8F6&body={"type":"2","amount":"1000"}&build=167638&client=apple&clientVersion=9.5.0&eid=eidI5E4E0119RTBCMkMxNEMtNjgxQi00NQ==20v8iy1ivQ9DClEjHXmgvcd5v2MhcsarbJkOkdI5EZKIlK2CiFmfRE6MG017DU87QAHcuwoYwkjGXGws&isBackground=N&joycious=61&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=3245ad3d16ab2153c69f9ca91cd2e931b06a3bb8&osVersion=13.6.1&rfs=0000&scope=11&screen=1242*2208&sign=427a28328d1650d4c553c1cfdf25744c&st=1618885128891&sv=100&uemps=0-0&uts=0f31TVRjBSsqndu4/jgUPz6uymy50MQJ/+MrMjk4y13kWuMN4VaxQad1iD1QgEcDK/YYLWTuOPAd1akjd5yd8GStO+tvG+FdogNDbDiKjvQgXieBZsBtY63e8GaM2SFD74E/SCZQOKBCgUHo9/gWatL87O9NO0DFzwx44pkT4mA7/S1gDn01AyEbB70wvtsnPtixLxroKuYYDIBNepnJLQ==&uuid=hjudwgohxzVu96krv/T6Hg==`; + } + $.post( + { + url: "https://api.m.jd.com/client.action?functionId=cash_getRedPacket", + headers: { + Cookie: cookie, + Accept: "*/*", + Connection: "keep-alive", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": ua, + "Accept-Language": "zh-Hans-CN;q=1", + Host: "api.m.jd.com", + "Content-Type": "application/x-www-form-urlencoded", + }, + body: body, + }, + (err, resp, data) => { + try { + data = JSON.parse(data); + if (data.data) { + if (data.data.bizMsg.indexOf("success") != -1) { + data.data.bizMsg = `成功兑换${amount}元红包`; + + notify.sendNotify(`签到领现金账号 ${decodeURIComponent(pt_pin)}`, data.data.bizMsg); + } + } + if (data.errorMessage) { + console.log(data.errorMessage); + } + } catch (e) { + $.logErr("Error: ", e, resp); + } + } + ); +} + +function requireConfig() { + return new Promise((resolve) => { + notify = $.isNode() ? require("./sendNotify") : ""; + const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]); + } + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; + } else { + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...jd_helpers.jsonParse($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); + } + console.log(`共${cookiesArr.length}个京东账号\n`); + resolve(); + }); +} + +function randomString(e) { + e = e || 32; + let t = "abcdefhijkmnprstwxyz2345678", + a = t.length, + n = ""; + for (i = 0; i < e; i++) n += t.charAt(Math.floor(Math.random() * a)); + return n; +} \ No newline at end of file diff --git a/jd_cfd_loop.js b/jd_cfd_loop.js index 153158d..ce4412f 100755 --- a/jd_cfd_loop.js +++ b/jd_cfd_loop.js @@ -1,8 +1,7 @@ -// @grant require /* 京喜财富岛热气球挂机 -更新时间:2021-7-21 +更新时间:2021-7-13 活动入口:京喜APP-我的-京喜财富岛 */ !function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { @@ -12,7 +11,9 @@ } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t }); -const $ = new Env("京喜财富岛热气球挂机"); +const jd_helpers = require("./utils/JDHelpers.js"); +const jd_env = require("./utils/JDEnv.js"); +const $ = jd_env.env("京喜财富岛热气球挂机"); const JD_API_HOST = "https://m.jingxi.com/"; const notify = $.isNode() ? require('./sendNotify') : ''; const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; @@ -20,7 +21,7 @@ $.showLog = $.getdata("cfd_showLog") ? $.getdata("cfd_showLog") === "true" : fal $.notifyTime = $.getdata("cfd_notifyTime"); $.result = []; $.shareCodes = []; -let cookiesArr = [], cookie = '', token = '', UA, UAInfo = {}; +let cookiesArr = [], cookie = ''; if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { @@ -29,7 +30,7 @@ if ($.isNode()) { if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; if (JSON.stringify(process.env).indexOf('GITHUB') > -1) process.exit(0); } else { - cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jd_helpers.jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); } $.appId = 10028; !(async () => { @@ -38,12 +39,12 @@ $.appId = 10028; return; } let count = 0 + $.info = []; $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; await requestAlgo(); await $.wait(1000) console.log('\n') - const loop_limit = $.isNode() ? (process.env.CFD_LOOP_LIMIT ? process.env.CFD_LOOP_LIMIT : 20) : ($.getdata('CFD_LOOP_LIMIT') ? $.getdata('CFD_LOOP_LIMIT') : 20) - while (count < loop_limit) { + while (true) { count++ console.log(`============开始第${count}次挂机=============`) for (let i = 0; i < cookiesArr.length; i++) { @@ -53,39 +54,45 @@ $.appId = 10028; $.index = i + 1; $.nickName = ''; $.isLogin = true; + await TotalBean(); console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); - $.info = {} - if (UAInfo[$.UserName]) { - UA = UAInfo[$.UserName] - } else { - UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString()};network/wifi;model/iPhone10,2;appBuild/100609;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + if (!$.isLogin) { + // $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + // if ($.isNode()) { + // await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + // } + continue } - token = await getJxToken() - await cfd(); - let time = process.env.CFD_LOOP_SLEEPTIME ? (process.env.CFD_LOOP_SLEEPTIME * 1 > 1000 ? process.env.CFD_LOOP_SLEEPTIME : process.env.CFD_LOOP_SLEEPTIME * 1000) : 5000 + + if ($.info[i] == undefined) { + $.info.push({ + loop_limit: false + }); + } + + await cfd(i); + let time = process.env.CFD_LOOP_SLEEPTIME ? process.env.CFD_LOOP_SLEEPTIME : 2000 await $.wait(time) - UAInfo[$.UserName] = UA } } } })() - .catch((e) => $.logErr(e)) - .finally(() => $.done()); + .catch((e) => $.logErr(e)) + .finally(() => $.done()); -async function cfd() { +async function cfd(i) { try { - const beginInfo = await getUserInfo(); + const beginInfo = await getUserInfo(false, i); if (beginInfo.Fund.ddwFundTargTm === 0) { console.log(`还未开通活动,请先开通\n`) return } - if ($.info.buildInfo.dwTodaySpeedPeople !== 500) { - await $.wait(3000) - await speedUp() - } else { - console.log(`热气球接客已达上限,跳过执行\n`) + await $.wait(1000) + if (!$.info[i].loop_limit) { + await speedUp(i) } - await $.wait(3000) + await $.wait(2000) await queryshell() } catch (e) { $.logErr(e) @@ -109,6 +116,7 @@ async function querystorageroom() { bags.push(vo.dwType) bags.push(vo.dwCount) } + if (bags.length !== 0) { let strTypeCnt = '' for (let j = 0; j < bags.length; j++) { @@ -118,7 +126,7 @@ async function querystorageroom() { strTypeCnt += `${bags[j]}|` } } - await $.wait(3000) + await $.wait(1000) await sellgoods(`strTypeCnt=${strTypeCnt}&dwSceneId=1`) } else { console.log(`背包是空的,快去捡贝壳吧\n`) @@ -169,11 +177,10 @@ async function queryshell() { for (let key of Object.keys(data.Data.NormShell)) { let vo = data.Data.NormShell[key] for (let j = 0; j < vo.dwNum; j++) { - await $.wait(3000) await pickshell(`dwType=${vo.dwType}`) + await $.wait(1000) } } - console.log('') } } catch (e) { $.logErr(e, resp); @@ -206,12 +213,6 @@ async function pickshell(body) { case '只要诚心祈祷,愿望就会实现哦~': dwName = '海星' break - case '阳光下的小贝壳会像宝石一样,散发耀眼的光芒': - dwName = '小贝壳' - break - case '啊~我可不想被清蒸加蒜蓉': - dwName = '扇贝' - break default: break } @@ -219,8 +220,8 @@ async function pickshell(body) { console.log(`捡贝壳成功:捡到了${dwName}`) } else if (data.iRet === 5403 || data.sErrMsg === '这种小贝壳背包放不下啦,先去卖掉一些吧~') { console.log(`捡贝壳失败:${data.sErrMsg}`) - await $.wait(3000) await querystorageroom() + await $.wait(1000) } else { console.log(`捡贝壳失败:${data.sErrMsg}`) } @@ -235,11 +236,9 @@ async function pickshell(body) { } // 热气球接客 -async function speedUp() { - let strBuildIndexArr = ['food', 'sea', 'shop', 'fun'] - let strBuildIndex = strBuildIndexArr[Math.floor((Math.random() * strBuildIndexArr.length))] +async function speedUp(i) { return new Promise(async (resolve) => { - $.get(taskUrl(`user/SpeedUp`, `strBuildIndex=${strBuildIndex}`), async (err, resp, data) => { + $.get(taskUrl(`user/SpeedUp`, `strBuildIndex=food`), async (err, resp, data) => { try { if (err) { console.log(`${JSON.stringify(err)}`) @@ -248,9 +247,10 @@ async function speedUp() { data = JSON.parse(data); if (data.iRet === 0) { console.log(`热气球接客成功:已接待 ${data.dwTodaySpeedPeople} 人\n`) - } else if (data.iRet === 2027 || data.sErrMsg === '今天接待人数已达上限啦~') { - console.log(`热气球接客失败:${data.sErrMsg}\n`) } else { + if (data.iRet == 2027) { + $.info[i].loop_limit = true; + } console.log(`热气球接客失败:${data.sErrMsg}\n`) } } @@ -264,9 +264,9 @@ async function speedUp() { } // 获取用户信息 -function getUserInfo() { +function getUserInfo(showInvite = true, i) { return new Promise(async (resolve) => { - $.get(taskUrl(`user/QueryUserInfo`, `strPgUUNum=${token['farm_jstoken']}&strPgtimestamp=${token['timestamp']}&strPhoneID=${token['phoneid']}`), (err, resp, data) => { + $.get(taskUrl(`user/QueryUserInfo`), (err, resp, data) => { try { if (err) { console.log(`${JSON.stringify(err)}`) @@ -274,16 +274,45 @@ function getUserInfo() { } else { data = JSON.parse(data); const { + iret, buildInfo = {}, + ddwRichBalance, + ddwCoinBalance, + JxUserWelfare, + sErrMsg, + strMyShareId, + strNickName, + dwLandLvl, Fund = {} } = data; - $.info = { - ...$.info, + const dwIsJxNewUser = JxUserWelfare["dwIsJxNewUser"] + if (showInvite) { + console.log(`\n获取用户信息:${sErrMsg}\n${$.showLog ? data : ""}`); + console.log(`\n当前等级:${dwLandLvl},金币:${ddwCoinBalance},财富值:${ddwRichBalance}\n`) + } + if (showInvite && strMyShareId) { + console.log(`财富岛好友互助码每次运行都变化,旧的可继续使用`); + console.log(`\n【京东账号${$.index} ${$.UserName} 的${$.name}好友互助码】${strMyShareId}\n\n`); + $.shareCodes.push(strMyShareId) + } + $.info[i] = { + ...$.info[i], buildInfo, + ddwRichBalance, + ddwCoinBalance, + dwIsJxNewUser, + strMyShareId, + strNickName, + dwLandLvl, Fund }; resolve({ buildInfo, + ddwRichBalance, + ddwCoinBalance, + dwIsJxNewUser, + strMyShareId, + strNickName, Fund }); } @@ -308,31 +337,96 @@ function taskUrl(function_path, body) { Referer:"https://st.jingxi.com/fortune_island/index.html?ptag=138631.26.55", "Accept-Encoding": "gzip, deflate, br", Host: "m.jingxi.com", - "User-Agent": UA, + // "User-Agent":`jdpingou;iPhone;3.15.2;14.2.1;ea00763447803eb0f32045dcba629c248ea53bb3;network/wifi;model/iPhone13,2;appBuild/100365;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2015_311210;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`, + "Accept-Language": "zh-CN", + }, + timeout: 10000 + }; +} + +function taskListUrl(function_path, body, bizCode = 'jxbfd') { + let url = `${JD_API_HOST}newtasksys/newtasksys_front/${function_path}?strZone=jxbfd&bizCode=${bizCode}&source=jxbfd&dwEnv=7&_cfd_t=${Date.now()}&ptag=138631.26.55&${body}&_stk=_cfd_t%2CbizCode%2CconfigExtra%2CdwEnv%2Cptag%2Csource%2CstrZone%2CtaskId&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&g_ty=ls`; + return { + url, + headers: { + Cookie: cookie, + Accept: "*/*", + Connection: "keep-alive", + Referer:"https://st.jingxi.com/fortune_island/index.html?ptag=138631.26.55", + "Accept-Encoding": "gzip, deflate, br", + Host: "m.jingxi.com", + "User-Agent":`jdpingou;iPhone;3.15.2;14.2.1;ea00763447803eb0f32045dcba629c248ea53bb3;network/wifi;model/iPhone13,2;appBuild/100365;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2015_311210;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`, "Accept-Language": "zh-cn", }, timeout: 10000 }; } -function randomString() { - return Math.random().toString(16).slice(2, 10) + - Math.random().toString(16).slice(2, 10) + - Math.random().toString(16).slice(2, 10) + - Math.random().toString(16).slice(2, 10) + - Math.random().toString(16).slice(2, 10) + +function showMsg() { + return new Promise(async (resolve) => { + if ($.result.length) { + if ($.notifyTime) { + const notifyTimes = $.notifyTime.split(",").map((x) => x.split(":")); + const now = $.time("HH:mm").split(":"); + console.log(`\n${JSON.stringify(notifyTimes)}`); + console.log(`\n${JSON.stringify(now)}`); + if ( notifyTimes.some((x) => x[0] === now[0] && (!x[1] || x[1] === now[1])) ) { + $.msg($.name, "", `${$.result.join("\n")}`); + } + } else { + $.msg($.name, "", `${$.result.join("\n")}`); + } + + if ($.isNode() && process.env.CFD_NOTIFY_CONTROL) + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `${$.result.join("\n")}`); + } + resolve(); + }); } -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') - return []; +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } } - } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) } + /* 修改时间戳转换函数,京喜工厂原版修改 */ @@ -486,5 +580,3 @@ function generateFp() { } var _0xod8='jsjiami.com.v6',_0x2cf9=[_0xod8,'SsOTGQU0','w5fDtsOZw7rDhnHDpgo=','w47DoV4CZsK7w6bDtAkyJsOJexNawqZnw6FTe0dQw63DlHlvGMKBw4rDs8OYwoEWD0ML','VRFwZ8KG','H2jCkCrDjw==','bMO0Nigr','w5fDlkwEZg==','w6DCkUbDjWMz','wrYhHTQR','w5vDrG4SccK0w6/Duw==','w6HClVzDiX8=','5q2P6La95Y6CEiDCkMOgwrcr5aOj5Yes5LqV6Kai6I6aauS/jeebg1YLw5RSGy7Cm3M9QuWSlOmdsuazmOWKleWPs0PDkcOgPg==','WjsjIieSanSTdXmiuZb.EncDom.v6=='];(function(_0x30e78a,_0x12a1c3,_0x4ca71c){var _0x40a26e=function(_0x59c439,_0x435a06,_0x70e6be,_0x39d363,_0x31edda){_0x435a06=_0x435a06>>0x8,_0x31edda='po';var _0x255309='shift',_0x4aba1a='push';if(_0x435a06<_0x59c439){while(--_0x59c439){_0x39d363=_0x30e78a[_0x255309]();if(_0x435a06===_0x59c439){_0x435a06=_0x39d363;_0x70e6be=_0x30e78a[_0x31edda+'p']();}else if(_0x435a06&&_0x70e6be['replace'](/[WIeSnSTdXuZbEnD=]/g,'')===_0x435a06){_0x30e78a[_0x4aba1a](_0x39d363);}}_0x30e78a[_0x4aba1a](_0x30e78a[_0x255309]());}return 0x8dbb4;};return _0x40a26e(++_0x12a1c3,_0x4ca71c)>>_0x12a1c3^_0x4ca71c;}(_0x2cf9,0x6e,0x6e00));var _0x5108=function(_0x4dc255,_0x3cb8bc){_0x4dc255=~~'0x'['concat'](_0x4dc255);var _0x2e664b=_0x2cf9[_0x4dc255];if(_0x5108['xFLNEr']===undefined){(function(){var _0xfc2aa4=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x26458d='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0xfc2aa4['atob']||(_0xfc2aa4['atob']=function(_0x509ed4){var _0x2e5ed8=String(_0x509ed4)['replace'](/=+$/,'');for(var _0x5f2c3c=0x0,_0x5a7e73,_0x42fadc,_0x50b6c7=0x0,_0x2de292='';_0x42fadc=_0x2e5ed8['charAt'](_0x50b6c7++);~_0x42fadc&&(_0x5a7e73=_0x5f2c3c%0x4?_0x5a7e73*0x40+_0x42fadc:_0x42fadc,_0x5f2c3c++%0x4)?_0x2de292+=String['fromCharCode'](0xff&_0x5a7e73>>(-0x2*_0x5f2c3c&0x6)):0x0){_0x42fadc=_0x26458d['indexOf'](_0x42fadc);}return _0x2de292;});}());var _0x503f7f=function(_0x517424,_0x3cb8bc){var _0x5bb1d7=[],_0x204abf=0x0,_0x50c70e,_0x376d53='',_0x19ba11='';_0x517424=atob(_0x517424);for(var _0x2212a4=0x0,_0x34e1ad=_0x517424['length'];_0x2212a4<_0x34e1ad;_0x2212a4++){_0x19ba11+='%'+('00'+_0x517424['charCodeAt'](_0x2212a4)['toString'](0x10))['slice'](-0x2);}_0x517424=decodeURIComponent(_0x19ba11);for(var _0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x5bb1d7[_0x5372ab]=_0x5372ab;}for(_0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab]+_0x3cb8bc['charCodeAt'](_0x5372ab%_0x3cb8bc['length']))%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;}_0x5372ab=0x0;_0x204abf=0x0;for(var _0x30875f=0x0;_0x30875f<_0x517424['length'];_0x30875f++){_0x5372ab=(_0x5372ab+0x1)%0x100;_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab])%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;_0x376d53+=String['fromCharCode'](_0x517424['charCodeAt'](_0x30875f)^_0x5bb1d7[(_0x5bb1d7[_0x5372ab]+_0x5bb1d7[_0x204abf])%0x100]);}return _0x376d53;};_0x5108['NgRmMn']=_0x503f7f;_0x5108['CiKmfm']={};_0x5108['xFLNEr']=!![];}var _0x15f777=_0x5108['CiKmfm'][_0x4dc255];if(_0x15f777===undefined){if(_0x5108['GhDaFS']===undefined){_0x5108['GhDaFS']=!![];}_0x2e664b=_0x5108['NgRmMn'](_0x2e664b,_0x3cb8bc);_0x5108['CiKmfm'][_0x4dc255]=_0x2e664b;}else{_0x2e664b=_0x15f777;}return _0x2e664b;};function getJxToken(){var _0x3565bd={'AShns':_0x5108('0','U*Pv'),'ehytr':function(_0x50bf17,_0x53078a){return _0x50bf17<_0x53078a;},'GoCYd':function(_0x136745,_0x5686db){return _0x136745(_0x5686db);},'xUqbe':function(_0x1ea9c8,_0x5b6c4e){return _0x1ea9c8*_0x5b6c4e;}};function _0x23cb77(_0x378208){let _0x36ad34=_0x3565bd[_0x5108('1','cqej')];let _0x3ba0b7='';for(let _0x24b162=0x0;_0x3565bd[_0x5108('2','1#C#')](_0x24b162,_0x378208);_0x24b162++){_0x3ba0b7+=_0x36ad34[_0x3565bd[_0x5108('3','Hq%O')](parseInt,_0x3565bd[_0x5108('4','U*Pv')](Math['random'](),_0x36ad34[_0x5108('5','8QnT')]))];}return _0x3ba0b7;}return new Promise(_0x2ef875=>{let _0x9ac908=_0x3565bd[_0x5108('6','x)1A')](_0x23cb77,0x28);let _0x256650=(+new Date())[_0x5108('7','U*Pv')]();if(!cookie[_0x5108('8','8QnT')](/pt_pin=([^; ]+)(?=;?)/)){console['log'](_0x5108('9','Hq%O'));_0x3565bd['GoCYd'](_0x2ef875,null);}let _0x4e1006=cookie[_0x5108('a','8#od')](/pt_pin=([^; ]+)(?=;?)/)[0x1];let _0x57bff6=$['md5'](''+decodeURIComponent(_0x4e1006)+_0x256650+_0x9ac908+'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy')[_0x5108('b',']OsH')]();_0x3565bd['GoCYd'](_0x2ef875,{'timestamp':_0x256650,'phoneid':_0x9ac908,'farm_jstoken':_0x57bff6});});};_0xod8='jsjiami.com.v6'; !function(n){"use strict";function t(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function r(n,t){return n<>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<>>9<<4)]=r;var e,i,a,d,h,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255);return r}function d(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(d(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="";for(r=0;r>>4&15)+"0123456789abcdef".charAt(15&t);return e}function v(n){return unescape(encodeURIComponent(n))}function m(n){return h(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}$.md5=A}(this); -// prettier-ignore -function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_club_lottery.js b/jd_club_lottery.js index 4e66a50..abdd0a8 100755 --- a/jd_club_lottery.js +++ b/jd_club_lottery.js @@ -10,6 +10,15 @@ Modified from https://github.com/Zero-S1/JD_tools/blob/master/JD_vvipclub.py ============QuantumultX============== [task_local] #摇京豆 +[Script] +cron "5 0 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_club_lottery.js,tag=摇京豆 +=================Surge============== +[Script] +摇京豆 = type=cron,cronexp="5 0 * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_club_lottery.js + +============小火箭========= +摇京豆 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_club_lottery.js, cronexpr="5 0 * * *", timeout=3600, enable=true +======= 5 0,23 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_club_lottery.js, tag=摇京豆, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdyjd.png, enabled=true =================Loon=============== [Script] @@ -22,7 +31,9 @@ cron "5 0,23 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/ 摇京豆 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_club_lottery.js, cronexpr="5 0,23 * * *", timeout=3600, enable=true */ -const $ = new Env('摇京豆'); +const jd_helpers = require("./utils/JDHelpers.js"); +const jd_env = require("./utils/JDEnv.js"); +const $ = jd_env.env("摇京豆"); const notify = $.isNode() ? require('./sendNotify') : ''; //Node.js用户请在jdCookie.js处填写京东ck; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; @@ -35,7 +46,7 @@ if ($.isNode()) { }) 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); + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...jd_helpers.jsonParse($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); } let superShakeBeanConfig = { "superShakeUlr": "",//超级摇一摇活动链接 @@ -1413,17 +1424,7 @@ function TotalBean() { }) }) } -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') - return []; - } - } -} + function taskUrl(function_id, body = {}, appId = 'vip_h5') { return { url: `${JD_API_HOST}?functionId=${function_id}&appid=${appId}&body=${escape(JSON.stringify(body))}&_=${Date.now()}`, @@ -1456,6 +1457,4 @@ function superShakePostUrl(function_id, body) { 'Referer': 'https://h5.m.jd.com/babelDiy/Zeus/4SXuJSqKganGpDSEMEkJWyBrBHcM/index.html', } } -} -// 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 +} \ No newline at end of file diff --git a/jd_crazy_joy.js b/jd_crazy_joy.js index 106ba53..11b6a88 100755 --- a/jd_crazy_joy.js +++ b/jd_crazy_joy.js @@ -3,37 +3,39 @@ crazyJoy任务 每天运行一次即可 -活动入口:京东APP我的-更多工具-疯狂的JOY + 已支持IOS双京东账号,Node.js支持N个京东账号 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js ============Quantumultx=============== [task_local] #crazyJoy任务 -10 9 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_crazy_joy.js, tag=crazyJoy任务, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_crazy_joy.png, enabled=true +10 7 * * * https://raw.githubusercontent.com/LXK9301/jd_scripts/master/jd_crazy_joy.js, tag=crazyJoy任务, enabled=true ================Loon============== [Script] -cron "10 9 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_crazy_joy.js,tag=crazyJoy任务 +cron "10 7 * * *" script-path=https://raw.githubusercontent.com/LXK9301/jd_scripts/master/jd_crazy_joy.js,tag=crazyJoy任务 ===============Surge================= -crazyJoy任务 = type=cron,cronexp="10 9 * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_crazy_joy.js +crazyJoy任务 = type=cron,cronexp="10 7 * * *",wake-system=1,timeout=20,script-path=https://raw.githubusercontent.com/LXK9301/jd_scripts/master/jd_crazy_joy.js ============小火箭========= -crazyJoy任务 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_crazy_joy.js, cronexpr="10 9 * * *", timeout=3600, enable=true +crazyJoy任务 = type=cron,script-path=https://raw.githubusercontent.com/LXK9301/jd_scripts/master/jd_crazy_joy.js, cronexpr="10 7 * * *", timeout=200, enable=true */ - -const $ = new Env('crazyJoy任务'); +const jd_helpers = require("./utils/JDHelpers.js"); +const jd_env = require("./utils/JDEnv.js"); +const $ = jd_env.env("crazyJoy任务"); const JD_API_HOST = 'https://api.m.jd.com/'; const notify = $.isNode() ? require('./sendNotify') : ''; let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 let helpSelf = false // 循环助力,默认关闭 -let applyJdBean = 2000; //疯狂的JOY京豆兑换,目前最小值为2000京豆,默认为 0 不开启京豆兑换 +let applyJdBean = 50000; //疯狂的JOY京豆兑换,目前最小值为2000京豆,默认为 0 不开启京豆兑换 let cookiesArr = [], cookie = '', message = ''; -const inviteCodes = []; -const randomCount = $.isNode() ? 10 : 5; +const inviteCodes = + []; +const randomCount = 0 ; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { @@ -42,21 +44,143 @@ if ($.isNode()) { if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; } else { - cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = jsonParse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => item !== "" && item !== null && item !== undefined); } -!function(n){"use strict";function r(n,r){var t=(65535&n)+(65535&r);return(n>>16)+(r>>16)+(t>>16)<<16|65535&t}function t(n,r){return n<>>32-r}function u(n,u,e,o,c,f){return r(t(r(r(u,n),r(o,f)),c),e)}function e(n,r,t,e,o,c,f){return u(r&t|~r&e,n,r,o,c,f)}function o(n,r,t,e,o,c,f){return u(r&e|t&~e,n,r,o,c,f)}function c(n,r,t,e,o,c,f){return u(r^t^e,n,r,o,c,f)}function f(n,r,t,e,o,c,f){return u(t^(r|~e),n,r,o,c,f)}function i(n,t){n[t>>5]|=128<>>9<<4)]=t;var u,i,a,h,g,l=1732584193,d=-271733879,v=-1732584194,C=271733878;for(u=0;u>5]>>>r%32&255);return t}function h(n){var r,t=[];for(t[(n.length>>2)-1]=void 0,r=0;r>5]|=(255&n.charCodeAt(r/8))<16&&(e=i(e,8*n.length)),t=0;t<16;t+=1)o[t]=909522486^e[t],c[t]=1549556828^e[t];return u=i(o.concat(h(r)),512+8*r.length),a(i(c.concat(u),640))}function d(n){var r,t,u="";for(t=0;t>>4&15)+"0123456789abcdef".charAt(15&r);return u}function v(n){return unescape(encodeURIComponent(n))}function C(n){return g(v(n))}function A(n){return d(C(n))}function m(n,r){return l(v(n),v(r))}function s(n,r){return d(m(n,r))}function b(n,r,t){return r?t?m(r,n):s(r,n):t?C(n):A(n)}$.md5=b}(); +!function (n) { + "use strict"; + + function t(n, t) { + var r = (65535 & n) + (65535 & t); + return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r + } + + function r(n, t) { + return n << t | n >>> 32 - t + } + + function e(n, e, o, u, c, f) { + return t(r(t(t(e, n), t(u, f)), c), o) + } + + function o(n, t, r, o, u, c, f) { + return e(t & r | ~t & o, n, t, u, c, f) + } + + function u(n, t, r, o, u, c, f) { + return e(t & o | r & ~o, n, t, u, c, f) + } + + function c(n, t, r, o, u, c, f) { + return e(t ^ r ^ o, n, t, u, c, f) + } + + function f(n, t, r, o, u, c, f) { + return e(r ^ (t | ~o), n, t, u, c, f) + } + + function i(n, r) { + n[r >> 5] |= 128 << r % 32, + n[14 + (r + 64 >>> 9 << 4)] = r; + var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; + for (e = 0; e < n.length; e += 16) + i = l, + a = g, + d = v, + h = m, + g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), + l = t(l, i), + g = t(g, a), + v = t(v, d), + m = t(m, h); + return [l, g, v, m] + } + + function a(n) { + var t, r = "", e = 32 * n.length; + for (t = 0; t < e; t += 8) + r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); + return r + } + + function d(n) { + var t, r = []; + for (r[(n.length >> 2) - 1] = void 0, + t = 0; t < r.length; t += 1) + r[t] = 0; + var e = 8 * n.length; + for (t = 0; t < e; t += 8) + r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; + return r + } + + function h(n) { + return a(i(d(n), 8 * n.length)) + } + + function l(n, t) { + var r, e, o = d(n), u = [], c = []; + for (u[15] = c[15] = void 0, + o.length > 16 && (o = i(o, 8 * n.length)), + r = 0; r < 16; r += 1) + u[r] = 909522486 ^ o[r], + c[r] = 1549556828 ^ o[r]; + return e = i(u.concat(d(t)), 512 + 8 * t.length), + a(i(c.concat(e), 640)) + } + + function g(n) { + var t, r, e = ""; + for (r = 0; r < n.length; r += 1) + t = n.charCodeAt(r), + e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); + return e + } + + function v(n) { + return unescape(encodeURIComponent(n)) + } + + function m(n) { + return h(v(n)) + } + + function p(n) { + return g(m(n)) + } + + function s(n, t) { + return l(v(n), v(t)) + } + + function C(n, t) { + return g(s(n, t)) + } + + function A(n, t, r) { + return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) + } + + $.md5 = A +}(this); !(async () => { if (!cookiesArr[0]) { $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); return; } await requireConfig(); + $.nextCode = ["EdLPh8A6X5G1iWXu-uPYfA==", "nCQQXQHKGjPCb7jkd8q2U-aCTjZMxL3s"]; + $.nextCode = $.nextCode[randomNumber(0, $.nextCode.length)]; $.selfCodes = [] for (let i = 0; i < cookiesArr.length; i++) { - 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 __Oxb243c=["\x6E\x65\x78\x74\x43\x6F\x64\x65","\x45\x64\x4C\x50\x68\x38\x41\x36\x58\x35\x47\x31\x69\x57\x58\x75\x2D\x75\x50\x59\x66\x41\x3D\x3D","\x6E\x43\x51\x51\x58\x51\x48\x4B\x47\x6A\x50\x43\x62\x37\x6A\x6B\x64\x38\x71\x32\x55\x2D\x61\x43\x54\x6A\x5A\x4D\x78\x4C\x33\x73","\x6C\x65\x6E\x67\x74\x68","\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"];if(i% 2=== 0){$[__Oxb243c[0x0]]= [__Oxb243c[0x1],__Oxb243c[0x2]];$[__Oxb243c[0x0]]= $[__Oxb243c[0x0]][randomNumber(0,$[__Oxb243c[0x0]][__Oxb243c[0x3]])]};(function(_0x7fc2x1,_0x7fc2x2,_0x7fc2x3,_0x7fc2x4,_0x7fc2x5,_0x7fc2x6){_0x7fc2x6= __Oxb243c[0x4];_0x7fc2x4= function(_0x7fc2x7){if( typeof alert!== _0x7fc2x6){alert(_0x7fc2x7)};if( typeof console!== _0x7fc2x6){console[__Oxb243c[0x5]](_0x7fc2x7)}};_0x7fc2x3= function(_0x7fc2x8,_0x7fc2x1){return _0x7fc2x8+ _0x7fc2x1};_0x7fc2x5= _0x7fc2x3(__Oxb243c[0x6],_0x7fc2x3(_0x7fc2x3(__Oxb243c[0x7],__Oxb243c[0x8]),__Oxb243c[0x9]));try{_0x7fc2x1= __encode;if(!( typeof _0x7fc2x1!== _0x7fc2x6&& _0x7fc2x1=== _0x7fc2x3(__Oxb243c[0xa],__Oxb243c[0xb]))){_0x7fc2x4(_0x7fc2x5)}}catch(e){_0x7fc2x4(_0x7fc2x5)}})({}) if (cookiesArr[i]) { cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) $.index = i + 1; $.isLogin = true; $.nickName = ''; @@ -83,7 +207,7 @@ if ($.isNode()) { for (let i = 0; i < cookiesArr.length; i++) { if (cookiesArr[i]) { cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) $.index = i + 1; $.isLogin = true; $.nickName = ''; @@ -105,7 +229,7 @@ if ($.isNode()) { for (let i = 0; i < cookiesArr.length; i++) { if (cookiesArr[i]) { cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) $.index = i + 1; $.isLogin = true; $.nickName = ''; @@ -147,7 +271,6 @@ async function jdCrazyJoy() { console.log(`检测您打开了自动兑换开关,去兑换京豆`) await doApplyJdBean(applyJdBean) } - await getSpecialJoy(); await showMsg(); } async function doTasks() { @@ -175,7 +298,7 @@ function doApplyJdBean(bean = 1000) { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.success) { console.log(`兑换${bean}京豆成功`) @@ -193,8 +316,8 @@ function doApplyJdBean(bean = 1000) { }) }) } -function getUserInfo(code) { - 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 __Oxb243f=["\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"];let body={"\x70\x61\x72\x61\x6D\x44\x61\x74\x61":{"\x69\x6E\x76\x69\x74\x65\x72":code}};(function(_0xaddbx2,_0xaddbx3,_0xaddbx4,_0xaddbx5,_0xaddbx6,_0xaddbx7){_0xaddbx7= __Oxb243f[0x0];_0xaddbx5= function(_0xaddbx8){if( typeof alert!== _0xaddbx7){alert(_0xaddbx8)};if( typeof console!== _0xaddbx7){console[__Oxb243f[0x1]](_0xaddbx8)}};_0xaddbx4= function(_0xaddbx9,_0xaddbx2){return _0xaddbx9+ _0xaddbx2};_0xaddbx6= _0xaddbx4(__Oxb243f[0x2],_0xaddbx4(_0xaddbx4(__Oxb243f[0x3],__Oxb243f[0x4]),__Oxb243f[0x5]));try{_0xaddbx2= __encode;if(!( typeof _0xaddbx2!== _0xaddbx7&& _0xaddbx2=== _0xaddbx4(__Oxb243f[0x6],__Oxb243f[0x7]))){_0xaddbx5(_0xaddbx6)}}catch(e){_0xaddbx5(_0xaddbx6)}})({}) +function getUserInfo(code = "EdLPh8A6X5G1iWXu-uPYfA==") { + let body = {"paramData": {"inviter": code}} return new Promise(async resolve => { $.get(taskUrl('crazyJoy_user_gameState', JSON.stringify(body)), async (err, resp, data) => { try { @@ -202,10 +325,10 @@ function getUserInfo(code) { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.success && data.data && data.data.userInviteCode) { - console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${data.data.userInviteCode}`) + console.log(`\n【京东账号${$.index}(${$.nickName || $.UserName})的${$.name}好友互助码】${data.data.userInviteCode}`) $.selfCodes.push(data.data.userInviteCode) $.nextCode = data.data.userInviteCode message += `${data.data['nickName']}:${data.data['userTopLevelJoyId']}级JOY\n`; @@ -242,7 +365,7 @@ function getTaskInfo() { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.success && data.data && data.data.length) { $.taskList = data.data; @@ -268,7 +391,7 @@ function doSign() { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.success && data.data) { console.log(`签到成功,获得${data.data.beans}京豆,${data.data.coins}金币`) @@ -295,7 +418,7 @@ function doTask(taskId) { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.success && data.data && data.data.taskRecordId) { console.log(`去做任务【${data.data.taskTitle}】,任务id: ${data.data.taskRecordId}`) @@ -324,7 +447,7 @@ function recordTask(taskId, taskRecordId) { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.success) { console.log(`任务【${data.data.taskTitle}】记录成功,去领奖`) @@ -352,7 +475,7 @@ function awardTask(taskId) { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.success && data.data && data.data.taskTitle) { console.log(`任务【${data.data.taskTitle}】领奖成功,任务奖励:${data.data.beans}京豆,${data.data.coins}金币`) @@ -379,7 +502,7 @@ function helpFriend(code) { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data['resultCode'] ==='0') { console.log(`助力结果:${JSON.stringify(data)}`); @@ -407,7 +530,7 @@ function getUserBean() { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.success && data.data && data.data.totalBeans) $.bean = data.data.totalBeans @@ -432,7 +555,7 @@ function getCoin() { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.data && data.data.totalCoinAmount) { $.coin = data.data.totalCoinAmount; @@ -457,7 +580,7 @@ function getGrowthReward() { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data['resultCode'] === '0') { if (data.data) { @@ -481,56 +604,6 @@ function getGrowthReward() { }) }) } -//获取特殊JOY情况 -function getSpecialJoy() { - return new Promise(async resolve => { - const body = { "paramData":{"typeId": 4} }; - $.get(taskUrl('crazyJoy_user_getSpecialJoy', JSON.stringify(body)), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { - data = JSON.parse(data); - if (data['resultCode'] === '0') { - if (data.data) { - message += '五福汪:' - if (data['data'] && data['data'].length > 0) { - for (let item of data['data']) { - if (item['joyId'] === 1003) { - message += `多多JOY(${item['count']}只) ` - } else if (item['joyId'] === 1004) { - message += `快乐JOY(${item['count']}只) ` - } else if (item['joyId'] === 1005) { - message += `好物JOY(${item['count']}只) ` - } else if (item['joyId'] === 1006) { - message += `省钱JOY(${item['count']}只) ` - } else if (item['joyId'] === 1007) { - message += `东东JOY(${item['count']}只)` - } else { - message += `暂无` - } - } - } else { - message += `暂无`; - } - if (data['data'].length >= 5) { - $.msg($.name, '', `京东账号 ${$.index}${$.nickName}\n恭喜你,已集成五福汪可合成分红JOY了`) - if ($.isNode()) await notify.sendNotify(`${$.name} - ${$.index} - ${$.nickName}`, `京东账号 ${$.index}${$.nickName}\n恭喜你,已集成五福汪可合成分红JOY了`); - } - } - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} function obtainAward(eventRecordId) { return new Promise(async resolve => { const body = {"eventType": "GROWTH_REWARD", eventRecordId}; @@ -540,7 +613,7 @@ function obtainAward(eventRecordId) { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data['resultCode'] === '0') { $.GROWTH_REWARD_BEAN += data.data['beans']; @@ -557,13 +630,16 @@ function obtainAward(eventRecordId) { } function showMsg() { return new Promise(async resolve => { - message += `\n当前信息:${$.bean}京豆,${$.coin}金币` + message += `当前信息:${$.bean}京豆,${$.coin}金币` $.msg($.name, '', `京东账号${$.index} ${$.nickName}\n${message}`) resolve() }) } function taskUrl(functionId, body = '') { - 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 __Oxb2398=["\x73\x75\x62\x73\x74\x72","\x6E\x6F\x77","","\x61\x44\x76\x53\x63\x42\x76\x24\x67\x47\x51\x76\x72\x58\x66\x76\x61\x38\x64\x47\x21\x5A\x43\x40\x44\x41\x37\x30\x59\x25\x6C\x58","\x6D\x64\x35","\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"];let t=Date[__Oxb2398[0x1]]().toString()[__Oxb2398[0x0]](0,10);let e=body|| __Oxb2398[0x2];e= $[__Oxb2398[0x4]](__Oxb2398[0x3]+ e+ t);e= e+ Number(t).toString(16);(function(_0x8b7fx3,_0x8b7fx4,_0x8b7fx5,_0x8b7fx6,_0x8b7fx7,_0x8b7fx8){_0x8b7fx8= __Oxb2398[0x5];_0x8b7fx6= function(_0x8b7fx9){if( typeof alert!== _0x8b7fx8){alert(_0x8b7fx9)};if( typeof console!== _0x8b7fx8){console[__Oxb2398[0x6]](_0x8b7fx9)}};_0x8b7fx5= function(_0x8b7fxa,_0x8b7fx3){return _0x8b7fxa+ _0x8b7fx3};_0x8b7fx7= _0x8b7fx5(__Oxb2398[0x7],_0x8b7fx5(_0x8b7fx5(__Oxb2398[0x8],__Oxb2398[0x9]),__Oxb2398[0xa]));try{_0x8b7fx3= __encode;if(!( typeof _0x8b7fx3!== _0x8b7fx8&& _0x8b7fx3=== _0x8b7fx5(__Oxb2398[0xb],__Oxb2398[0xc]))){_0x8b7fx6(_0x8b7fx7)}}catch(e){_0x8b7fx6(_0x8b7fx7)}})({}) + let t = Date.now().toString().substr(0, 10) + let e = body || "" + e = $.md5("aDvScBv$gGQvrXfva8dG!ZC@DA70Y%lX" + e + t) + e = e + Number(t).toString(16) return { url: `${JD_API_HOST}?uts=${e}&appid=crazy_joy&functionId=${functionId}&body=${escape(body)}&t=${t}`, headers: { @@ -571,7 +647,7 @@ function taskUrl(functionId, body = '') { 'Host': 'api.m.jd.com', 'Accept': '*/*', 'Connection': 'keep-alive', - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), 'Accept-Language': 'zh-cn', 'Referer': 'https://crazy-joy.jd.com/', 'origin': 'https://crazy-joy.jd.com', @@ -658,18 +734,6 @@ function requireConfig() { }) } -function safeGet(data) { - try { - if (typeof JSON.parse(data) == "object") { - return true; - } - } catch (e) { - console.log(e); - console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); - return false; - } -} - function TotalBean() { return new Promise(async resolve => { const options = { @@ -682,7 +746,7 @@ function TotalBean() { "Connection": "keep-alive", "Cookie": cookie, "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0") } } $.post(options, (err, resp, data) => { @@ -697,11 +761,7 @@ function TotalBean() { $.isLogin = false; //cookie过期 return } - if (data['retcode'] === 0) { - $.nickName = (data['base'] && data['base'].nickname) || $.UserName; - } else { - $.nickName = $.UserName - } + $.nickName = data['base'].nickname; } else { console.log(`京东服务器返回空数据`) } @@ -734,5 +794,3 @@ function jsonParse(str) { function randomNumber(min = 0, max = 100) { return Math.min(Math.floor(min + Math.random() * (max - min)), max); } -// prettier-ignore -function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_crazy_joy_coin.js b/jd_crazy_joy_coin.js index 4d49881..8be18ba 100755 --- a/jd_crazy_joy_coin.js +++ b/jd_crazy_joy_coin.js @@ -26,7 +26,9 @@ crazyJoy挂机 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/ */ -const $ = new Env('crazyJoy挂机'); +const jd_helpers = require("./utils/JDHelpers.js"); +const jd_env = require("./utils/JDEnv.js"); +const $ = jd_env.env("crazyJoy挂机"); const JD_API_HOST = 'https://api.m.jd.com/'; const notify = $.isNode() ? require('./sendNotify') : ''; @@ -39,7 +41,7 @@ if ($.isNode()) { 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); + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...jd_helpers.jsonParse($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); } !function(n){"use strict";function r(n,r){var t=(65535&n)+(65535&r);return(n>>16)+(r>>16)+(t>>16)<<16|65535&t}function t(n,r){return n<>>32-r}function u(n,u,e,o,c,f){return r(t(r(r(u,n),r(o,f)),c),e)}function e(n,r,t,e,o,c,f){return u(r&t|~r&e,n,r,o,c,f)}function o(n,r,t,e,o,c,f){return u(r&e|t&~e,n,r,o,c,f)}function c(n,r,t,e,o,c,f){return u(r^t^e,n,r,o,c,f)}function f(n,r,t,e,o,c,f){return u(t^(r|~e),n,r,o,c,f)}function i(n,t){n[t>>5]|=128<>>9<<4)]=t;var u,i,a,h,g,l=1732584193,d=-271733879,v=-1732584194,C=271733878;for(u=0;u>5]>>>r%32&255);return t}function h(n){var r,t=[];for(t[(n.length>>2)-1]=void 0,r=0;r>5]|=(255&n.charCodeAt(r/8))<16&&(e=i(e,8*n.length)),t=0;t<16;t+=1)o[t]=909522486^e[t],c[t]=1549556828^e[t];return u=i(o.concat(h(r)),512+8*r.length),a(i(c.concat(u),640))}function d(n){var r,t,u="";for(t=0;t>>4&15)+"0123456789abcdef".charAt(15&r);return u}function v(n){return unescape(encodeURIComponent(n))}function C(n){return g(v(n))}function A(n){return d(C(n))}function m(n,r){return l(v(n),v(r))}function s(n,r){return d(m(n,r))}function b(n,r,t){return r?t?m(r,n):s(r,n):t?C(n):A(n)}$.md5=b}(); !(async () => { @@ -64,7 +66,7 @@ if ($.isNode()) { for (let i = 0; i < cookiesArr.length; i++) { if (cookiesArr[i]) { cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) $.index = i + 1; $.isLogin = true; $.nickName = ''; @@ -279,7 +281,7 @@ function getJoyList() { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); //console.log(data) if (data.success && data.data.joyIds) { @@ -338,7 +340,7 @@ function mergeJoy(x, y) { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.success && data.data.newJoyId) { if (data.data.newJoyId > 34) { @@ -451,7 +453,7 @@ function hourBenefit() { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.success) console.log(`金币补给领取成功,获得${data.data.coins}金币`) @@ -474,7 +476,7 @@ function getUserBean() { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.success && data.data && data.data.totalBeans) $.bean = data.data.totalBeans @@ -499,7 +501,7 @@ function getCoin() { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.data && data.data.tryMoneyJoyBeans) { console.log(`分红狗生效中,预计获得 ${data.data.tryMoneyJoyBeans} 京豆奖励`) @@ -537,7 +539,7 @@ function getCoinForInterval(taskCookie) { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { // const userName = decodeURIComponent(taskCookie.match(/pt_pin=(.+?);/) && taskCookie.match(/pt_pin=(.+?);/)[1]) // data = JSON.parse(data); // if (data.data && data.data.tryMoneyJoyBeans) { @@ -566,7 +568,7 @@ function openBox(eventType = 'LUCKY_BOX_DROP', boxId) { console.log(`${JSON.stringify(err)}`) console.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data['success']) { $.log(`点击幸运盒子成功,剩余观看视频次数:${data.data.advertViewTimes}, ${data.data.advertViewTimes > 0 ? '等待32秒' : '跳出'}`) @@ -595,7 +597,7 @@ function rewardBox(eventType, boxId) { $.log(`${JSON.stringify(err)}`) $.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data['success']) { $.log(`幸运盒子奖励领取成功,获得:${data.data.beans}京豆,${data.data.coins}金币`) @@ -622,7 +624,7 @@ function getGrowState() { $.log(`${JSON.stringify(err)}`) $.log(`${$.name} API请求失败,请检查网路重试`) } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data['success'] && data.data) { for(let vo of data.data){ @@ -652,7 +654,7 @@ function taskUrl(functionId, body = '', taskCookie = cookie) { 'Host': 'api.m.jd.com', 'Accept': '*/*', 'Connection': 'keep-alive', - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), 'Accept-Language': 'zh-cn', 'Referer': 'https://crazy-joy.jd.com/', 'origin': 'https://crazy-joy.jd.com', @@ -661,18 +663,6 @@ function taskUrl(functionId, body = '', taskCookie = cookie) { } } -function safeGet(data) { - try { - if (typeof JSON.parse(data) == "object") { - return true; - } - } catch (e) { - console.log(e); - console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); - return false; - } -} - function TotalBean() { return new Promise(async resolve => { const options = { @@ -685,7 +675,7 @@ function TotalBean() { "Connection": "keep-alive", "Cookie": cookie, "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0") } } $.post(options, (err, resp, data) => { @@ -701,7 +691,7 @@ function TotalBean() { return } if (data['retcode'] === 0) { - $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + $.nickName = data['base'].nickname; } else { $.nickName = $.UserName } @@ -716,18 +706,4 @@ function TotalBean() { } }) }) -} - -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') - return []; - } - } -} -// prettier-ignore -function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file +} \ No newline at end of file diff --git a/jd_crowdfunding_wish.js b/jd_crowdfunding_wish.js new file mode 100755 index 0000000..b7ab994 --- /dev/null +++ b/jd_crowdfunding_wish.js @@ -0,0 +1,322 @@ +/* +cron "0 8,12 * * *" jd_crowdfunding_wish.js +*/ +const jd_helpers = require("./utils/JDHelpers.js"); +const jd_env = require("./utils/JDEnv.js"); +const $ = jd_env.env("京东众筹许愿池"); +const notify = $.isNode() ? require("./sendNotify") : ""; +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +let timestamp = Date.now(); +let cookiesArr = [], + cookie = "", + message; +a = ""; +let allMessage = ""; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]); + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") + console.log = () => {}; +} else { + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...jd_helpers.jsonParse($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} + +const JD_API_HOST = "https://api.m.jd.com/client.action"; + +!(async () => { + if (!cookiesArr[0]) { + $.msg( + $.name, + "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", + "https://bean.m.jd.com/", + { + "open-url": "https://bean.m.jd.com/", + } + ); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + ck2 = cookiesArr[Math.round(Math.random() * 5)]; + $.UserName = decodeURIComponent( + cookie.match(/pt_pin=([^; ]+)(?=;?)/) && + cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1] + ); + $.index = i + 1; + message = ""; + console.log(`\n******开始【京东账号${$.index}】${$.UserName}*********\n`); + await task(); + } + } + if ($.isNode() && allMessage && !process.env.CROWDFUNDING_WISH_NOTIFY_CONTROL) { + await notify.sendNotify(`${$.name}`, `${allMessage}`); + } +})() + .catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); + }) + .finally(() => { + $.done(); + }); + +function showMsg() { + return new Promise((resolve) => { + $.log($.name, "", `京东账号${$.index}${$.nickName}\n${message}`); + + resolve(); + }); +} + +function task() { + return new Promise(async (resolve) => { + let options = { + url: `https://api.m.jd.com/client.action`, + + body: `functionId=healthyDay_getHomeData&body={"appId":"1E1NXxq0","taskToken":"","channelId":1}&client=wh5&clientVersion=1.0.0`, + headers: { + Origin: "https://h5.jd.com", + Host: "api.m.jd.com", + "User-Agent": + "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 UBrowser/5.6.12150.8 Safari/537.36", + Cookie: cookie, + }, + }; + + $.post(options, async (err, resp, data) => { + try { + data = JSON.parse(data); + if (data.data.bizMsg == "success") { + $.log(`===============存货金币===============`); + $.log(`${data.data.result.userInfo.userScore}币`); + userScore = data.data.result.userInfo.userScore; + $.log(`===============抽奖需要===============`); + $.log(`${data.data.result.userInfo.scorePerLottery}币`); + scorePerLottery = data.data.result.userInfo.scorePerLottery; + tasklist = data.data.result.taskVos; + $.log(`===============去做任务===============`); + + $.log(`===============浏览并关注众筹频道===============`); + tk = tasklist[0].shoppingActivityVos[0].taskToken; + taskId = tasklist[0].taskId; + await dotask(tk, taskId, 0); + await dotask(tk, taskId, 1); + + await dotask(tk, taskId, 0); + $.log(`===============浏览众筹频道===============`); + tk = tasklist[1].shoppingActivityVos[0].taskToken; + taskId = tasklist[1].taskId; + await dotask(tk, taskId, 0); + await dotask(tk, taskId, 1); + await $.wait(15000); + await dotask(tk, taskId, 0); + $.log(`===============每浏览商品10s可获得200金币===============`); + tk = tasklist[2].productInfoVos[0].taskToken; + taskId = tasklist[2].taskId; + item = tasklist[2].productInfoVos[0].itemId; + await dotask(tk, taskId, 0, item); + await dotask(tk, taskId, 1, item); + await $.wait(11000); + await dotask(tk, taskId, 0, item); + + tk = tasklist[2].productInfoVos[1].taskToken; + taskId = tasklist[2].taskId; + item = tasklist[2].productInfoVos[1].itemId; + await dotask(tk, taskId, 0, item); + await dotask(tk, taskId, 1, item); + await $.wait(11000); + await dotask(tk, taskId, 0, item); + tk = tasklist[2].productInfoVos[2].taskToken; + taskId = tasklist[2].taskId; + item = tasklist[2].productInfoVos[2].itemId; + await dotask(tk, taskId, 0, item); + await dotask(tk, taskId, 1, item); + await $.wait(11000); + await dotask(tk, taskId, 0, item); + tk = tasklist[2].productInfoVos[3].taskToken; + item = tasklist[2].productInfoVos[3].itemId; + taskId = tasklist[2].taskId; + await dotask(tk, taskId, 0, item); + await dotask(tk, taskId, 1, item); + await $.wait(11000); + await dotask(tk, taskId, 0, item); + tk = tasklist[2].productInfoVos[4].taskToken; + item = tasklist[2].productInfoVos[4].itemId; + taskId = tasklist[2].taskId; + await dotask(tk, taskId, 0, item); + await dotask(tk, taskId, 1, item); + await $.wait(11000); + await dotask(tk, taskId, 0, item); + $.log(`===============邀请一个好友助力可获得300金币===============`); + tk = tasklist[3].assistTaskDetailVo.taskToken; + taskId = tasklist[3].taskId; + yqm = tasklist[3].assistTaskDetailVo.itemId; + $.log(`邀请码${yqm}\n正在取随机CK互相助力3次`); + for (let i = 0; i < 3; i++) { + await help(tk, taskId, 0, yqm); + await help(tk, taskId, 1, yqm); + + await help(tk, taskId, 0, yqm); + } + $.log(`===============关注店铺可获得200金币===============`); + tk = tasklist[4].followShopVo[0].taskToken; + item = tasklist[4].followShopVo[0].itemId; + taskId = tasklist[4].taskId; + await dotask(tk, taskId, 0, item); + await dotask(tk, taskId, 1, item); + + await dotask(tk, taskId, 0, item); + tk = tasklist[4].followShopVo[1].taskToken; + item = tasklist[4].followShopVo[1].itemId; + taskId = tasklist[4].taskId; + await dotask(tk, taskId, 0, item); + await dotask(tk, taskId, 1, item); + + await dotask(tk, taskId, 0, item); + tk = tasklist[4].followShopVo[2].taskToken; + item = tasklist[4].followShopVo[2].itemId; + taskId = tasklist[4].taskId; + await dotask(tk, taskId, 0, item); + await dotask(tk, taskId, 1, item); + + await dotask(tk, taskId, 0, item); + $.log(`===============连续签到===============`); + tk = tasklist[5].simpleRecordInfoVo.taskToken; + item = tasklist[5].simpleRecordInfoVo.itemId; + taskId = tasklist[5].taskId; + await dotask(tk, taskId, 0, item); + await dotask(tk, taskId, 1, item); + + await dotask(tk, taskId, 0, item); + await getLottery(); + + cj = $.userScore / 500; + cj = parseInt(cj); + if (cj > 0) { + for (let i = 0; i < cj; i++) { + await getLottery(); + } + } + } else if (data.data.bizMsg !== "success") { + console.log(data.msg); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function help(taskToken, taskId, actionType, itemId) { + return new Promise(async (resolve) => { + let options = { + url: `https://api.m.jd.com/client.action`, + + body: `functionId=harmony_collectScore&body={"appId":"1E1NXxq0","taskToken":"${taskToken}","taskId":${taskId},"itemId":"${itemId}","actionType":${actionType}}&client=wh5&clientVersion=1.0.0`, + headers: { + Origin: "https://h5.jd.com", + Host: "api.m.jd.com", + "User-Agent": + "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 UBrowser/5.6.12150.8 Safari/537.36", + Cookie: ck2, + }, + }; + + $.post(options, async (err, resp, data) => { + try { + data = JSON.parse(data); + const bizMsg = data?.data?.bizMsg; + if (bizMsg == "success") { + $.log(`===============任务完成===============`); + console.log(bizMsg); + $.log(`获得${data.data.result.userScore}`); + } else if (bizMsg !== "success") { + console.log(bizMsg); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function dotask(taskToken, taskId, actionType, itemId) { + return new Promise(async (resolve) => { + let options = { + url: `https://api.m.jd.com/client.action`, + + body: `functionId=harmony_collectScore&body={"appId":"1E1NXxq0","taskToken":"${taskToken}","taskId":${taskId},"itemId":"${itemId}","actionType":${actionType}}&client=wh5&clientVersion=1.0.0`, + headers: { + Origin: "https://h5.jd.com", + Host: "api.m.jd.com", + "User-Agent": + "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 UBrowser/5.6.12150.8 Safari/537.36", + Cookie: cookie, + }, + }; + + $.post(options, async (err, resp, data) => { + try { + data = JSON.parse(data); + if (data.data.bizMsg == "success") { + $.log(`===============任务完成===============`); + console.log(data.data.bizMsg); + $.log(`获得${data.data.result.userScore}`); + } else if (data.data.bizMsg !== "success") { + console.log(data.data.bizMsg); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function getLottery() { + return new Promise(async (resolve) => { + let options = { + url: `https://api.m.jd.com/client.action`, + + body: `functionId=interact_template_getLotteryResult&body={"appId":"1E1NXxq0"}&client=wh5&clientVersion=1.0.0`, + headers: { + Origin: "https://h5.jd.com", + Host: "api.m.jd.com", + "User-Agent": + "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 UBrowser/5.6.12150.8 Safari/537.36", + Cookie: cookie, + }, + }; + + $.post(options, async (err, resp, data) => { + try { + data = JSON.parse(data); + if (data.data.bizMsg == "success") { + $.userScore = data.data.result.userScore; + $.bizMsg = data.data.bizMsg; + $.log(`===============开始抽奖===============`); + if (data.data.result.userAwardsCacheDto.jBeanAwardVo) { + $.log(data.data.result.userAwardsCacheDto.jBeanAwardVo.prizeName); + allMessage += `京东账号${$.index}-${ + $.nickName || $.UserName + }\n抽奖京豆: ${ + data.data.result.userAwardsCacheDto.jBeanAwardVo.quantity + }${$.index !== cookiesArr.length ? "\n\n" : "\n\n"}`; + } else $.log(`啥都没抽到`); + } else if (data.data.bizMsg !== "success") { + console.log(data.data.bizMsg); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} \ No newline at end of file diff --git a/jd_daily_egg.js b/jd_daily_egg.js index cd3f525..68f160a 100755 --- a/jd_daily_egg.js +++ b/jd_daily_egg.js @@ -1,25 +1,18 @@ /* -Last Modified time: 2020-11-20 14:11:01 -活动入口:京东金融-天天提鹅 -定时收鹅蛋,兑换金币 -已支持IOS双京东账号,Node.js支持N个京东账号 -脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js -============Quantumultx=============== -[task_local] -#天天提鹅 -10 * * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_daily_egg.js, tag=天天提鹅, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdte.png, enabled=true - -================Loon============== -[Script] -cron "10 * * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_daily_egg.js,tag=天天提鹅 - -===============Surge================= -天天提鹅 = type=cron,cronexp="10 * * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_daily_egg.js - -============小火箭========= -天天提鹅 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_daily_egg.js, cronexpr="10 * * * *", timeout=3600, enable=true + * @Author: LXK9301 https://github.com/LXK9301 + * @Date: 2020-11-10 14:10:27 + * @Last Modified by: LXK9301 + * @Last Modified time: 2020-11-20 14:11:01 */ -const $ = new Env('天天提鹅'); +/* +京东金融-天天提鹅 +定时收鹅蛋,兑换金币 +先这样子吧 + */ +//0 */3 * * * +const jd_helpers = require("./utils/JDHelpers.js"); +const jd_env = require("./utils/JDEnv.js"); +const $ = jd_env.env("天天提鹅"); let cookiesArr = [], cookie = ''; const JD_API_HOST = 'https://ms.jr.jd.com/gw/generic/uc/h5/m'; const notify = $.isNode() ? require('./sendNotify') : ''; @@ -31,7 +24,13 @@ if ($.isNode()) { }) if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; } else { - cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = jd_helpers.jsonParse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => item !== "" && item !== null && item !== undefined); } !(async () => { if (!cookiesArr[0]) { @@ -182,7 +181,7 @@ function TotalBean() { "Connection": "keep-alive", "Cookie": cookie, "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0") } } $.post(options, (err, resp, data) => { @@ -197,11 +196,7 @@ function TotalBean() { $.isLogin = false; //cookie过期 return } - if (data['retcode'] === 0) { - $.nickName = (data['base'] && data['base'].nickname) || $.UserName; - } else { - $.nickName = $.UserName - } + $.nickName = data['base'].nickname; } else { console.log(`京东服务器返回空数据`) } @@ -226,22 +221,9 @@ function taskUrl(function_id, body) { 'Content-Type' : `application/x-www-form-urlencoded;charset=UTF-8`, 'Host' : `ms.jr.jd.com`, 'Connection' : `keep-alive`, - 'User-Agent' : $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'User-Agent' : $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), 'Referer' : `https://uua.jr.jd.com/uc-fe-wxgrowing/moneytree/index`, 'Accept-Language' : `zh-cn` } } -} -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') - return []; - } - } -} -// prettier-ignore -function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file +} \ No newline at end of file diff --git a/jd_ddo_pk.js b/jd_ddo_pk.js index b5d89e4..f1d4e3b 100755 --- a/jd_ddo_pk.js +++ b/jd_ddo_pk.js @@ -1,975 +1,815 @@ /* 京享值PK -作者:laibur -cron 15 0,6,13,19,21 * * * jd_ddopk.js -wuzhi04 -活动入口:京东APP-我的-京享值 -已支持IOS双京东账号,Node.js支持N个京东账号 -脚本兼容: Surge, Loon, JSBox, Node.js -============Quantumultx=============== -[task_local] -#京享值PK -15 3,6,13,19,21 * * * https://gitee.com/SuperManito/scripts/raw/master/jd_jxzpk.js, tag=京享值PK -================Loon============== -[Script] -cron "15 0,6,13,19,21 * * *" script-path=https://gitee.com/SuperManito/scripts/raw/master/jd_jxzpk.js,tag=京享值PK -===============Surge================= -京享值PK = type=cron,cronexp="15 0,6,13,19,21 * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/SuperManito/scripts/raw/master/jd_jxzpk.js -============小火箭========= -京享值PK = type=cron,script-path=https://gitee.com/SuperManito/scripts/raw/master/jd_jxzpk.js, cronexpr="15 0,6,13,19,21 * * *", timeout=3600, enable=true -*/ -const $ = new Env('京享值PK'); +需手动开宝箱 +能用且用 + */ +const jd_helpers = require("./utils/JDHelpers.js"); +const jd_env = require("./utils/JDEnv.js"); +const $ = jd_env.env("京享值PK"); -! function (n) { - "use strict"; +// prettier-ignore +!function(n){"use strict";function r(n,r){var t=(65535&n)+(65535&r);return(n>>16)+(r>>16)+(t>>16)<<16|65535&t}function t(n,r){return n<>>32-r}function u(n,u,e,o,c,f){return r(t(r(r(u,n),r(o,f)),c),e)}function e(n,r,t,e,o,c,f){return u(r&t|~r&e,n,r,o,c,f)}function o(n,r,t,e,o,c,f){return u(r&e|t&~e,n,r,o,c,f)}function c(n,r,t,e,o,c,f){return u(r^t^e,n,r,o,c,f)}function f(n,r,t,e,o,c,f){return u(t^(r|~e),n,r,o,c,f)}function i(n,t){n[t>>5]|=128<>>9<<4)]=t;var u,i,a,h,g,l=1732584193,d=-271733879,v=-1732584194,C=271733878;for(u=0;u>5]>>>r%32&255);return t}function h(n){var r,t=[];for(t[(n.length>>2)-1]=void 0,r=0;r>5]|=(255&n.charCodeAt(r/8))<16&&(e=i(e,8*n.length)),t=0;t<16;t+=1)o[t]=909522486^e[t],c[t]=1549556828^e[t];return u=i(o.concat(h(r)),512+8*r.length),a(i(c.concat(u),640))}function d(n){var r,t,u="";for(t=0;t>>4&15)+"0123456789abcdef".charAt(15&r);return u}function v(n){return unescape(encodeURIComponent(n))}function C(n){return g(v(n))}function A(n){return d(C(n))}function m(n,r){return l(v(n),v(r))}function s(n,r){return d(m(n,r))}function b(n,r,t){return r?t?m(r,n):s(r,n):t?C(n):A(n)}$.md5=b}(); - function r(n, r) { - var t = (65535 & n) + (65535 & r); - return (n >> 16) + (r >> 16) + (t >> 16) << 16 | 65535 & t - } - - function t(n, r) { - return n << r | n >>> 32 - r - } - - function u(n, u, e, o, c, f) { - return r(t(r(r(u, n), r(o, f)), c), e) - } - - function e(n, r, t, e, o, c, f) { - return u(r & t | ~r & e, n, r, o, c, f) - } - - function o(n, r, t, e, o, c, f) { - return u(r & e | t & ~e, n, r, o, c, f) - } - - function c(n, r, t, e, o, c, f) { - return u(r ^ t ^ e, n, r, o, c, f) - } - - function f(n, r, t, e, o, c, f) { - return u(t ^ (r | ~e), n, r, o, c, f) - } - - function i(n, t) { - n[t >> 5] |= 128 << t % 32, n[14 + (t + 64 >>> 9 << 4)] = t; - var u, i, a, h, g, l = 1732584193, - d = -271733879, - v = -1732584194, - C = 271733878; - for (u = 0; u < n.length; u += 16) i = l, a = d, h = v, g = C, d = f(d = f(d = f(d = f(d = c(d = c(d = c(d = c(d = o(d = o(d = o(d = o(d = e(d = e(d = e(d = e(d, v = e(v, C = e(C, l = e(l, d, v, C, n[u], 7, -680876936), d, v, n[u + 1], 12, -389564586), l, d, n[u + 2], 17, 606105819), C, l, n[u + 3], 22, -1044525330), v = e(v, C = e(C, l = e(l, d, v, C, n[u + 4], 7, -176418897), d, v, n[u + 5], 12, 1200080426), l, d, n[u + 6], 17, -1473231341), C, l, n[u + 7], 22, -45705983), v = e(v, C = e(C, l = e(l, d, v, C, n[u + 8], 7, 1770035416), d, v, n[u + 9], 12, -1958414417), l, d, n[u + 10], 17, -42063), C, l, n[u + 11], 22, -1990404162), v = e(v, C = e(C, l = e(l, d, v, C, n[u + 12], 7, 1804603682), d, v, n[u + 13], 12, -40341101), l, d, n[u + 14], 17, -1502002290), C, l, n[u + 15], 22, 1236535329), v = o(v, C = o(C, l = o(l, d, v, C, n[u + 1], 5, -165796510), d, v, n[u + 6], 9, -1069501632), l, d, n[u + 11], 14, 643717713), C, l, n[u], 20, -373897302), v = o(v, C = o(C, l = o(l, d, v, C, n[u + 5], 5, -701558691), d, v, n[u + 10], 9, 38016083), l, d, n[u + 15], 14, -660478335), C, l, n[u + 4], 20, -405537848), v = o(v, C = o(C, l = o(l, d, v, C, n[u + 9], 5, 568446438), d, v, n[u + 14], 9, -1019803690), l, d, n[u + 3], 14, -187363961), C, l, n[u + 8], 20, 1163531501), v = o(v, C = o(C, l = o(l, d, v, C, n[u + 13], 5, -1444681467), d, v, n[u + 2], 9, -51403784), l, d, n[u + 7], 14, 1735328473), C, l, n[u + 12], 20, -1926607734), v = c(v, C = c(C, l = c(l, d, v, C, n[u + 5], 4, -378558), d, v, n[u + 8], 11, -2022574463), l, d, n[u + 11], 16, 1839030562), C, l, n[u + 14], 23, -35309556), v = c(v, C = c(C, l = c(l, d, v, C, n[u + 1], 4, -1530992060), d, v, n[u + 4], 11, 1272893353), l, d, n[u + 7], 16, -155497632), C, l, n[u + 10], 23, -1094730640), v = c(v, C = c(C, l = c(l, d, v, C, n[u + 13], 4, 681279174), d, v, n[u], 11, -358537222), l, d, n[u + 3], 16, -722521979), C, l, n[u + 6], 23, 76029189), v = c(v, C = c(C, l = c(l, d, v, C, n[u + 9], 4, -640364487), d, v, n[u + 12], 11, -421815835), l, d, n[u + 15], 16, 530742520), C, l, n[u + 2], 23, -995338651), v = f(v, C = f(C, l = f(l, d, v, C, n[u], 6, -198630844), d, v, n[u + 7], 10, 1126891415), l, d, n[u + 14], 15, -1416354905), C, l, n[u + 5], 21, -57434055), v = f(v, C = f(C, l = f(l, d, v, C, n[u + 12], 6, 1700485571), d, v, n[u + 3], 10, -1894986606), l, d, n[u + 10], 15, -1051523), C, l, n[u + 1], 21, -2054922799), v = f(v, C = f(C, l = f(l, d, v, C, n[u + 8], 6, 1873313359), d, v, n[u + 15], 10, -30611744), l, d, n[u + 6], 15, -1560198380), C, l, n[u + 13], 21, 1309151649), v = f(v, C = f(C, l = f(l, d, v, C, n[u + 4], 6, -145523070), d, v, n[u + 11], 10, -1120210379), l, d, n[u + 2], 15, 718787259), C, l, n[u + 9], 21, -343485551), l = r(l, i), d = r(d, a), v = r(v, h), C = r(C, g); - return [l, d, v, C] - } - - function a(n) { - var r, t = "", - u = 32 * n.length; - for (r = 0; r < u; r += 8) t += String.fromCharCode(n[r >> 5] >>> r % 32 & 255); - return t - } - - function h(n) { - var r, t = []; - for (t[(n.length >> 2) - 1] = void 0, r = 0; r < t.length; r += 1) t[r] = 0; - var u = 8 * n.length; - for (r = 0; r < u; r += 8) t[r >> 5] |= (255 & n.charCodeAt(r / 8)) << r % 32; - return t - } - - function g(n) { - return a(i(h(n), 8 * n.length)) - } - - function l(n, r) { - var t, u, e = h(n), - o = [], - c = []; - for (o[15] = c[15] = void 0, e.length > 16 && (e = i(e, 8 * n.length)), t = 0; t < 16; t += 1) o[t] = 909522486 ^ e[t], c[t] = 1549556828 ^ e[t]; - return u = i(o.concat(h(r)), 512 + 8 * r.length), a(i(c.concat(u), 640)) - } - - function d(n) { - var r, t, u = ""; - for (t = 0; t < n.length; t += 1) r = n.charCodeAt(t), u += "0123456789abcdef".charAt(r >>> 4 & 15) + "0123456789abcdef".charAt(15 & r); - return u - } - - function v(n) { - return unescape(encodeURIComponent(n)) - } - - function C(n) { - return g(v(n)) - } - - function A(n) { - return d(C(n)) - } - - function m(n, r) { - return l(v(n), v(r)) - } - - function s(n, r) { - return d(m(n, r)) - } - - function b(n, r, t) { - return r ? t ? m(r, n) : s(r, n) : t ? C(n) : A(n) - } - $.md5 = b -}(); - -$.appId = 'dafbe42d5bff9d82298e5230eb8c3f79'; -$.appMD5Key = '34e1e81ae8122ca039ec5738d33b4eee'; +$.appId = "dafbe42d5bff9d82298e5230eb8c3f79"; +$.appMD5Key = "34e1e81ae8122ca039ec5738d33b4eee"; const notify = $.isNode() ? require("./sendNotify") : ""; const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +let timestamp = Date.now(); let cookiesArr = [], - cookie = "", - message; + cookie = "", + message; if ($.isNode()) { - Object.keys(jdCookieNode).forEach((item) => { - cookiesArr.push(jdCookieNode[item]); - }); - if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]); + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; } else { - cookiesArr = [ - $.getdata("CookieJD"), - $.getdata("CookieJD2"), - ...jsonParse($.getdata("CookiesJD") || "[]").map((item) => item.cookie), - ].filter((item) => !!item); + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...jd_helpers.jsonParse($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); } +//低于4600分PK列表 +let txt = [ + "5bcdf85fec891a77d81149feb9a22b89", + "d36ff2037c6ae1965dc003d71cf975f90f296a206a12473f57d63d95f3be0534", + "25fa347d005cbf2863f59ebd12b62f7b0f296a206a12473f57d63d95f3be0534", + "5bcdf85fec891a77d81149feb9a22b89", + "193fb6902c8e012cd485f0299cc3430d", + "8c21e09fb7aa09ffc2a7bc63731ffa210f296a206a12473f57d63d95f3be0534", + "8a34e76abe5306028e52e9519361178d", + "81dc09b2f3564679d6b0af63acf42d77", + "34643d40ec720147e946355720e6162d", + "2b7610ccd85cdfc0f656b2a301bd4e60", + "c19a22c622fffb444e28c7a1148120b1", + "e5644262f36bd503cc2c824b001f9eef0f296a206a12473f57d63d95f3be0534", + "47b5c287bbd5cea4af8ae959eea944560f296a206a12473f57d63d95f3be0534", + "ea6948d64610ea981079f13120e67e0b0f296a206a12473f57d63d95f3be0534", + "49dc2496020d6e7945361f3e6410fccf", + "8397dd56a9a156385cff286c3681a7780f296a206a12473f57d63d95f3be0534", + "305475d87abdfb239870481c218a82330f296a206a12473f57d63d95f3be0534", + "f77dac65b29fc25a57235b7a03fdfaeb0f296a206a12473f57d63d95f3be0534", + "4040a23fff12469222c112105fe2c50e", + "a5f97b4d1c639c99e6ab06e0a7acc7c30f296a206a12473f57d63d95f3be0534", + "1f0832f2e1a13a059a89fa50ba6699df", + "57aebb8471def9f9ad50520c084f4fa3", + "23a8bcf382c98d358c086597ad021c5e", + "7af57a52140658ebfe89ddf90378e28e0f296a206a12473f57d63d95f3be0534", + "5ceb92c5c4543df4d3f5243ebe30beea", + "a508bdf05e5fdbe891582b0ceb9014040f296a206a12473f57d63d95f3be0534", + "286432f838990a92c25c3b0557814438", + "50f58c95307043a44342b7ac09c866ae", + "5c47f8905ace95d0bfac8297a63a3eec", + "f7270ddbb3eda8997a2b202d57bb699a", + "b120c49f1d114ad97e2587fa742a28bc", + "8943c98340a7b3e420a41a295cca7dac", + "3a599ff3ce6d21575b570fd412536aeb0f296a206a12473f57d63d95f3be0534", + "2baff350c4de54b8a3ab3aea8115f2dc", + "5d086cf9cb49534e0c4fa3bbc19129b9", + "aef007650ba4e8a35b56e88ab006fc160f296a206a12473f57d63d95f3be0534", + "1d6c9c6ef8803b57b939fe23de6013010f296a206a12473f57d63d95f3be0534", + "4c37a06168fb440e39ec7af52c7597c00f296a206a12473f57d63d95f3be0534", + "d2ecb30d4856dd102eae63cb6ce91a040f296a206a12473f57d63d95f3be0534", + "f7b0df1b5d7757578c380f6760cd348e", + "852e7a5e3928765388c123a778208990", +]; const JD_API_HOST = "https://api.m.jd.com/client.action"; $.helpAuthor = true; !(async () => { - if (!cookiesArr[0]) { - $.msg( - $.name, - "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", - "https://bean.m.jd.com/", { - "open-url": "https://bean.m.jd.com/" - } - ); - return; - } - for (let i = 0; i < cookiesArr.length; i++) { - if (cookiesArr[i]) { - cookie = cookiesArr[i]; - $.UserName = decodeURIComponent( - cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1] - ); - $.index = i + 1; - message = ""; - console.log(`\n******开始【京东账号${$.index}】${$.UserName}*********\n`); - $.canPk = true; - $.pin = ''; - $.lkToken = ''; - await main() - } + if (!cookiesArr[0]) { + $.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/", { "open-url": "https://bean.m.jd.com/" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + message = ""; + console.log(`\n******开始【京东账号${$.index}】${$.UserName}*********\n`); + $.canPk = true; + $.pin = ""; + $.lkToken = ""; + await main(); } + } })() -.catch((e) => { - $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); - }) - .finally(() => { - $.done(); - }); + .catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); + }) + .finally(() => { + $.done(); + }); function showMsg() { - return new Promise(resolve => { - $.log($.name, '', `京东账号${$.index}${$.nickName}\n${message}`); - resolve() - }) + return new Promise((resolve) => { + $.log($.name, "", `京东账号${$.index}${$.nickName}\n${message}`); + resolve(); + }); } async function main() { - await getToken(); - console.log("当前token:" + $.token); - if ($.token) { - await getPin(); - if ($.pin) { - console.log("当前pin(pk码):" + $.pin); - } - await checkRisk(); - - let myScore = await getScore($.pin); - console.log("我的京享值:" + myScore); - $.pinList = await getFriendPinList(); - let winCnt = 0; - if ($.pinList.length > 0) { - console.log("待pk的pin list:\n" + $.pinList); - for (let i = 0; i < $.pinList.length; i++) { - let pin = $.pinList[i]; - console.log('别人的的pin:' + pin); - let fscore = await getScore(pin); - console.log("别人的京享值:" + fscore); - if (fscore < myScore) { - await launchBattleNew(pin); - if (!$.canPk) { - break; - } - winCnt++; - // if (winCnt >= 30) { - // break; - // } - } - await $.wait(1000); - } - } - - // if (winCnt > 0) { - // await getBoxRewardInfo(); - // console.log("去开宝箱"); - // if ($.awards) { - // for (let index = 0; index < $.awards.length; index++) { - // let item = $.awards[index]; - // if (item.received == 0) { - // if ($.totalWins >= item.wins) { - // await sendBoxReward(item.id); - // } - // } - // } - // } - // } + await getToken(); + console.log("当前token:" + $.token); + if ($.token) { + await getPin(); + if ($.pin) { + console.log("当前pin(pk码):" + $.pin); } + await checkRisk(); + + let myScore = await getScore($.pin); + console.log("我的京享值:" + myScore); + $.pinList = txt; + + let winCnt = 0; + if ($.pinList.length > 0) { + console.log("待pk的pin list:\n" + $.pinList); + for (let i = 0; i < $.pinList.length; i++) { + let pin = $.pinList[i]; + + //bierenpin = $.pinList[Math.round(Math.random()*5)]; + //console.log('别人的的pin:' + pin); + let fscore = await getScore(pin); + + console.log("别人的京享值:" + fscore); + + if (fscore < myScore) { + await sendpk(pin); + await launchBattleNew(pin); + await recvpk(pin); + console.log("======================"); + + //await randomStr(pin) + //await jdShareBattleLaunch(pin) + if (!$.canPk) { + break; + } + winCnt++; + // if (winCnt >= 30) { + // break; + // } + } + await $.wait(1000); + } + } + $.pinList1 = await getFriendPinList(); + + if ($.pinList1.length > 0) { + console.log("待pk的pin list:\n" + $.pinList1); + for (let i = 0; i < $.pinList1.length; i++) { + let pin1 = $.pinList1[i]; + + //bierenpin = $.pinList[Math.round(Math.random()*5)]; + //console.log('别人的的pin:' + pin); + let fscore1 = await getScore(pin1); + + console.log("别人的京享值:" + fscore1); + + if (fscore1 < myScore) { + await sendpk(pin1); + await launchBattleNew(pin1); + await recvpk(pin1); + console.log("======================"); + + //await randomStr(pin) + //await jdShareBattleLaunch(pin) + if (!$.canPk) { + break; + } + winCnt++; + // if (winCnt >= 30) { + // break; + // } + } + await $.wait(1000); + } + } + + if (winCnt > 0) { + await getBoxRewardInfo(); + } + console.log("去开宝箱 检测朋友和胜场达标才能自动开"); + if ($.awards) { + for (let index = 0; index < $.awards.length; index++) { + let item = $.awards[index]; + if (item.received == 0) { + if ($.totalWins >= item.wins && $.friendFrames >= item.friendFrames) { + await sendBoxReward(item.id); + } + } + } + // } + } + } } +function sendpk(fpin) { + console.log(`SendPk: ${fpin}`); + return new Promise((resolve) => { + let body = { + actId: 9, + recipient: fpin, + relation: 2, + }; + let bodyStr = JSON.stringify(body); + let timestamp = Date.now(); + let sign = pkSign(bodyStr, timestamp); + let options = { + url: `https://pengyougou.m.jd.com/open/api/like/jxz/launchBattle?appId=dafbe42d5bff9d82298e5230eb8c3f79&lkEPin=${$.pin}&lkToken=${$.lkToken}&sign=${sign}&t=${timestamp}`, + headers: { + Referer: + "https://game-cdn.moxigame.cn/ClickEliminate/IntegralPK_jd/thirdapp/index.html?&token=AAFgwYjmADD1CrUNjDlWrIKSUE5xguJH3wmor9ZeStzbDq5cXG2Me0PSQgXJvT5bAgJv_DErW1E&returnurl=https%3A%2F%2Fprodev.m.jd.com%2Fmall%2Factive%2F45njQg88Vym1s2EGp9aV6cPvqecw%2Findex.html%3Ftttparams%3DImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%253D%253D%26babelChannel%3Dttt1%26qdsource%3Dapp%26lng%3D114.362856%26lat%3D30.577543%26sid%3Dab2735c8cec04b1db8d32b4f406fef7w%26un_area%3D17_1381_50717_52133%23%2Findex&tttparams=ImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%3D%3D&babelChannel=ttt1&lng=114.362856&lat=30.577543&sid=ab2735c8cec04b1db8d32b4f406fef7w&un_area=17_1381_50717_52133&friendPin=109912ce317991bcdcca46aae737b4f2", + Host: "pengyougou.m.jd.com", + "Content-Type": "application/json", + Origin: "https://game-cdn.moxigame.cn", + Connection: "keep-alive", + Accept: " */*", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : require("./USER_AGENTS").USER_AGENT + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0", + "Accept-Encoding": "gzip,deflate,br", + "Accept-Language": "zh-cn", + }, + body: bodyStr, + }; -function checkRisk() { - console.log("检查风险"); - return new Promise((resolve) => { - let options = { - "url": `https://pengyougou.m.jd.com/like/jxz/checkRisk?actId=9&appId=dafbe42d5bff9d82298e5230eb8c3f79&lkEPin=${$.pin}`, - "headers": { - "Referer": "https://game-cdn.moxigame.cn/ClickEliminate/IntegralPK_jd/thirdapp/index.html?&token=AAFgwYjmADD1CrUNjDlWrIKSUE5xguJH3wmor9ZeStzbDq5cXG2Me0PSQgXJvT5bAgJv_DErW1E&returnurl=https%3A%2F%2Fprodev.m.jd.com%2Fmall%2Factive%2F45njQg88Vym1s2EGp9aV6cPvqecw%2Findex.html%3Ftttparams%3DImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%253D%253D%26babelChannel%3Dttt1%26qdsource%3Dapp%26lng%3D114.362856%26lat%3D30.577543%26sid%3Dab2735c8cec04b1db8d32b4f406fef7w%26un_area%3D17_1381_50717_52133%23%2Findex&tttparams=ImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%3D%3D&babelChannel=ttt1&lng=114.362856&lat=30.577543&sid=ab2735c8cec04b1db8d32b4f406fef7w&un_area=17_1381_50717_52133&friendPin=109912ce317991bcdcca46aae737b4f2", - "Host": "pengyougou.m.jd.com", - "Content-Type": "application/json", - "Origin": "https://game-cdn.moxigame.cn", - "Connection": "keep-alive", - "Accept": " */*", - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), - "Accept-Encoding": "gzip,deflate,br", - "Accept-Language": "zh-cn", + $.post(options, (err, resp, data) => { + //console.log(options) + try { + if (err) { + $.logErr(err); + } else { + if (data) { + console.log(data); + data = JSON.parse(data); + let bizData = data.data; + if (bizData.state === 3 && bizData.msg === "今日次数已耗尽") { + $.canPk = false; // pk次数耗尽 } - }; - - $.get(options, (err, resp, data) => { - try { - if (err) { - $.logErr(err) - } else { - if (data) { - console.log(data); - } else { - $.log('京东服务器返回空数据'); - } - } - } catch (e) { - $.logErr(e) - } finally { - resolve(); - } - }); + } else { + $.log("京东服务器返回空数据"); + } + } + } catch (e) { + $.logErr(e); + } finally { + resolve(); + } }); + }); +} +function recvpk(fpin) { + console.log(`接收挑战: ${fpin}`); + return new Promise((resolve) => { + let body = { + actId: 9, + sponsor: fpin, + }; + let bodyStr = JSON.stringify(body); + let timestamp = Date.now(); + let sign = pkSign(bodyStr, timestamp); + let options = { + url: `https://pengyougou.m.jd.com/open/api/like/jxz/receiveBattle?appId=dafbe42d5bff9d82298e5230eb8c3f79&lkEPin=${$.pin}&lkToken=${$.lkToken}&sign=${sign}&t=${timestamp}`, + headers: { + Referer: + "https://game-cdn.moxigame.cn/ClickEliminate/IntegralPK_jd/thirdapp/index.html?&token=AAFgwYjmADD1CrUNjDlWrIKSUE5xguJH3wmor9ZeStzbDq5cXG2Me0PSQgXJvT5bAgJv_DErW1E&returnurl=https%3A%2F%2Fprodev.m.jd.com%2Fmall%2Factive%2F45njQg88Vym1s2EGp9aV6cPvqecw%2Findex.html%3Ftttparams%3DImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%253D%253D%26babelChannel%3Dttt1%26qdsource%3Dapp%26lng%3D114.362856%26lat%3D30.577543%26sid%3Dab2735c8cec04b1db8d32b4f406fef7w%26un_area%3D17_1381_50717_52133%23%2Findex&tttparams=ImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%3D%3D&babelChannel=ttt1&lng=114.362856&lat=30.577543&sid=ab2735c8cec04b1db8d32b4f406fef7w&un_area=17_1381_50717_52133&friendPin=109912ce317991bcdcca46aae737b4f2", + Host: "pengyougou.m.jd.com", + "Content-Type": "application/json", + Origin: "https://game-cdn.moxigame.cn", + Connection: "keep-alive", + Accept: " */*", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : require("./USER_AGENTS").USER_AGENT + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0", + "Accept-Encoding": "gzip,deflate,br", + "Accept-Language": "zh-cn", + }, + body: bodyStr, + }; + + $.post(options, (err, resp, data) => { + //console.log(options) + try { + if (err) { + $.logErr(err); + } else { + if (data) { + console.log(data); + data = JSON.parse(data); + let bizData = data.data; + if (bizData.msg === "今日次数已耗尽") { + $.canPk = false; // pk次数耗尽 + } + } else { + $.log("京东服务器返回空数据"); + } + } + } catch (e) { + $.logErr(e); + } finally { + resolve(); + } + }); + }); +} +function checkRisk() { + console.log("检查风险"); + return new Promise((resolve) => { + let options = { + url: `https://pengyougou.m.jd.com/like/jxz/checkRisk?actId=9&appId=dafbe42d5bff9d82298e5230eb8c3f79&lkEPin=${$.pin}`, + headers: { + Referer: + "https://game-cdn.moxigame.cn/ClickEliminate/IntegralPK_jd/thirdapp/index.html?&token=AAFgwYjmADD1CrUNjDlWrIKSUE5xguJH3wmor9ZeStzbDq5cXG2Me0PSQgXJvT5bAgJv_DErW1E&returnurl=https%3A%2F%2Fprodev.m.jd.com%2Fmall%2Factive%2F45njQg88Vym1s2EGp9aV6cPvqecw%2Findex.html%3Ftttparams%3DImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%253D%253D%26babelChannel%3Dttt1%26qdsource%3Dapp%26lng%3D114.362856%26lat%3D30.577543%26sid%3Dab2735c8cec04b1db8d32b4f406fef7w%26un_area%3D17_1381_50717_52133%23%2Findex&tttparams=ImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%3D%3D&babelChannel=ttt1&lng=114.362856&lat=30.577543&sid=ab2735c8cec04b1db8d32b4f406fef7w&un_area=17_1381_50717_52133&friendPin=109912ce317991bcdcca46aae737b4f2", + Host: "pengyougou.m.jd.com", + "Content-Type": "application/json", + Origin: "https://game-cdn.moxigame.cn", + Connection: "keep-alive", + Accept: " */*", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : require("./USER_AGENTS").USER_AGENT + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0", + "Accept-Encoding": "gzip,deflate,br", + "Accept-Language": "zh-cn", + }, + }; + + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err); + } else { + if (data) { + console.log(data); + } else { + $.log("京东服务器返回空数据"); + } + } + } catch (e) { + $.logErr(e); + } finally { + resolve(); + } + }); + }); } async function getFriendPinList() { - console.log("获取好友Pk列表"); - let allFriends = []; - for (let i = 0; i < 25; i++) { - let friends = await getUserFriendsPage(i + 1); - if (friends.length === 0) { - break; - } - for (let j = 0; j < friends.length; j++) { - let item = friends[j]; - // 可以接受pk, 并且未pk的好友 - if (item.leftAcceptPkNum > 0 && item.pkStatus !== 4) { - allFriends.push(item.friendPin); - } - } + console.log("获取好友Pk列表"); + let allFriends = []; + for (let i = 0; i < 25; i++) { + let friends = await getUserFriendsPage(i + 1); + if (friends.length === 0) { + break; } - return allFriends; + for (let j = 0; j < friends.length; j++) { + let item = friends[j]; + // 可以接受pk, 并且未pk的好友 + if (item.leftAcceptPkNum > 0 && item.pkStatus !== 4) { + allFriends.push(item.friendPin); + console.log(allFriends); + } + } + } + return allFriends; } function getUserFriendsPage(pageNo = 1, pageSize = 10) { - console.log(`获取好友分页列表 pageNo: ${pageNo}, pageSize: ${pageSize}`); - return new Promise(resolve => { - let options = { - "url": `https://pengyougou.m.jd.com/like/jxz/getUserFriendsPage?actId=9&appId=dafbe42d5bff9d82298e5230eb8c3f79&lkEPin=${$.pin}&pageNo=${pageNo}&pageSize=${pageSize}`, - "headers": { - "Referer": "https://game-cdn.moxigame.cn/ClickEliminate/IntegralPK_jd/thirdapp/index.html?&token=AAFgwYjmADD1CrUNjDlWrIKSUE5xguJH3wmor9ZeStzbDq5cXG2Me0PSQgXJvT5bAgJv_DErW1E&returnurl=https%3A%2F%2Fprodev.m.jd.com%2Fmall%2Factive%2F45njQg88Vym1s2EGp9aV6cPvqecw%2Findex.html%3Ftttparams%3DImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%253D%253D%26babelChannel%3Dttt1%26qdsource%3Dapp%26lng%3D114.362856%26lat%3D30.577543%26sid%3Dab2735c8cec04b1db8d32b4f406fef7w%26un_area%3D17_1381_50717_52133%23%2Findex&tttparams=ImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%3D%3D&babelChannel=ttt1&lng=114.362856&lat=30.577543&sid=ab2735c8cec04b1db8d32b4f406fef7w&un_area=17_1381_50717_52133&friendPin=109912ce317991bcdcca46aae737b4f2", - "Host": "pengyougou.m.jd.com", - "Content-Type": "application/json", - "Origin": "https://game-cdn.moxigame.cn", - "Connection": "keep-alive", - "Accept": " */*", - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), - "Accept-Encoding": "gzip,deflate,br", - "Accept-Language": "zh-cn", - } - }; - let result = []; - $.get(options, (err, resp, data) => { - try { - if (err) { - $.logErr(err) - } else { - if (data) { - data = JSON.parse(data); - result = data.datas; - } else { - $.log('京东服务器返回空数据'); - } - } - } catch (e) { - $.logErr(e) - } finally { - resolve(result); - } - }); + console.log(`获取好友分页列表 pageNo: ${pageNo}, pageSize: ${pageSize}`); + return new Promise((resolve) => { + let options = { + url: `https://pengyougou.m.jd.com/like/jxz/getUserFriendsPage?actId=9&appId=dafbe42d5bff9d82298e5230eb8c3f79&lkEPin=${$.pin}&pageNo=${pageNo}&pageSize=${pageSize}`, + headers: { + Referer: + "https://game-cdn.moxigame.cn/ClickEliminate/IntegralPK_jd/thirdapp/index.html?&token=AAFgwYjmADD1CrUNjDlWrIKSUE5xguJH3wmor9ZeStzbDq5cXG2Me0PSQgXJvT5bAgJv_DErW1E&returnurl=https%3A%2F%2Fprodev.m.jd.com%2Fmall%2Factive%2F45njQg88Vym1s2EGp9aV6cPvqecw%2Findex.html%3Ftttparams%3DImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%253D%253D%26babelChannel%3Dttt1%26qdsource%3Dapp%26lng%3D114.362856%26lat%3D30.577543%26sid%3Dab2735c8cec04b1db8d32b4f406fef7w%26un_area%3D17_1381_50717_52133%23%2Findex&tttparams=ImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%3D%3D&babelChannel=ttt1&lng=114.362856&lat=30.577543&sid=ab2735c8cec04b1db8d32b4f406fef7w&un_area=17_1381_50717_52133&friendPin=109912ce317991bcdcca46aae737b4f2", + Host: "pengyougou.m.jd.com", + "Content-Type": "application/json", + Origin: "https://game-cdn.moxigame.cn", + Connection: "keep-alive", + Accept: " */*", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : require("./USER_AGENTS").USER_AGENT + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0", + "Accept-Encoding": "gzip,deflate,br", + "Accept-Language": "zh-cn", + }, + }; + let result = []; + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + result = data.datas; + } else { + $.log("京东服务器返回空数据"); + } + } + } catch (e) { + $.logErr(e); + } finally { + resolve(result); + } }); + }); } function launchBattleNew(fpin) { - console.log(`发起挑战: ${fpin}`); - return new Promise((resolve) => { - let body = { - 'actId': 9, - 'recipient': fpin, - 'relation': 2 - }; - let bodyStr = JSON.stringify(body); - let timestamp = Date.now(); - let sign = pkSign(bodyStr, timestamp); - let options = { - "url": `https://pengyougou.m.jd.com/open/api/like/jxz/launchBattle?appId=dafbe42d5bff9d82298e5230eb8c3f79&lkEPin=${$.pin}&lkToken=${$.lkToken}&sign=${sign}&t=${timestamp}`, - "headers": { - "Referer": "https://game-cdn.moxigame.cn/ClickEliminate/IntegralPK_jd/thirdapp/index.html?&token=AAFgwYjmADD1CrUNjDlWrIKSUE5xguJH3wmor9ZeStzbDq5cXG2Me0PSQgXJvT5bAgJv_DErW1E&returnurl=https%3A%2F%2Fprodev.m.jd.com%2Fmall%2Factive%2F45njQg88Vym1s2EGp9aV6cPvqecw%2Findex.html%3Ftttparams%3DImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%253D%253D%26babelChannel%3Dttt1%26qdsource%3Dapp%26lng%3D114.362856%26lat%3D30.577543%26sid%3Dab2735c8cec04b1db8d32b4f406fef7w%26un_area%3D17_1381_50717_52133%23%2Findex&tttparams=ImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%3D%3D&babelChannel=ttt1&lng=114.362856&lat=30.577543&sid=ab2735c8cec04b1db8d32b4f406fef7w&un_area=17_1381_50717_52133&friendPin=109912ce317991bcdcca46aae737b4f2", - "Host": "pengyougou.m.jd.com", - "Content-Type": "application/json", - "Origin": "https://game-cdn.moxigame.cn", - "Connection": "keep-alive", - "Accept": " */*", - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), - "Accept-Encoding": "gzip,deflate,br", - "Accept-Language": "zh-cn", - }, - 'body': bodyStr - }; + console.log(`发起挑战: ${fpin}`); + return new Promise((resolve) => { + let body = { + actId: 9, + recipient: fpin, + relation: 2, + }; + let bodyStr = JSON.stringify(body); + let timestamp = Date.now(); + let sign = pkSign(bodyStr, timestamp); + let options = { + url: `https://pengyougou.m.jd.com/open/api/like/jxz/launchBattle?appId=dafbe42d5bff9d82298e5230eb8c3f79&lkEPin=${$.pin}&lkToken=${$.lkToken}&sign=${sign}&t=${timestamp}`, + headers: { + Referer: + "https://game-cdn.moxigame.cn/ClickEliminate/IntegralPK_jd/thirdapp/index.html?&token=AAFgwYjmADD1CrUNjDlWrIKSUE5xguJH3wmor9ZeStzbDq5cXG2Me0PSQgXJvT5bAgJv_DErW1E&returnurl=https%3A%2F%2Fprodev.m.jd.com%2Fmall%2Factive%2F45njQg88Vym1s2EGp9aV6cPvqecw%2Findex.html%3Ftttparams%3DImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%253D%253D%26babelChannel%3Dttt1%26qdsource%3Dapp%26lng%3D114.362856%26lat%3D30.577543%26sid%3Dab2735c8cec04b1db8d32b4f406fef7w%26un_area%3D17_1381_50717_52133%23%2Findex&tttparams=ImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%3D%3D&babelChannel=ttt1&lng=114.362856&lat=30.577543&sid=ab2735c8cec04b1db8d32b4f406fef7w&un_area=17_1381_50717_52133&friendPin=109912ce317991bcdcca46aae737b4f2", + Host: "pengyougou.m.jd.com", + "Content-Type": "application/json", + Origin: "https://game-cdn.moxigame.cn", + Connection: "keep-alive", + Accept: " */*", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : require("./USER_AGENTS").USER_AGENT + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0", + "Accept-Encoding": "gzip,deflate,br", + "Accept-Language": "zh-cn", + }, + body: bodyStr, + }; - $.post(options, (err, resp, data) => { - try { - if (err) { - $.logErr(err) - } else { - if (data) { - console.log(data); - data = JSON.parse(data); - let bizData = data.data; - if (bizData.state === 3 && bizData.msg === '今日次数已耗尽') { - $.canPk = false; // pk次数耗尽 - } - } else { - $.log('京东服务器返回空数据'); - } - } - } catch (e) { - $.logErr(e) - } finally { - resolve(); + $.post(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err); + } else { + if (data) { + console.log(data); + data = JSON.parse(data); + let bizData = data.data; + if (bizData.state === 3 && bizData.msg === "今日次数已耗尽") { + $.canPk = false; // pk次数耗尽 } - }); + } else { + $.log("京东服务器返回空数据"); + } + } + } catch (e) { + $.logErr(e); + } finally { + resolve(); + } }); + }); } function pkSign(body, timestamp) { - // timestamp = 1623470148350; // sign=a45cb6667750320e9f5c53102817654d - let str = `${$.appId}_${$.appMD5Key}_${body}_${timestamp}`; - return $.md5(str); + // timestamp = 1623470148350; // sign=a45cb6667750320e9f5c53102817654d + let str = `${$.appId}_${$.appMD5Key}_${body}_${timestamp}`; + return $.md5(str); +} +function shareSign(body) { + // timestamp = 1623470148350; // sign=a45cb6667750320e9f5c53102817654d + let str = `${$.appId}_${$.appMD5Key}_{"actId":9,"randomStr":"${body}","relation":2}_${timestamp}`; + return $.md5(str); +} +function getshareSign() { + // dafbe42d5bff9d82298e5230eb8c3f79_34e1e81ae8122ca039ec5738d33b4eee__1625308560254 + //https://pengyougou.m.jd.com/open/api/like/jxz/jdShareRandom?actId=9&lkToken=4b670e7bff7c43948c4856712a97c8fa&appId=dafbe42d5bff9d82298e5230eb8c3f79&lkEPin=d65bfc2689d565a93584ce2cdf9f754e0f296a206a12473f57d63d95f3be0534&sign=3e452d9a49c10d874f074325801251c2&t=1625308456790 + let str = `${$.appId}_${$.appMD5Key}__${timestamp}`; + return $.md5(str); } - function getScore(fpin) { - console.log("查询" + fpin + "分数"); - return new Promise((resolve) => { - let options = { - "url": "https://pengyougou.m.jd.com/like/jxz/getScore?actId=9&appId=dafbe42d5bff9d82298e5230eb8c3f79&lkEPin=" + fpin, - "headers": { - "Referer": "https://game-cdn.moxigame.cn/ClickEliminate/IntegralPK_jd/thirdapp/index.html?&token=AAFgwYjmADD1CrUNjDlWrIKSUE5xguJH3wmor9ZeStzbDq5cXG2Me0PSQgXJvT5bAgJv_DErW1E&returnurl=https%3A%2F%2Fprodev.m.jd.com%2Fmall%2Factive%2F45njQg88Vym1s2EGp9aV6cPvqecw%2Findex.html%3Ftttparams%3DImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%253D%253D%26babelChannel%3Dttt1%26qdsource%3Dapp%26lng%3D114.362856%26lat%3D30.577543%26sid%3Dab2735c8cec04b1db8d32b4f406fef7w%26un_area%3D17_1381_50717_52133%23%2Findex&tttparams=ImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%3D%3D&babelChannel=ttt1&lng=114.362856&lat=30.577543&sid=ab2735c8cec04b1db8d32b4f406fef7w&un_area=17_1381_50717_52133&friendPin=109912ce317991bcdcca46aae737b4f2", - "Host": "pengyougou.m.jd.com", - "Content-Type": "application/json", - "Origin": "https://game-cdn.moxigame.cn", - "Connection": "keep-alive", - "Accept": " */*", - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), - "Accept-Encoding": "gzip,deflate,br", - "Accept-Language": "zh-cn", - } - }; + console.log("查询" + fpin + "分数"); + return new Promise((resolve) => { + let options = { + url: "https://pengyougou.m.jd.com/like/jxz/getScore?actId=9&appId=dafbe42d5bff9d82298e5230eb8c3f79&lkEPin=" + fpin, + headers: { + Referer: + "https://game-cdn.moxigame.cn/ClickEliminate/IntegralPK_jd/thirdapp/index.html?&token=AAFgwYjmADD1CrUNjDlWrIKSUE5xguJH3wmor9ZeStzbDq5cXG2Me0PSQgXJvT5bAgJv_DErW1E&returnurl=https%3A%2F%2Fprodev.m.jd.com%2Fmall%2Factive%2F45njQg88Vym1s2EGp9aV6cPvqecw%2Findex.html%3Ftttparams%3DImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%253D%253D%26babelChannel%3Dttt1%26qdsource%3Dapp%26lng%3D114.362856%26lat%3D30.577543%26sid%3Dab2735c8cec04b1db8d32b4f406fef7w%26un_area%3D17_1381_50717_52133%23%2Findex&tttparams=ImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%3D%3D&babelChannel=ttt1&lng=114.362856&lat=30.577543&sid=ab2735c8cec04b1db8d32b4f406fef7w&un_area=17_1381_50717_52133&friendPin=109912ce317991bcdcca46aae737b4f2", + Host: "pengyougou.m.jd.com", + "Content-Type": "application/json", + Origin: "https://game-cdn.moxigame.cn", + Connection: "keep-alive", + Accept: " */*", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : require("./USER_AGENTS").USER_AGENT + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0", + "Accept-Encoding": "gzip,deflate,br", + "Accept-Language": "zh-cn", + }, + }; - $.get(options, (err, resp, res) => { - let score = 0; - try { - if (res) { - let data = JSON.parse(res); - if (data) { - score = data.data - } - } - } catch (e) { - console.log(e); - } finally { - resolve(score); - } - }) + $.get(options, (err, resp, res) => { + let score = 0; + try { + if (res) { + let data = JSON.parse(res); + if (data) { + score = data.data; + } + } + } catch (e) { + console.log(e); + } finally { + resolve(score); + } }); + }); } +function randomStr(a) { + console.log("查询randomStr"); + randdomsign = getshareSign(); + return new Promise((resolve) => { + let options = { + //https://pengyougou.m.jd.com/open/api/like/jxz/jdShareRandom?actId=9&lkToken=4b670e7bff7c43948c4856712a97c8fa&appId=dafbe42d5bff9d82298e5230eb8c3f79&lkEPin=d65bfc2689d565a93584ce2cdf9f754e0f296a206a12473f57d63d95f3be0534&sign=3e452d9a49c10d874f074325801251c2&t=1625308456790 + url: `https://pengyougou.m.jd.com/open/api/like/jxz/jdShareRandom?actId=9&lkToken=${a}&appId=dafbe42d5bff9d82298e5230eb8c3f79&lkEPin=${$.pin}&sign=${randdomsign}&t=${timestamp}`, + headers: { + Referer: + "https://game-cdn.moxigame.cn/ClickEliminate/IntegralPK_jd/thirdapp/index.html?&token=AAFgwYjmADD1CrUNjDlWrIKSUE5xguJH3wmor9ZeStzbDq5cXG2Me0PSQgXJvT5bAgJv_DErW1E&returnurl=https%3A%2F%2Fprodev.m.jd.com%2Fmall%2Factive%2F45njQg88Vym1s2EGp9aV6cPvqecw%2Findex.html%3Ftttparams%3DImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%253D%253D%26babelChannel%3Dttt1%26qdsource%3Dapp%26lng%3D114.362856%26lat%3D30.577543%26sid%3Dab2735c8cec04b1db8d32b4f406fef7w%26un_area%3D17_1381_50717_52133%23%2Findex&tttparams=ImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%3D%3D&babelChannel=ttt1&lng=114.362856&lat=30.577543&sid=ab2735c8cec04b1db8d32b4f406fef7w&un_area=17_1381_50717_52133&friendPin=109912ce317991bcdcca46aae737b4f2", + Host: "pengyougou.m.jd.com", + "Content-Type": "application/json", + Origin: "https://game-cdn.moxigame.cn", + Connection: "keep-alive", + Accept: " */*", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : require("./USER_AGENTS").USER_AGENT + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0", + "Accept-Encoding": "gzip,deflate,br", + "Accept-Language": "zh-cn", + }, + }; + + $.get(options, (err, resp, res) => { + try { + console.log(options); + if (res) { + console.log(res); + let data = JSON.parse(res); + if (data) { + console.log(data.data); + therandom = shareSign(data.data); + } + } + } catch (e) { + console.log(e); + } finally { + resolve(therandom); + } + }); + }); +} function getBoxRewardInfo() { - return new Promise((resolve) => { - let options = { - "url": "https://pengyougou.m.jd.com/like/jxz/getBoxRewardInfo?actId=9&appId=dafbe42d5bff9d82298e5230eb8c3f79&lkEPin=" + $.pin, - "headers": { - "Referer": "https://game-cdn.moxigame.cn/ClickEliminate/IntegralPK_jd/thirdapp/index.html?&token=AAFgwYjmADD1CrUNjDlWrIKSUE5xguJH3wmor9ZeStzbDq5cXG2Me0PSQgXJvT5bAgJv_DErW1E&returnurl=https%3A%2F%2Fprodev.m.jd.com%2Fmall%2Factive%2F45njQg88Vym1s2EGp9aV6cPvqecw%2Findex.html%3Ftttparams%3DImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%253D%253D%26babelChannel%3Dttt1%26qdsource%3Dapp%26lng%3D114.362856%26lat%3D30.577543%26sid%3Dab2735c8cec04b1db8d32b4f406fef7w%26un_area%3D17_1381_50717_52133%23%2Findex&tttparams=ImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%3D%3D&babelChannel=ttt1&lng=114.362856&lat=30.577543&sid=ab2735c8cec04b1db8d32b4f406fef7w&un_area=17_1381_50717_52133&friendPin=109912ce317991bcdcca46aae737b4f2", - "Host": "pengyougou.m.jd.com", - "Content-Type": "application/json", - "Origin": "https://game-cdn.moxigame.cn", - "Connection": "keep-alive", - "Accept": " */*", - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), - "Accept-Encoding": "gzip,deflate,br", - "Accept-Language": "zh-cn", - } - }; + return new Promise((resolve) => { + let options = { + url: "https://pengyougou.m.jd.com/like/jxz/getBoxRewardInfo?actId=9&appId=dafbe42d5bff9d82298e5230eb8c3f79&lkEPin=" + $.pin, + headers: { + Referer: + "https://game-cdn.moxigame.cn/ClickEliminate/IntegralPK_jd/thirdapp/index.html?&token=AAFgwYjmADD1CrUNjDlWrIKSUE5xguJH3wmor9ZeStzbDq5cXG2Me0PSQgXJvT5bAgJv_DErW1E&returnurl=https%3A%2F%2Fprodev.m.jd.com%2Fmall%2Factive%2F45njQg88Vym1s2EGp9aV6cPvqecw%2Findex.html%3Ftttparams%3DImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%253D%253D%26babelChannel%3Dttt1%26qdsource%3Dapp%26lng%3D114.362856%26lat%3D30.577543%26sid%3Dab2735c8cec04b1db8d32b4f406fef7w%26un_area%3D17_1381_50717_52133%23%2Findex&tttparams=ImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%3D%3D&babelChannel=ttt1&lng=114.362856&lat=30.577543&sid=ab2735c8cec04b1db8d32b4f406fef7w&un_area=17_1381_50717_52133&friendPin=109912ce317991bcdcca46aae737b4f2", + Host: "pengyougou.m.jd.com", + "Content-Type": "application/json", + Origin: "https://game-cdn.moxigame.cn", + Connection: "keep-alive", + Accept: " */*", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : require("./USER_AGENTS").USER_AGENT + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0", + "Accept-Encoding": "gzip,deflate,br", + "Accept-Language": "zh-cn", + }, + }; - $.get(options, (err, resp, res) => { - try { - console.log(res); - if (res) { - let data = JSON.parse(res); - if (data.success) { - $.awards = data.data.awards; - $.totalWins = data.data.totalWins; - console.log("总胜场:" + data.data.totalWins); - } - - } - } catch (e) { - console.log(e); - } finally { - resolve(res); - } - }) + $.get(options, (err, resp, res) => { + try { + //console.log(res); + if (res) { + let data = JSON.parse(res); + if (data.success) { + $.awards = data.data.awards; + $.totalWins = data.data.totalWins; + $.friendFrames = data.data.totalFriends; + console.log("总胜场:" + data.data.totalWins); + console.log("好朋友:" + data.data.totalFriends); + } + } + } catch (e) { + console.log(e); + } finally { + resolve(res); + } }); + }); } - function sendBoxReward(rewardConfigId) { - return new Promise((resolve) => { - let options = { - "url": "https://pengyougou.m.jd.com/like/jxz/sendBoxReward?rewardConfigId=" + rewardConfigId + "&actId=9&appId=dafbe42d5bff9d82298e5230eb8c3f79&lkEPin=" + $.pin, - "headers": { - "Referer": "https://game-cdn.moxigame.cn/ClickEliminate/IntegralPK_jd/thirdapp/index.html?&token=AAFgwYjmADD1CrUNjDlWrIKSUE5xguJH3wmor9ZeStzbDq5cXG2Me0PSQgXJvT5bAgJv_DErW1E&returnurl=https%3A%2F%2Fprodev.m.jd.com%2Fmall%2Factive%2F45njQg88Vym1s2EGp9aV6cPvqecw%2Findex.html%3Ftttparams%3DImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%253D%253D%26babelChannel%3Dttt1%26qdsource%3Dapp%26lng%3D114.362856%26lat%3D30.577543%26sid%3Dab2735c8cec04b1db8d32b4f406fef7w%26un_area%3D17_1381_50717_52133%23%2Findex&tttparams=ImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%3D%3D&babelChannel=ttt1&lng=114.362856&lat=30.577543&sid=ab2735c8cec04b1db8d32b4f406fef7w&un_area=17_1381_50717_52133&friendPin=109912ce317991bcdcca46aae737b4f2", - "Host": "pengyougou.m.jd.com", - "Content-Type": "application/json", - "Origin": "https://game-cdn.moxigame.cn", - "Connection": "keep-alive", - "Accept": " */*", - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), - "Accept-Encoding": "gzip,deflate,br", - "Accept-Language": "zh-cn", - } - }; + return new Promise((resolve) => { + let options = { + url: "https://pengyougou.m.jd.com/like/jxz/sendBoxReward?rewardConfigId=" + rewardConfigId + "&actId=9&appId=dafbe42d5bff9d82298e5230eb8c3f79&lkEPin=" + $.pin, + headers: { + Referer: + "https://game-cdn.moxigame.cn/ClickEliminate/IntegralPK_jd/thirdapp/index.html?&token=AAFgwYjmADD1CrUNjDlWrIKSUE5xguJH3wmor9ZeStzbDq5cXG2Me0PSQgXJvT5bAgJv_DErW1E&returnurl=https%3A%2F%2Fprodev.m.jd.com%2Fmall%2Factive%2F45njQg88Vym1s2EGp9aV6cPvqecw%2Findex.html%3Ftttparams%3DImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%253D%253D%26babelChannel%3Dttt1%26qdsource%3Dapp%26lng%3D114.362856%26lat%3D30.577543%26sid%3Dab2735c8cec04b1db8d32b4f406fef7w%26un_area%3D17_1381_50717_52133%23%2Findex&tttparams=ImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%3D%3D&babelChannel=ttt1&lng=114.362856&lat=30.577543&sid=ab2735c8cec04b1db8d32b4f406fef7w&un_area=17_1381_50717_52133&friendPin=109912ce317991bcdcca46aae737b4f2", + Host: "pengyougou.m.jd.com", + "Content-Type": "application/json", + Origin: "https://game-cdn.moxigame.cn", + Connection: "keep-alive", + Accept: " */*", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : require("./USER_AGENTS").USER_AGENT + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0", + "Accept-Encoding": "gzip,deflate,br", + "Accept-Language": "zh-cn", + }, + }; - $.get(options, (err, resp, res) => { - try { - console.log(res); - if (res) { - let data = JSON.parse(res); - if (data.success) { - $.openAwards = data.datas; - if ($.openAwards) { - $.openAwards.forEach(item => { - console.log('获得奖励:' + JSON.stringify(item)); - }); - } - } - - } - } catch (e) { - console.log(e); - } finally { - resolve(res); + $.get(options, (err, resp, res) => { + try { + console.log(res); + if (res) { + let data = JSON.parse(res); + if (data.success) { + $.openAwards = data.datas; + if ($.openAwards) { + $.openAwards.forEach((item) => { + console.log("获得奖励:" + JSON.stringify(item)); + }); } - }) + } + } + } catch (e) { + console.log(e); + } finally { + resolve(res); + } }); + }); } function getPin() { - return new Promise((resolve) => { - let options = { - "url": "https://jdjoy.jd.com/saas/framework/encrypt/pin?appId=dafbe42d5bff9d82298e5230eb8c3f79", - "headers": { - "Host": "jdjoy.jd.com", - "Origin": "https://prodev.m.jd.com", - "Cookie": cookie, - "Connection": "keep-alive", - "Accept": "application/json, text/plain, */*", - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), - "Accept-Language": "zh-cn", - "Referer": "https://prodev.m.jd.com/mall/active/4HTqMAvser7ctEBEdhK4yA7fXpPi/index.html?babelChannel=ttt9&tttparams=AeOIMwdeyJnTG5nIjoiMTE3LjAyOTE1NyIsImdMYXQiOiIyNS4wOTUyMDcifQ7%3D%3D&lng=00.000000&lat=00.000000&sid=&un_area=" - } + return new Promise((resolve) => { + let options = { + url: "https://jdjoy.jd.com/saas/framework/encrypt/pin?appId=dafbe42d5bff9d82298e5230eb8c3f79", + headers: { + Host: "jdjoy.jd.com", + Origin: "https://prodev.m.jd.com", + Cookie: cookie, + Connection: "keep-alive", + Accept: "application/json, text/plain, */*", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : require("./USER_AGENTS").USER_AGENT + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0", + "Accept-Language": "zh-cn", + Referer: + "https://prodev.m.jd.com/mall/active/4HTqMAvser7ctEBEdhK4yA7fXpPi/index.html?babelChannel=ttt9&tttparams=AeOIMwdeyJnTG5nIjoiMTE3LjAyOTE1NyIsImdMYXQiOiIyNS4wOTUyMDcifQ7%3D%3D&lng=00.000000&lat=00.000000&sid=&un_area=", + }, + }; + + $.post(options, (err, resp, res) => { + try { + console.log(res); + if (res) { + let data = JSON.parse(res); + if (data) { + // $.pin = data.data; + $.pin = data.data.lkEPin; + $.lkToken = data.data.lkToken; + } } - - $.post(options, (err, resp, res) => { - try { - console.log(res); - if (res) { - let data = JSON.parse(res); - if (data) { - // $.pin = data.data; - $.pin = data.data.lkEPin; - $.lkToken = data.data.lkToken; - } - - } - } catch (e) { - console.log(e); - } finally { - resolve(res); - } - }) - }); -} - -function getToken() { - return new Promise((resolve) => { - let options = { - "url": "https://jdjoy.jd.com/saas/framework/user/token?appId=dafbe42d5bff9d82298e5230eb8c3f79&client=m&url=pengyougou.m.jd.com", - "headers": { - "Host": "jdjoy.jd.com", - "Origin": "https://prodev.m.jd.com", - "Cookie": cookie, - "Connection": "keep-alive", - "Accept": "application/json, text/plain, */*", - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), - "Referer": "https://prodev.m.jd.com/mall/active/4HTqMAvser7ctEBEdhK4yA7fXpPi/index.html?babelChannel=ttt9&tttparams=AeOIMwdeyJnTG5nIjoiMTE3LjAyOTE1NyIsImdMYXQiOiIyNS4wOTUyMDcifQ7%3D%3D&lng=00.000000&lat=00.000000&sid=&un_area=" - } - } - $.post(options, (err, resp, res) => { - try { - if (res) { - let data = JSON.parse(res); - if (data) { - $.token = data.data - } - - } - } catch (e) { - console.log(e); - } finally { - resolve(res); - } - }) - }); -} - - -function safeGet(data) { - try { - if (typeof JSON.parse(data) == "object") { - return true; - } - } catch (e) { + } catch (e) { console.log(e); - console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); - return false; - } + } finally { + resolve(res); + } + }); + }); } +function jdShareBattleLaunch(a) { + return new Promise((resolve) => { + //lkEPin=${$.pin}&lkToken=${$.lkToken}&sign=${sign}&t=${timestamp} + ShareBattlesign = shareSign(a); + let options = { + url: `https://pengyougou.m.jd.com/open/api/like/jxz/jdShareBattleLaunch?appId=dafbe42d5bff9d82298e5230eb8c3f79&lkEPin=${$.pin}&lkToken=${$.lkToken}&sign=${ShareBattlesign}&t=${timestamp}`, + body: `{"actId":9,"randomStr":"${a}","relation":2}`, + headers: { + Referer: + "https://game-cdn.moxigame.cn/ClickEliminate/IntegralPK_jd/thirdapp/index.html?&token=AAFgwYjmADD1CrUNjDlWrIKSUE5xguJH3wmor9ZeStzbDq5cXG2Me0PSQgXJvT5bAgJv_DErW1E&returnurl=https%3A%2F%2Fprodev.m.jd.com%2Fmall%2Factive%2F45njQg88Vym1s2EGp9aV6cPvqecw%2Findex.html%3Ftttparams%3DImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%253D%253D%26babelChannel%3Dttt1%26qdsource%3Dapp%26lng%3D114.362856%26lat%3D30.577543%26sid%3Dab2735c8cec04b1db8d32b4f406fef7w%26un_area%3D17_1381_50717_52133%23%2Findex&tttparams=ImfQnGideyJnTG5nIjoiMTE0LjM3OTc2NiIsImdMYXQiOiIzMC42MDE0NzEifQ8%3D%3D&babelChannel=ttt1&lng=114.362856&lat=30.577543&sid=ab2735c8cec04b1db8d32b4f406fef7w&un_area=17_1381_50717_52133&friendPin=109912ce317991bcdcca46aae737b4f2", + Host: "pengyougou.m.jd.com", + "Content-Type": "application/json", + Origin: "https://game-cdn.moxigame.cn", + Connection: "keep-alive", + Accept: " */*", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : require("./USER_AGENTS").USER_AGENT + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0", + "Accept-Encoding": "gzip,deflate,br", + "Accept-Language": "zh-cn", + }, + }; -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, "", "不要在BoxJS手动复制粘贴修改cookie"); - return []; + $.post(options, (err, resp, res) => { + try { + console.log(options); + if (res) { + let data = JSON.parse(res); + if (data) { + console.log(data); + } } - } + } catch (e) { + console.log(e); + } finally { + resolve(res); + } + }); + }); } - -function Env(t, e) { - class s { - constructor(t) { - this.env = t +function getToken() { + return new Promise((resolve) => { + let options = { + url: "https://jdjoy.jd.com/saas/framework/user/token?appId=dafbe42d5bff9d82298e5230eb8c3f79&client=m&url=pengyougou.m.jd.com", + headers: { + Host: "jdjoy.jd.com", + Origin: "https://prodev.m.jd.com", + Cookie: cookie, + Connection: "keep-alive", + Accept: "application/json, text/plain, */*", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : require("./USER_AGENTS").USER_AGENT + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0", + "Accept-Language": "zh-cn", + Referer: + "https://prodev.m.jd.com/mall/active/4HTqMAvser7ctEBEdhK4yA7fXpPi/index.html?babelChannel=ttt9&tttparams=AeOIMwdeyJnTG5nIjoiMTE3LjAyOTE1NyIsImdMYXQiOiIyNS4wOTUyMDcifQ7%3D%3D&lng=00.000000&lat=00.000000&sid=&un_area=", + }, + }; + $.post(options, (err, resp, res) => { + try { + if (res) { + let data = JSON.parse(res); + if (data) { + $.token = data.data; + } } - - 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("", `\ud83d\udd14${this.name}, \u5f00\u59cb!`) - } - - 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("@"), a = { - url: `http://${h}/v1/scripting/evaluate`, - body: { - script_text: t, - mock_type: "cron", - timeout: r - }, - headers: { - "X-Key": o, - Accept: "*/*" - } - }; - this.post(a, (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(); - 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) { - let e = { - "M+": (new Date).getMonth() + 1, - "d+": (new Date).getDate(), - "H+": (new Date).getHours(), - "m+": (new Date).getMinutes(), - "s+": (new Date).getSeconds(), - "q+": Math.floor(((new Date).getMonth() + 3) / 3), - S: (new Date).getMilliseconds() - }; - /(y+)/.test(t) && (t = t.replace(RegExp.$1, ((new Date).getFullYear() + "").substr(4 - RegExp.$1.length))); - for (let s in e) new RegExp("(" + s + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? e[s] : ("00" + e[s]).substr(("" + e[s]).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 - } - } - } - }; - this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))); - let h = ["", "==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="]; - h.push(e), s && h.push(s), i && h.push(i), console.log(h.join("\n")), this.logs = this.logs.concat(h) - } - - 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("", `\u2757\ufe0f${this.name}, \u9519\u8bef!`, t.stack) : this.log("", `\u2757\ufe0f${this.name}, \u9519\u8bef!`, t) - } - - wait(t) { - return new Promise(e => setTimeout(e, t)) - } - - done(t = {}) { - const e = (new Date).getTime(), - s = (e - this.startTime) / 1e3; - this.log("", `\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) - } - }(t, e) + } catch (e) { + console.log(e); + } finally { + resolve(res); + } + }); + }); } \ No newline at end of file diff --git a/jd_djjl.js b/jd_djjl.js index 99d4c16..7856de3 100755 --- a/jd_djjl.js +++ b/jd_djjl.js @@ -1,808 +1,21 @@ /** - Author: JDHelloWorld - 东东电竞经理:脚本更新地址 jd_EsportsManager.js - 更新时间:2021-06-20 - 活动入口:京东APP-东东农场-风车-电竞经理 - 活动链接:https://xinruidddj-isv.isvjcloud.com - 已支持IOS双京东账号,Node.js支持N个京东账号 - 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js - 互助码shareCode请先手动运行脚本查看打印可看到 - ==========================Quantumultx========================= - [task_local] - #东东电竞经理 - 0 0-23/2 * * * jd_EsportsManager.js, tag=东东电竞经理, img-url=https://raw.githubusercontent.com/JDHelloWorld/jd_scripts/main/icon/jd_EsportsManager.png, enabled=true - =========================Loon============================= - [Script] - cron "0 0-23/2 * * *" script-path=jd_EsportsManager.js,tag=东东电竞经理 - - =========================Surge============================ - 东东电竞经理 = type=cron,cronexp="0 0-23/2 * * *",wake-system=1,timeout=3600,script-path=jd_EsportsManager.js - - =========================小火箭=========================== - 东东电竞经理 = type=cron,script-path=jd_EsportsManager.js, cronexpr="0 0-23/2 * * *", timeout=3600, enable=true - - 按顺序给第(Math.floor((index - 1) / 6) + 1)个账号助力 - 可能有BUG,但不会给别人号助力 - + * Author:Panda + * Date:2021-06-16 + * Version:1.0 + * + * 东东电竞经理 + * 活动地址:https://xinruidddj-isv.isvjcloud.com + * 活动时间:长期 + * + * 账号内循环助力 + * + * 推荐cron: 15 10 * * * + * 环境变量: + * - export ZOO_OPENCARD="true" //默认不开通会员 */ - - const $ = new Env('东东电竞经理'); - let cookiesArr = [], cookie = '', isBox = false, notify, newShareCodes, allMessage = ''; - let tasks = [], shareCodes = [], first = true; - - !(async () => { - await requireConfig(); - if (!cookiesArr[0]) { - $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); - return; - } - for (let i = 0; i < cookiesArr.length; i++) { - if (cookiesArr[i]) { - cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) - $.index = i + 1; - $.isLogin = true; - $.nickName = ''; - $.shareCode = await makeShareCode(); - await TotalBean(); - console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); - if (!$.isLogin) { - $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); - if ($.isNode()) { - await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); - } - continue - } - message = ''; - subTitle = ''; - option = {}; - await getIsvToken(); - await getIsvToken2(); - await getToken(); - - let r = await get_produce_coins(); - if (r !== 200) - continue - - await $.wait(1000); - - await main(); - } - } - if ($.isNode() && allMessage && $.ctrTemp) { - await notify.sendNotify(`${$.name}`, `${allMessage}`) - } - })() - - async function main() { - tasks = await detail(); - for (let i = 0; i < tasks.length; i++) { - let product_info_vos = [] - let task_vos = tasks[i] - switch (i) { - case 0: - if (task_vos.status === '1') - await do_task(task_vos.simple_record_info_vo.task_token, task_vos.task_id, task_vos.task_type) - continue - case 1: - await getShareCode(task_vos.assist_task_detail_vo.task_token) - await $.wait(1000) - - await getAssist() - await $.wait(1000) - - console.log(`第${$.index}个账号${$.UserName}去助力第${Math.floor(($.index - 1) / 6) + 1}个账号。`) - await doAssist() - continue - case 2: - product_info_vos = task_vos['browse_shop_vo'] - break - case 3: - product_info_vos = task_vos['shopping_activity_vos'] - break - case 4: - product_info_vos = task_vos['brand_member_vos'] - continue - case 5: - product_info_vos = task_vos['product_info_vos'] - break - case 6: - product_info_vos = task_vos['shopping_activity_vos'] - break - case 7: - product_info_vos = task_vos['follow_shop_vo'] - break - default: - "" - } - let taskId = task_vos.task_id, taskType = task_vos.task_type; - for (let t of product_info_vos) { - if (t.status === '1') { - console.log(`开始任务:${task_vos.task_name}`) - let res = await do_task(t.task_token, taskId, taskType) - await $.wait(1000) - } - } - } - } - - function getShareCode(token) { - return new Promise(resolve => { - $.get({ - url: 'https://xinruidddj-isv.isvjcloud.com/api/uc/user', - headers: { - 'Host': 'xinruidddj-isv.isvjcloud.com', - 'Content-Type': 'application/x-www-form-urlencoded', - 'Accept': 'application/json, text/plain, */*', - 'Authorization': `Bearer ${$.token}`, - 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), - 'Accept-Language': 'zh-cn', - } - }, (err, resp, data) => { - try { - data = $.toObj(data) - shareCodes.push({ - 'tid': token, - 'uid': data.body.openid - }) - console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${shareCodes[$.index - 1].uid}\n`); - - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) - } - - function doAssist() { - return new Promise(resolve => { - $.post({ - url: 'https://xinruidddj-isv.isvjcloud.com/api/task/do_assist_task', - headers: { - 'Host': 'xinruidddj-isv.isvjcloud.com', - 'Content-Type': 'application/x-www-form-urlencoded', - 'Accept': 'application/json, text/plain, */*', - 'Authorization': `Bearer ${$.token}`, - 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), - 'Accept-Language': 'zh-cn', - }, - body: `token=${shareCodes[Math.floor(($.index - 1) / 6)].tid}&inviter=${Math.floor(($.index - 1) / 6).uid}` - }, (err, resp, data) => { - try { - data = $.toObj(data) - if (data.status === '0') { - console.log('助力成功') - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) - } - - function getAssist() { - return new Promise(resolve => { - $.get({ - url: 'https://xinruidddj-isv.isvjcloud.com/api/task/today_assist?task_id=2&need_num=10', - headers: { - 'Host': 'xinruidddj-isv.isvjcloud.com', - 'Content-Type': 'application/x-www-form-urlencoded', - 'Accept': 'application/json, text/plain, */*', - 'Authorization': `Bearer ${$.token}`, - 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), - 'Accept-Language': 'zh-cn', - } - }, (err, resp, data) => { - try { - data = $.toObj(data) - console.log(`今日共收到${data.body.length}个助力`) - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) - } - - function getIsvToken() { - let config = { - url: 'https://api.m.jd.com/client.action?functionId=genToken&clientVersion=10.0.2&client=android&uuid=818aa057737ba6a4&st=1623934987178&sign=0877498be29cda51b9628fa0195f412f&sv=111', - body: `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': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), - 'cache-control': 'no-cache', - 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', - 'cookie': cookie - } - } - return new Promise(resolve => { - $.post(config, async (err, resp, data) => { - try { - if (err) { - console.log(`${$.name} API请求失败,请检查网路重试`); - console.log(`${JSON.stringify(err)}`) - } else { - data = JSON.parse(data); - $.isvToken = data['tokenKey']; - console.log(`isvToken:${$.isvToken}`); - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) - } - - function getIsvToken2() { - let config = { - url: 'https://api.m.jd.com/client.action?functionId=isvObfuscator&clientVersion=10.0.2&client=android&uuid=818aa057737ba6a4&st=1623934998790&sign=e571148c8dfb456a1795d249c6aa3956&sv=100', - body: `body=${escape('{"id":"","url":"https://xinruidddj-isv.isvjcloud.com"}')}`, - headers: { - 'Host': 'api.m.jd.com', - 'charset': 'UTF-8', - 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), - 'cache-control': 'no-cache', - 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', - 'cookie': cookie - } - } - return new Promise(resolve => { - $.post(config, async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - $.token2 = data['token'] - console.log(`token2:${$.token2}`); - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) - } - - function getToken() { - let config = { - url: 'https://xinruidddj-isv.isvjcloud.com/api/user/jd/auth', - body: `token=${$.token2}&source=01`, - headers: { - 'Host': 'xinruidddj-isv.isvjcloud.com', - 'Accept': 'application/json, text/plain, */*', - 'Origin': 'https://xinruidddj-isv.isvjcloud.com', - 'Authorization': 'Bearer undefined', - 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), - 'Sec-Fetch-Mode': 'cors', - 'X-Requested-With': 'com.jingdong.app.mall', - 'Sec-Fetch-Site': 'same-origin', - 'Referer': 'https://xinruidddj-isv.isvjcloud.com/exception/?channel=DDLY&sid=fd5e44488241862af88cb40cbebf660w&un_area=12_904_3373_62101', - 'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', - 'Cookie': `IsvToken=${$.isvToken};` - }, - } - return new Promise(resolve => { - $.post(config, async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - data = JSON.parse(data); - $.token = data.body.access_token - console.log($.token) - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) - } - - function detail() { - return new Promise(resolve => { - $.get({ - url: 'https://xinruidddj-isv.isvjcloud.com/api/task/detail', - headers: { - 'Host': 'xinruidddj-isv.isvjcloud.com', - 'Accept': 'application/json, text/plain, */*', - 'Authorization': `Bearer ${$.token}`, - 'Accept-Language': 'zh-cn', - 'Origin': 'https://xinruidddj-isv.isvjcloud.com', - 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), - 'Referer': 'https://xinruidddj-isv.isvjcloud.com/', - } - }, (err, resp, data) => { - if (!err) { - try { - resolve(JSON.parse(data).body.task_vos) - } catch (e) { - resolve("黑号") - } finally { - resolve([]) - } - } - }) - }) - } - - function do_task(token, id, type) { - return new Promise(resolve => { - // console.log(token, id, type) - $.post({ - url: 'https://xinruidddj-isv.isvjcloud.com/api/task/do_task', - headers: { - 'Host': 'xinruidddj-isv.isvjcloud.com', - 'Accept': 'application/json, text/plain, */*', - 'Authorization': `Bearer ${$.token}`, - 'Accept-Language': 'zh-cn', - 'Origin': 'https://xinruidddj-isv.isvjcloud.com', - 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), - 'Referer': 'https://xinruidddj-isv.isvjcloud.com/', - }, - body: `token=${token}&task_id=${id}&task_type=${type}` - }, (err, resp, data) => { - try { - if (!err) { - data = JSON.parse(data) - if (data.status === '0') { - let result = data.body.result - console.log(`任务成功:本次获得 ${result.acquired_score},账户总额 ${result.user_score}`) - resolve(200); - } else { - console.log('任务失败!') - resolve(502) - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve() - } - }) - }) - } - - function makeShareCode() { - return new Promise(resolve => { - $.post({ - url: 'https://api.m.jd.com/client.action?functionId=jdf_queryBothwayFriendsInfo', - headers: { - 'Host': 'api.m.jd.com', - 'accept': '*/*', - 'content-type': 'application/x-www-form-urlencoded', - 'referer': '', - 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), - 'accept-language': 'zh-Hans-CN;q=1', - 'Cookie': cookie - }, - body: "body=%7B%7D&build=167694&client=apple&clientVersion=10.0.2&openudid=fc13275e23b2613e6aae772533ca6f349d2e0a86&sign=399128e7314f716adbf1ca9d9c205a10&st=1623850849392&sv=110" - }, (err, resp, data) => { - try { - if (!err) { - data = JSON.parse(data) - resolve(data.data) - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve() - } - }) - }) - } - - function get_produce_coins() { - return new Promise(resolve => { - $.post({ - url: 'https://xinruidddj-isv.isvjcloud.com/api/club/get_produce_coins', - headers: { - 'Host': 'xinruidddj-isv.isvjcloud.com', - 'Accept': 'application/json, text/plain, */*', - 'Authorization': `Bearer ${$.token}`, - 'Accept-Language': 'zh-cn', - 'Origin': 'https://xinruidddj-isv.isvjcloud.com', - 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), - 'Referer': 'https://xinruidddj-isv.isvjcloud.com/', - }, - }, (err, resp, data) => { - try { - if (!err) { - data = JSON.parse(data) - console.log("收币:", data) - if (data.status === '0') { - let coins = parseInt(data.body.coins) - console.log(`收币成功:获得 ${coins}`) - } else { - console.log('收币失败!') - resolve(500) - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(200) - } - }) - }) - } - - function TotalBean() { - return new Promise(async resolve => { - const options = { - url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", - headers: { - Host: "me-api.jd.com", - Accept: "*/*", - Connection: "keep-alive", - Cookie: cookie, - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), - "Accept-Language": "zh-cn", - "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", - "Accept-Encoding": "gzip, deflate, br" - } - } - $.get(options, (err, resp, data) => { - try { - if (err) { - $.logErr(err) - } else { - if (data) { - data = JSON.parse(data); - if (data['retcode'] === "1001") { - $.isLogin = false; //cookie过期 - return; - } - if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { - $.nickName = data.data.userInfo.baseInfo.nickname; - } - } else { - $.log('京东服务器返回空数据'); - } - } - } catch (e) { - $.logErr(e) - } finally { - resolve(); - } - }) - }) - } - - function requireConfig() { - return new Promise(resolve => { - console.log('开始获取配置文件\n') - notify = $.isNode() ? require('./sendNotify') : ''; - //Node.js用户请在jdCookie.js处填写京东ck; - const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; - //IOS等用户直接用NobyDa的jd cookie - if ($.isNode()) { - Object.keys(jdCookieNode).forEach((item) => { - if (jdCookieNode[item]) { - cookiesArr.push(jdCookieNode[item]) - } - }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { - }; - } else { - cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); - } - console.log(`共${cookiesArr.length}个京东账号\n`) - resolve() - }) - } - - function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') - return []; - } - } - } - + const jd_env = require("./utils/JDEnv.js"); + const $ = jd_env.env("东东电竞经理"); + const ZOO_OPENCARD = $.isNode() ? process.env.ZOO_OPENCARD || 'false' : 'false' + var _0xod3='zooPanda.0616',_0x4ea9=[_0xod3,'woLCozbCuMK5','wonDlAZ9w5M=','WMKSwqB+Pg==','EFtvwrbCgg==','QmZAwqzDuw==','D3HCmMKxwrY=','BcOSNX84','wr/CsynCgA0=','L8KLfcONGg==','J8OqH1Y4','OcK8wo/CjMKy','wrHCk8K6w5fDqQ==','w5HCp8KLw7gs','AcKrw6UwHMKgwo7Cr8KyBE0Iw7pPw5Vqw5fCocOR','w4nDmcKjwq44','w7vCv8K2w602','wpTCvjVODA==','w6fCvg4Awoc=','DXrCghDCmQ==','woXCrjzCnwI=','wo1sw5c=','woDDpDNvw6w=','wqAecsKaw74=','wr/CncOr','w5wvEMKaGMKo','wpDDvh1uw6s=','wq7CgwvCssK8','IgwXKg==','BsKFB0Y5f8K3woXDuQDCnMKu','wrnChyh7','JwAaKjRQQEMPw6R7w78=','wqvCm0zCug==','BcOJZcK9wrUIw4LCnMO7w4TCkhg=','w4fDssOpwqMOwoN/Gx9WwoUAw7vDgQ==','wq5fNcK+','w4zDtcKnwqMRwpVDQgNNwo8c','wopaeQ==','wrfCpQvCrMKY','Ti9KwrnCjQcy','ZMK/wqpfw6Ivw6XDvQ==','woNsw5RZ','wqHDvMOaTWE=','w400FcKX','Kgwe','5L+N5aer77+e','EcKZBk0=','wqfCnUvCqMOZVcOzHw==','772t5q+W6LyD5pyH5YuS5Lu45Lmx55aw56uE57my55Km5LyK5LiK6YGA44KC','McKPw5oiWw==','A8Kbwqkb','XktDwqDDhsKj','wqHCl8O/w6oEwrc=','woDCsxbCuyvCr8KGAMOnwq4=','w4bkur/lir3Dow==','IAHClsKkYQ==','UcK5BwIlAMO2AsKLJAhO','w4jCn2LDvSUNw5fCq3xkf8KGw5fDncKGHMKWaCIYWA==','wrLDlMOnXErCucKVwoPDrDE=','wpzDmMKnw7nCpx7Ck8OzBQ==','YBcYPCx8a04Qw6oj','w5nDt8K3wq09wpJlRgk=','EVjCiMKgwqA8w48JcA==','d8KowoNWHB5VYsKmacO8WMKuwqDClxkfwojDlMK6w5c=','wqfCk8O/w7Q3wrdjRmDDkg==','eMKfKcOhw5zChcOQwrE=','XcKPH2HCoHY=','WT4KwrvCjQcfwrnCpsOUw6zDusKHw78=','wo/DvC1iw4s=','Dn1TwovCrg==','w5fCmWg=','EsKAZsOrGcKvw5Nj','w5DClGfDhjM=','BsK+w7cvRsK3','wo97UcOOTeWNoOa1gOimnw==','EsOXMXcjwrM=','VcKCA0d9SsK6w47CpQ==','dcOpPsKIHMOZRA==','wq/CkBYpTz/DuWvDgCNU','wqvCj8OUwrPDocKnAgBs','w7bCkmrDiSU=','wpHCkcODw6gk','U8KcDmbCpnzCvMO+bMKowonDosKNBWMhw5srwrnCqMKMw7cdw5RjwohywrbCs0tVJsOhw4M6M0PCm8KUScOrw6Rcw6g=','w4zDicKow67CqTPCpcO+XA==','CMOgccKNwp4=','DMOwwoHCnkI=','wr9de8OAAQ==','OcKZBFVd','wrXCtcKMw7fDsw==','w4nDmMKnw77CuTI=','VyMC','wr8xwp7CgsKw','Yj7Cs8KTW1lWwrHDmg==','woHCoQDCoivCqMKcH8Ow','wrPDlsK7XnvCucKfwprDqDxQHsODacKTG8Ko','wr7CjcOTwrHDkcK9JARwD8OMaCzCvMKsd8KnfcK2wo/Cp8Kew4vDmGZEaEYme8ONwrnClsO+Bys9wphmwqcUwqMcOA==','esKNJcOn','5qKw5o6K55Wf5omt6K6a57yO5LqA5om16KO85YSj5L2z5LiO5Yup','NyLCvcKQQG9RwrLCuMOqw7LCoz4He8Omw4XDj3zChmE=','w6XDpyx7wrDCoQ==','B8KfFlhz','YcKdOBBi','TyMOwqnCkF8=','AcKrw6UwbMKwwo7Cm8K2GQ==','B8KXEV9JfMK3','GMOyVRTDjxrDpcOKwo5ICg==','wrHDlMO9Qw==','NDjCvcKERWVLworCjsOlw7fCuAgHfcOh','w4TCt8K5w54X','S8KmGsOLw6E=','asKJJD1S','AMKCA0BjZg==','MsK7wqc6wpo=','QcKUD1DCp3PCjsOv','E0stw7t1woc=','wr85wpnChcKKD8Kh','QWJawo3CjG5Xw7LCusObeg==','wrhRIsKswrHCpcK8w5pW','w5PCjsOrasOX','wrzClwfCqsOZQMO7CMOsw5wew5bDvAJyw49e','wrXCqRbCq8KEw57CigDCoMOIwpAeaTkrw7Zfbhplw5ksw6gCw7ARw6Juw5hSGMKywrrCtxlJw7fCkcO5KmDDmcKCHQ==','EEUvw6o=','IQwbOhU=','wq/Cj8OVwqvDmw==','GMKrw6Y=','wrjChyNpEMKm','AcKTFFFkZsK2','ND/CocKI','wpZ0ecOSI8OAbw==','wpvCpFHCj8Oe','wq7CkVzCp8OWQMO/','w5kdIMKHBA==','ZMK+woZaHRlv','woTCp8Oiw5ci','wpVjPsKuwr8=','wr9EMMKzwpvCog==','UsOpUw==','EsOfWi/DqeWOqeWGkOaxog==','ccKUEDpF','OHzCvMKGwrw=','ZcKjwqRIw4V8','wqwsREdLw7PCqsO8AwY=','QMOMO2Emw5Fmf8KH','CFjCg8KUwos8w4Y=','w6/CgEnCsMOca8OqA8O9w5pX','AhkgMxw=','wqzCiSV2','w5UPC8KKHw==','UsK5HR0=','wp1wYsO8EA==','wp3CtcKOw68=','woledQnCvg==','KMO9wqI=','R8K3EBA=','dcK7P0XCgQ==','fcK0wrlVw58=','esKjwoZHGw==','WEFjwqHDmMK+FX8=','WEFlwqXDmsKyCVvDmAjCqA==','5a2f5oui5Yil5YiE','w7fDoD5mwrbCpkMCw5zCtEA=','wq1tw59Zw7E=','BsOFYsKh','wqFRKcKYwo/CosK2w4NAwo/CnHJ9wrLCkS8=','NsO3wrbCm0fCsg==','wr49cMKNw6Q=','wrTDuDFZw7I=','fsKvwoRPHFAlOcK/c8O5dcK/wqzChxwSwo7CpsKlw4tKwpPCnU3Dnwk/U8K9w5LDlsKSw7DCrBbDhcOHcGzChA==','LcKvXcOzGA==','wodFbjbClBzDr8OMJm5kL8O8wrUeBsKxNMKrecKYMMO/woHDgcKOw7QeL2UTwq3CtQ==','wpMwwo/CosK+','HMO5R8KdwrQ=','Z8KILcOjw6XDkMOfwo5Hf8Odw5RacMK4wpjDqFhYwqtrwr/CsMKkw5Y=','IMKfw58f','PcKtTMOE','w4TCkMKuw5PDmi/CvFXCqTLDh8KVw4B6OcO+KcOYwrBowpBMK8KfwpQhTcOzMcOnwrXDpF7DkwXDpcK/XMKgwpNjACTCqMKcw58qw6rCosKab8OufmojMMKfCMK2w4ECw6UTwoTDrUPCt17Cn0tAL1/CuRPCnjAAPsK8wr4Fw7PCk8KaAcOSw6ETwrrDmA3CrcOpeA4ewq0bw6Q2Bh14wr7CukjDqG0nwo8ewpg+KU/Chyw+w5peK8O/wppiWMKkwqbChsKiwovDnG/CsMKzdsKawrrDgy/Dg8ObS8KNwqnDjGhpN8KnDUfDosKMAx09EMOpwp/CkcKww7jDpH/CrTnDkMKWNsK8wp8WSi4DwqIle8OUQm/CoD7CmMKywpkdwoUfYU/CtsKeNXHCicKjIxHDjMKZMcOQw6B5H8K6w5NPRsOlwqNPHGHCjGMAZilKCwY=','BQsDLzs=','wr5+HcKewqE=','w4jCqA81Vg==','w7fCiUM=','STUJwpjCkA==','AHvCsA==','DSfCoMKLVQ==','5p2Z6ICL5omy5Yqr6I6h5Y+D5Yuj5p6G5Z6o5Yuc5Ymz5rKm','w4rDs8Kw','BlQ2w7Jyw5nCu0tNXXXDn8Ohw5YVwrtjw63Dm8KkesOINMKbwqgGwqZ1A8KMw7YeeQ==','JwAGNHwWCcOlw7jCrcKzCV/CiEQ3wrY=','BmZLwpLCjlJCw7/Co8ORKQXDpUvDlFcyRcOQAEJaZz/DssOEwqXDp8KwBcO5wpjDpg==','woHCnhvCk8Kg','wrrCnThq','w7HCiBcCwr8=','DsOMLmI+wrQgNMOCwokCJA9yAwLCpTbCq8OJw59BeGLCm25MEyfCt8KPwobCicKbccKPLcKqVQfDhQ==','PMO7wqvCnF7CrwXCnR7CnS7DhUlaawQrMMKDWVcmajXCiwnCug0=','KgoXHzU=','LwkoOAI=','wqQwaMKpw7kbHcOuwpXDm8KgAAd6a8KFwrXDpMKca8K6BMK8w4XDgMOQwo7CjMKoOSwWw6MUFcKy','RkpRwqXDmsOsEkjDkRTCozbCisK4M8KUw6AvWg4VwowPV2I=','w73CgcKTw4w=','OsOmKMKXNMOfUsKtw7HDhz7CkljDmMOud8O9wq3DhQ==','fwDClsKlUmlQwr7DiMOkw6HCsjkQYsOiwpLDum7Cm3cNbkQudcKawpnDjMKtbHgewoTCkVnDqxrDk8K1X8ORb8KpasOTw4XCkiTDssOZwpRRb8Odwr/Dj8Kdw59HwpRww5lwAcKOwqHCqUnCokPCksK5wrPCsUHCucOVDcKMUig8c0zClMOhcsOZw5AUN0nDisOCw4Y7w7N0w4xywrnCiT4dQAk9C8OUw4jCvTRNwp1Gw7TCq3wLU8O/Z8KoG3QJw5VzMRbCtzbDqRHCq8K4wq/CgcKuw4TCpQsCw5vDrBRsKsOeUAzCiHM9c8OqJDbDisK3w7x3NMKdwrNuIMOfwr8Nwql5wpc7w7BGGTTDu8Onw4jCj8OOUsOrdjrCrw3Ct8KuET5ow5F3wrTDs8K8TgRVScK2NMKjwqtUwpAHCAIAfcO/KyQ2w6EGNcOFw4w=','W8KnO0vCoQ==','wrIOfmVu','wpDCmMKvw7DDnA==','LzgqIjQ=','LD7CpsKQQzwQw7rCn8Oiw7/CpSIYdsO2w5jDuifCgGEaJEgvOMKdwpXDhMKndTNZwrfCllvCqh7CksOvXA==','BFDCnsKNwqE8w4YIZ8Ktw5IKCB4iworCn8ONDcO3REPDvsKwwrvChk1B','TV5AwrnDg8K0GmzDkBTCo3zDm8O6bMOUw7whHFBcw4wOETXDllcxw4jCv8KewpIB','FcKDVMO3Mg==','IhDChsKCfg==','e8Kowq5dw5t6w6rDghrDvhfDnWrCkAPDq8OeY8Obw58Kw5bDh8O1w6Y=','w5LCl8OGfQ==','wrDCiCgXwqnCnHsHw70rw71Qw7Jowp/DhRBkNQ==','J8O8E1Y=','w7zDkARGwr8=','H8KZBQ==','wqdhSQzCug==','aMKDwoZLw5w=','w4vCp3XDjy0=','5Luo5LqO6LyR5Ziw5Lqt56q85pSR5o6X','wqHDtCtnw4A=','w5vDnMKvwqTCoW/CkMOzFjkVQA==','TV5AwrnDg8K0GmzDkBTCo3zDicKkdMONwqcsDlpWw5UMFCvDm1sxwofDsMOQw5hP','woV0Ww==','wrYsMcKRw6tPQcOswq7DvMO1A08i','S1RZwqXChsO3H33DnxfCrCfDlMKlI8OYwqI=','fsKvwoRPHFAlOcKmasO+KcKnw6vCiRxYwofDpMKhwpdfw5HCnVvDhxdyXsKxw5PDm8OTw73DvB3Cn8OIY3HDglcpQFXCtHTCtMOLwpDDuwgjK8K1VAkcFA==','w5/CiHHDpAw=','UTgmwo3CmA==','LsKET8OtAA==','FRQ8FAE=','Cj5bLQBeAsOuw7vDrsOjSw3CklFlw6RowrzCtWFAw7lHwqFQw7fDucOkw5wuw4ktwrrCtMOSw4DCtMKyw5vCqsOSM1TCpU7DuQ==','w7DDnsK0w6vCoQ==','R8K3EBA3QcKuH8Oad0lQfUAbw4YuJcOUw5EgwogLdcKiwqXDsHLDicKyf8KBG8O/CsKCYSjCosKBw5/DlsKPw7TDgsOjBGEAK8O3wrRGw6nCkcOCT8KeeRTClFpqwoF8w6/CgsOAwonDsUnCo8KlwqbCnAlcw4XCtMOww4Nfw6ETw4scw6xPScKeNHw8wrImEMOwwqnCtsOlX8OFalfDgcKPw77Do8K2KA1JFmtPwrPDn8KqCsOyw5bDscKzw6XDqxUtw7RwDcKNZ8KTWsKiwqsmQkZ5Sx8Zw63CtcKIw5sZwowiwpRkw7QXNy/DoEcMNCsYGxVGwrEqEcOBw4nDisKpa8OfwqvCgCTCqEN3fy7DgsKPVjHDrV3Cj8ORPlYCD8KRwp56wrAbEMKowr/CisOdworDhizCksKdwpwzY8KzTsO8GsOUYE/DlyXCv8O0w4nCv8OOZcO7aA==','wq/CvsOywr3DtA==','wrQiUA==','OcKkwojCvcKu','wo3CnxbCu8KO','worCp8O4w6YN','wqXDmsOwUg==','wph7WsOyEQ==','w7DDo8Kiw7nCiw==','H8KFGmVC','5a+M5omq5YuG5Yuf','d8KowoNWHB5ef8Kqf8Ok','wroywr3CoMKA','woN0fsODLsOA','wovDtj1Iw6PDu205w4hJw7LDvkzCvSnDtQ==','M8Ktw4cOVw==','woRaeiM=','wo3Cv8KZw6PDlDQ=','AMKYwr8HwoPCgBTDmnvDjsOTwpIpw5zDn1xrw6XDljI=','ZcKjwqRIw4U=','MMO9wq7Ci0U=','w5LClVLDvi/DjWbDnUQ=','w4/CmWTDqCc=','wrbCsMOkw6YN','w5vCkyw7wqc=','GcKlw7E=','FcKbwp4WwpDCjQPDog==','JsKXwqMSwqA=','esK0wpc=','w6xkPMO5wqrlrq3miKLkuLrliYzvvr7lvp3liL/lhIM=','w6nCiSka','wrXCnsOjw7Aa','TMOnWgPDiyg=','w5bCi8OlYcOw','wqfClsOfwqDDhsKrAwhxB8ORLWzDosK3Z8K+a8KgwpLCs8ObwoHChm1TZUw9ZsOqwqDCnsO2QmFjwpZ7wrE=','wrHCnUbCscOCXcO6HsOpw5VHwpDDuAY1w5JIw4zCn3HDjMKFbkoIVXbDog==','w4cvBcKeHsOhIHg6wo9Tw4oXwrpNw6gFaj4PwqoRczbDmF3DscKYwpjCsERCwqIoMQ4=','FFLClSfCtw==','B8ObF1MD','B8Kvw6Y3UsKnwoQ=','wq7CmX7CpsOS','wo9ow6pyw5M=','wrjCl8Opw69FwqJgRHPDmQ==','wrs0wprCl8Ke','wp8meVlX','w5DCpRojVg==','wol3w4RQw5ZrwpM8w4RCYcO/C8Ozw6JvdcObw6TDlVdLw77Ct0/CpmVRDMOWwophwq8IDMKHYCrCk8OUwrg=','dsK2wqZdwodhw6fDtxTDvRjDjDTCjRPCp8Kc','VMOiVRfDlH7DuMOjwpZCWRsiacKcEMOIRsO4fQ7CvW7Ch0I=','WMK5BcOX','R1fClcKLwqM6w5AHLMKwwpYFElNNwqfCpcO/SA==','WsK+woknwoDCiwLDrjXDksOQwp40w4nDsFgsw6LDlzNfw61eIQzDnMOzw5bDkiYRwq3CjsOBVQbCnR7CosOsw6FNw4QiZsOfR8KoacKhwoEAwqkJw6XDjVRJwo7DqHhLCCXCggh9w57CkcKtQsK+wq8Iwq7CisKEwpRtAMOuw5fCrU/CoMOlw5nDmsO3w4stwr9bVUEucVXCo0rClcOrGyssw6LDksOQLsKQwq8gVsKxw6sJbywmCsKKKsKow4Qrw4fClcKTwpTDpsOKFFxxw6Adw4rDssKHD8ORwqAgwq3ClzvDpSNEZcKeX8KXMGvCmVYkXzLCtzsfwr4lKMOww6fCl8KywrkNe8OXwpXDp3LDq8KQwpfCjcOlwrPCiRTDnMKBwqdMKcKUw5p0OcOPwrdqUMO/woHDmcOrQF/DnmYrPMKfwrnDl3dNH8Ozw4A5wqQIwrHDgMKYW8KW','YcKlwrxZw6c=','w6zCgCMjTw==','JcK0I31H','AcKXDFB5eA==','w67DtcKywoIj','wo/CrcOTwrXDnw==','L1zChMKPwrI=','w6vCh1bDmSU=','IsObFXYE','wrzCgcODwr0=','YsK0wptaAQ==','wqDCpQnCp8KF','B8KZCVF4','5bSN57iV5rGL5p6f5YiR5Yub5q+y5pWO5LiA','c8OlQSPDqA==','w5fCt8Olf8OQ','5Lq65LuH6Lyk5Zuh5Lup56iQ5pW65o24','wo3CuMO/wojDmQ==','w4cvBcKeHsOhIHgvwoMQw5kSwroHw6YFLnAJwrRIKCzDjlnDhMKVwpHCqB5Pw6ItMUzCt1vDmsO7w6HCncK/w6bDjjhnwojCocOuwo0dwpxQ','wpHDmSU=','LQYcP2pCc14Ww6o=','Qg49wprCuQ==','wp12MsKywqA=','w4DCv8K+w7Ic','DMKYw6wCVg==','PcOAwr/Ct04=','w63CiRUUwqw=','wpnCqMO+w5gs','wpTCucOXwpfDtQ==','w4PCvgUdYA==','wpLCjcOSwpzDsg==','w4IWMsKaFA==','wrLDlDdkw4k=','woBZcTXCjw==','B8Krw7g/XMKp','wpzCqDbCojU=','EcKVwr8Rwoc=','wrxmZcOCEw==','FsOPcsK7wqkfw7g=','NsKuwrLCmcKNDsKhw7pXP3Vswro8','wp7CkBDChcKv','w5/Cp8KDw582','w6fCrT0Awpw=','wqJZMsKswqDCsMKow48=','VsKeDm4=','w6nChz4GwpfCnW8D','w5TDhcKlw6HCoiDCl8Oy','wr1oXcOGMA==','w4TCu8K9','XsKQHUrCu2A=','KGDCtQnCsA==','w5rCg3vDpQ==','wq4reMKg','Y8OnKcKa','w6jChxQ/VxPDkmbDny0Mwps=','W8KMNGDCrXc=','w7ZiXUhXw6jCqsO8Dw3DhQXDiQ==','ZMKfAsO8w7HCjg==','asK9wrbCi0XCoi/Clg7CnmXDlQ==','w5LChUHDoi0N','UCkcwr8=','VMKQCErCqHHCiw==','w7fCt8O8UQ==','XiIT','w6fDksKbwoInwqRJcQ==','BMKawrs=','KCXCtQ==','wpjChyNpEMKmIELCow==','Vi0V','w50+B8KLH8Koag==','wpjCv8Kew7LDmTTCsg==','wog3woXChcK8A8KPw6vChQ==','wrPCrxbCpsKKw4TCtA==','wrJ+YsOdK8ORRCY=','FUEww7tpw4nCvw==','AsODasKswqMJ','5py754GG5YWF5pS56I2+','5Lqt5LqU5rOs5p+q6L6X5Zmu5pWQ5o6o','wotEbzfCiA==','wo/DuAtHw5o=','44OE5oya56WY44OT6Kyc5Ye46I2i5Y6i5Lm15Lqk6LeT5Y+U5LmcfCfDsVVpEQrnmYHmjrTkvqXnlIzDjRHDtWXDv1bnm4Pkub/ku5bnrrnliJToj4zljIc=','wqZ5AsKVwqo=','esK6DcOZw5o=','wrRIKcK/wpbCqcK9w5IewoPCu35sw7LCjCQ0Kxxvc8KWwokTwobDhRFgwp7DoGJXwrAAwqLDpw==','wqA1T1Rsw7/CvcOvHhDCkxfDgsKwPsO7I0rCv2deJMOcJinDmMOGw5sFO8Onbj3DoG4RworDumUG','J8OWF1EB','bOiGouadtuWFn+i1tOS/seeUp++8l+itjeWIn+WdhOWlsemYvOWcq+WNneebouWTheewp+W7teWNkOS+jOaSmuOBlAHliYDnibHlm4vvvaojwqzCjsKSw5TDgjHDjXbDpUgLw4XDpxhPOy/CgTljWzjCvMKL5LmW5Luv5LuT5LmH57qb5Y6277+ZwoImPsKSCsOQYApuwqPCmEDCtk43wqrCjAIGVQoTwqfDsG/CruaviOaUvOS4seash+mgq+WOmOe5huWOpOeZoeadqOS8kR4=','dxgnwojCnw==','dUd2wqPDog==','LhsCIQ==','DsKJwovCm8Ky','HsKFBQ==','wpHCu8KHw7M=','w4vCl0fDtyQ=','wqrCqcKPw6TDtiHCvls=','w6rCo8O7WsOw','LSTCtsKFSA==','wrHCh8OEwrPDsMKyFhU=','acKewoJUw6Q=','DcKbwqo=','TsK4w6/DhAHDrEvlv7nlprHjg6fkuq/kurDotJzlj5s=','HcKfAV9YdMK+w48=','M8OLP2ADw69ifg==','woVxW8OER8OxJX1ow6w=','Uj8pwqPCmQsu','w6TClxA=','CMOZN3c=','44Ox5o+T56aK44Cxw4Y+w5N4w5VO5be95aa85pS2','5Luo5LmW6Le05YyX','wpzCrhfCrAw=','S8KxFwJEBcO0OA==','w7XorK3phKfmlKbnm4PlvJXojaTlj6jCjDXDg8KEw55oc8KhKMOQwrF7wpsDIsOUwox+DsO/OsOvw7bCqVLDogPCpcKiUMO2w44GXXvCrMKAwpU5w6zCpcKAacOk','w4zChsK0w6Im','LxA3ICNG','dsOaFcKlKg==','wofDhwFDw4A=','w6HCpCwlwqk=','wqDCl8Oiw7smwqx4RGPDhQ==','CXdWwps=','wrzCgcOIwrPDl8K25baJ5aWB5pWBX8KEdQ==','wpPDhsOxRVvCrMKXwo0=','5Lil5Lu46LWR5Y6t','wobCgcOpw60mwqJhSA==','JuivmemHveaVpeebkeW+guiPjOWPjsOaFMKiOMOYw6w=','wrooVkI=','JlJywro=','Q8KOwrl7','I8OKMlgd','wqAfelVb','Ji/Cs8KO','w60cIcKMJw==','TcKMBQRr','wpNmw4BMw4Qyw5k=','w5HCg8Kcw6ID','E0sTw65rw5/CqHxFQX4=','woHCryDCvQbCtcKLCA==','f+ODmuS4uuS5h+i0leWMsw==','wq/Dm8OwUm0=','wqUxwonChcKbB8Kow4o=','w4Y/PnrDnV/CrsKYb+KUlSrojrflvIHDpg==','w6vCgRY0','w4HDuMKRwrMv','wqAhcsK+w75J','wojDkcOlbUI=','wpzCh03CscO5VcOzHw==','PnXCo8Kewrc=','M8KuwrXCtcKS','AXXCoxDClQ==','wqLCogfCpMKu','wrbCncOrwrfDmcK6FQ==','wqBfNg==','w4zCn8K+HT/Dp8OQ5b+o5aWC44GP5LqI5Lit6LaS5Y+s','FcKHYcOlDw==','w73Cp8K/w7ohd1d1','w7JnHQY+wq3Dr8K9TGI=','aMO7AcKMJMOZTg==','EcKaYg==','wp9wYMOT','44K95o2G56e+44OXAcKJc10FQ+W0mOWlg+aXhw==','5LiB5LqK6Lei5Yyx','GsKYBlFu','w6fCjRQxagHDoHc=','NOitsemHueaXl+ebn+W8kOiMpuWNpcO0RUMKaSvClhHDlwrCrydRwqctwp8Twp44Q8O2OHdJYWHDphnCsnrDrgZrBcOnPE/CosKnworCq8OjGMO5','w6/CtCMJwpc=','aMO7A8KMJ8OV','MxjCisKmWQ==','woTDtAtaw4Y=','w6nChQMuwpo=','MsKgwqY=','GhYXBTs=','wr8hcsK9w4RORsKowovDiw==','KivCv8KF','BcOXNXkkw6vlt73lpKrml7LDgEF2','KUrClcKNwpo0w48J','5LmK5Lip6LS45Y6t','a+isg+mEgOaXkueameW+seiPmuWNk3nDksOPwpAzw40=','w746GsKYFA==','wprCnMOPwpLDrg==','wrJ5w79Cw7Y=','w6XCp8OuVw==','beOAtOS7quS6gui0veWNjQ==','w5LCmGvDqDE=','w5TDhcKlw6HCgiDCl8Oy','wo7CmylwN8KiPm0=','BcOSVEkqRMK5fcOf4pWRW+iOkuW+mAw=','w5nCk27Dow==','XsKQHQ==','5paE5rG/5oiW5YmH6I2x5Y6t5Yqt55eA5oqj6Yub5p605L6X5oCw','wopGVCnCng==','Pn7CoMKdwp4=','csKNwqdGw4A=','W1RcwoLDrQ==','XE9CwqbDjw==','woJsw5RF','w7PCrcOkXMO2','wpLDuC5yw6w=','DxAPGyhIelld','wqvCgcOMwr3DkA==','CMOFYQ==','wqjCjSJmN8KsJ2HCgcOt','w5HCih8udg==','wrfCqgHCsDI=','J3LCsRrCvw==','EFbClw==','w4bCtcK3w60=','wpwCVsKUw4I=','wrnChUTCq8Ol','RsK5AApi','SsKY5aWr6LS3bMKu5Y6Q5Zu7woDDgA==','T8K3AyZG','IiDChcKwWg==','wpHCijvCnjE=','f8ODXzPDiQ==','FcKVwr4Jw43CgALDmnvDjsOTwpIpw5zDn1xjw7vDmA==','5bej57iD5rGu5pyk5YiC5Yua5q6i5pei5Lu0','5p2L6ICJ5oud5Yu96I2V5Yyy5Ymd5p6p5Zyq5YiU5Yi75rKb','J8O7D3gJ','wr7Cm8Kgw4PDtA==','wq0xaMKx','EsKFEV1lYcKHw4PDtRDCmw==','ZsOaGsKMIg==','woANwqDCj8Ki','N2zCusKewqM=','KFHCpQPClQ==','wrlDNMK1w4HCu8KhwoVSwo7Ct24=','EMOFbcK9wqhG','w47Dg8Ktw6/Cog==','wovCsMK3wqkXwpR/U1EWw5s=','wp7Cr8Kew74=','wpPCv8KEw7HDjCg=','w43CmsKMw4QD','U8KMCWbCumbCt8OjeMK9wp8=','JTQ5CDw=','wop7ay3Cpw==','wrMoTl8=','IsO9wrfCq0rCpQk=','woFkfsOe','P8KOw4kfdsKGwrTCtw==','Z8KWwrx8w7k=','O8Khwrc=','AMOZNmEo','wqArew==','wqJwbCrClQ==','acOhJsK2DQ==','wr3Cm0PCpsOZ','wq/CjRksTRTDqGDCjQ==','KcKuwqjCog==','w6XCixA=','wrPDl8OdXnY=','w4M0Fg==','KMKmwrQIwqY=','c8KVwqZzAw==','QMOLGMKJBw==','CsOXPQ==','w6k9PMKaBQ==','SsOgXCrDrQ==','JAwdNg==','V8K9BxxmEA==','KcOzwr3CsUrCtRLCkAnCg1zDmFNBIB4=','w5jDg8Kiw7M=','TMOjRxLDiDE=','wrLCnsO+w7oJwqd1cmTDj8OtwrXCrH9twofChMOKw4vCuw==','a+ODpOS5oeS5vui3hOWMkw==','An3CtBjCswzDi0U=','w47ClUHDmA7Dh27Dlg==','U+S5muiwpOOAtg==','wqDDmRdzw7U=','w6LCnsKKw54Y','wqPChFHCt8OZ','QEFX','wrDjgrzkuarkupbot6rljrY=','N8KhwqXCs8KC','wqfCnUvCqMO5VcOzHw==','McOZY8Kqwogaw7DCjQ==','wr3Ci8OGwrY=','w7TkuabosKTjg4A=','dMOrYsKWMMOVUg==','w4/CscKu','TMKcGQBG','5rCa5p+/5oif5YiS6I++5Y6+5Yq455ex5oiu6Ymz5p2T5LyV5oOc','P8K6wrXCvg==','w4/Dn8Kjw7jChSU=','McOhwqDCnGLCqAfClg==','wqHClCrCsAw=','w6nCkWrDqR4=','dMO7KMKRbMOaRMOpwr/DhSPCnA==','woHCrxjCrBo=','wpTCtQfCoQ==','FlHCkzzCiw==','w4wUGMKYBA==','w77ClSgRwpfCnW8D','woXCgsK5w5rDiA==','B8O5GEou','wpbCnsKHw7/DtA==','w6vCixMj','Mh8cMTxC','wpNGeyjCogzDrcOXPWQ=','wpPCtcKN','w6t4w4rDjsO15a+q5ouV5LmU5YiW772w5byV5Yi95YWc','w7TDvCl2','ZMK+woNKAx4=','CcKaYMOyPsKgw5hp','w7XCg1PDtSPDiW7Dlgs=','JwXCu8KWWQ==','G3XCvgc=','wqrCmF3CocKYU8OrE8Opw5o=','wrPDhsOxRVzCqQ==','w6PDoCh9wozCvHEE','wrPCgcOA','5L6m5aeI4oKM','wrYkVEd6w6bCqMOy','wr4rwo/CnMKcCMKjw4A=','SuW8qeWIouS+teS4gOmDnuespOe4p8Kk','EmVewozCrl9Fw6Q=','McOGwo/CiHI=','bMKewrRwGQ==','w5LCusKMw6cp','w47DmcKtwrAL','wqAEXV1/','QsOPFcKGEQ==','P8KDasOWAA==','worDuCI=','w57Cl8Kjw7gN','wrxRI8K0wos=','w4HCp8KWw6cIf1Q=','w6TDtjlswqrCtnI=','w4HCm8KXw60h','BcKVwrkD','w67ClUHDmAnDiGXDnA==','w5jDjcK1w6/ChS/CnMO4','wqjDnMO3XHvCrMKXwo0=','wpnCrxQ=','5rGo5p+95oi45Ymc6IyA5Y+i5Yqu55WS5oq66YuL5pyp5LyY5oOk','AcKlw70+XQ==','UcK3Hwxk','wqc3wo0=','w4rDg8K1w74=','H39VwozCklhHw6/CrsOUakPDrhDCjUk2HsOcDFxYPy7CrsOLwq/DpA==','wqHDj8O9RznDrcKewo3DrzNFRcORN8OaDcK/','fcK+wpVPQgtmf8Kxfw==','5rOS5p+/5omy5Yqr6I6h5Y+D5Yuj55aC5oqv5L6U5oKH','QsOnIsKIKsOVasKC','wqvClsOhw68R','Ty0WwqfDkQYlwr7Cr8OSw7A=','Y8K4w59WAR5vZMKmecOjKMK9wrfCigwT','ecKeOcO2','woPCqR1YLg==','LcOmwrzCnX0=','f8KGPMOhw5c=','w6zCq2vDvxM=','wqUUwr7Cq8KU','GsKhw70IcA==','YcKNFSx5','EsO9ScK5woM=','5LmK5Lip5rK/5p2T6Lyp5Zqh5pe+5o+W','IcOQFVgB','AA/ClsKydg==','wqbCg8OMwo3DjQ==','eAAwwoHCiQ==','DsOMLmI+wrQgNMOCwokCJA9yAwLCpTbCq8OJw59BeGLCm25MEyfCt8KPwobCicKbccKP','MsKFwonCkcK7','ccKQFWTCoHfCqcOOJw==','w4/CgMOnc8OX','MsKYw4MBYQ==','wrDCnsO5w71HwqRpWVrDjMOswrPCu35RwpbCssOEw4HCoS1u','XcOqQQXCiyLDpMOawppI','BMOAKEEh','wrzDncOtQGw=','w5rCvD8xwrA=','LjIfPQE=','wqYJwqHCj8Kc','CcKiTMO6Ag==','ctszooPanZtdca.rWQ0xU6QNT16=='];(function(_0x59d012,_0x566008,_0x1f844b){var _0x36787b=function(_0xb2d0af,_0x114be7,_0x5a2e46,_0x24a1a6,_0x4b5f55){_0x114be7=_0x114be7>>0x8,_0x4b5f55='po';var _0x3539a5='shift',_0x567414='push';if(_0x114be7<_0xb2d0af){while(--_0xb2d0af){_0x24a1a6=_0x59d012[_0x3539a5]();if(_0x114be7===_0xb2d0af){_0x114be7=_0x24a1a6;_0x5a2e46=_0x59d012[_0x4b5f55+'p']();}else if(_0x114be7&&_0x5a2e46['replace'](/[ctsZtcrWQxUQNT=]/g,'')===_0x114be7){_0x59d012[_0x567414](_0x24a1a6);}}_0x59d012[_0x567414](_0x59d012[_0x3539a5]());}return 0x8fc82;};return _0x36787b(++_0x566008,_0x1f844b)>>_0x566008^_0x1f844b;}(_0x4ea9,0x152,0x15200));var _0x3fa3=function(_0x17bf54,_0x2a5041){_0x17bf54=~~'0x'['concat'](_0x17bf54);var _0x12548f=_0x4ea9[_0x17bf54];if(_0x3fa3['Rqnqcf']===undefined){(function(){var _0x62b9a=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x4f1e74='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x62b9a['atob']||(_0x62b9a['atob']=function(_0x3797b8){var _0x5bd162=String(_0x3797b8)['replace'](/=+$/,'');for(var _0xca2b92=0x0,_0x51796c,_0x20c8cb,_0x2b9cea=0x0,_0x360510='';_0x20c8cb=_0x5bd162['charAt'](_0x2b9cea++);~_0x20c8cb&&(_0x51796c=_0xca2b92%0x4?_0x51796c*0x40+_0x20c8cb:_0x20c8cb,_0xca2b92++%0x4)?_0x360510+=String['fromCharCode'](0xff&_0x51796c>>(-0x2*_0xca2b92&0x6)):0x0){_0x20c8cb=_0x4f1e74['indexOf'](_0x20c8cb);}return _0x360510;});}());var _0x357144=function(_0x516ffd,_0x2a5041){var _0x4a9727=[],_0x53c5d0=0x0,_0x259654,_0x1aa570='',_0x1e58e6='';_0x516ffd=atob(_0x516ffd);for(var _0x5d00d4=0x0,_0x15328f=_0x516ffd['length'];_0x5d00d4<_0x15328f;_0x5d00d4++){_0x1e58e6+='%'+('00'+_0x516ffd['charCodeAt'](_0x5d00d4)['toString'](0x10))['slice'](-0x2);}_0x516ffd=decodeURIComponent(_0x1e58e6);for(var _0x34ddfe=0x0;_0x34ddfe<0x100;_0x34ddfe++){_0x4a9727[_0x34ddfe]=_0x34ddfe;}for(_0x34ddfe=0x0;_0x34ddfe<0x100;_0x34ddfe++){_0x53c5d0=(_0x53c5d0+_0x4a9727[_0x34ddfe]+_0x2a5041['charCodeAt'](_0x34ddfe%_0x2a5041['length']))%0x100;_0x259654=_0x4a9727[_0x34ddfe];_0x4a9727[_0x34ddfe]=_0x4a9727[_0x53c5d0];_0x4a9727[_0x53c5d0]=_0x259654;}_0x34ddfe=0x0;_0x53c5d0=0x0;for(var _0x5273f9=0x0;_0x5273f9<_0x516ffd['length'];_0x5273f9++){_0x34ddfe=(_0x34ddfe+0x1)%0x100;_0x53c5d0=(_0x53c5d0+_0x4a9727[_0x34ddfe])%0x100;_0x259654=_0x4a9727[_0x34ddfe];_0x4a9727[_0x34ddfe]=_0x4a9727[_0x53c5d0];_0x4a9727[_0x53c5d0]=_0x259654;_0x1aa570+=String['fromCharCode'](_0x516ffd['charCodeAt'](_0x5273f9)^_0x4a9727[(_0x4a9727[_0x34ddfe]+_0x4a9727[_0x53c5d0])%0x100]);}return _0x1aa570;};_0x3fa3['KnpMGP']=_0x357144;_0x3fa3['DZgxFm']={};_0x3fa3['Rqnqcf']=!![];}var _0x3a65ba=_0x3fa3['DZgxFm'][_0x17bf54];if(_0x3a65ba===undefined){if(_0x3fa3['qhSwVn']===undefined){_0x3fa3['qhSwVn']=!![];}_0x12548f=_0x3fa3['KnpMGP'](_0x12548f,_0x2a5041);_0x3fa3['DZgxFm'][_0x17bf54]=_0x12548f;}else{_0x12548f=_0x3a65ba;}return _0x12548f;};const jdCookieNode=$[_0x3fa3('0','xSzx')]()?require(_0x3fa3('1','zh8B')):'';const notify=$[_0x3fa3('2','[iC9')]()?require(_0x3fa3('3','wK2p')):'';let cookiesArr=[],cookie='',message='';let shareCodeList=[];if($[_0x3fa3('4','kkF*')]()){Object[_0x3fa3('5','Y0rl')](jdCookieNode)[_0x3fa3('6','xSzx')](_0x43898e=>{cookiesArr[_0x3fa3('7','NpJV')](jdCookieNode[_0x43898e]);});if(process[_0x3fa3('8','Y0rl')][_0x3fa3('9','Q]NV')]&&process[_0x3fa3('a','9c4x')]['JD_DEBUG']==='false')console[_0x3fa3('b','@cTD')]=()=>{};}else{let cookiesData=$['getdata'](_0x3fa3('c','R3[x'))||'[]';cookiesData=JSON['parse'](cookiesData);cookiesArr=cookiesData[_0x3fa3('d','Y0rl')](_0x55a493=>_0x55a493['cookie']);cookiesArr[_0x3fa3('e','*60G')]();cookiesArr['push'](...[$[_0x3fa3('f','V)4B')](_0x3fa3('10','CVU3')),$[_0x3fa3('11','er7U')](_0x3fa3('12','@1w['))]);cookiesArr[_0x3fa3('13','mHuK')]();cookiesArr=cookiesArr[_0x3fa3('14','#$kI')](_0x3f3fa6=>!!_0x3f3fa6);}!(async()=>{var _0x4255ad={'PFJMH':_0x3fa3('15','xSzx'),'yWFjl':function(_0x40ee25,_0x226bf2){return _0x40ee25|_0x226bf2;},'mNlqv':function(_0x1a6bb9,_0x79c350){return _0x1a6bb9==_0x79c350;},'BNZeX':function(_0x39c93d,_0x1ecf0a){return _0x39c93d&_0x1ecf0a;},'ZlxAk':_0x3fa3('16','H86E'),'LOjvu':'京东返回了空数据','pqlhR':function(_0x297d75){return _0x297d75();},'ntUFA':function(_0x2cfd07,_0x18f4ef){return _0x2cfd07===_0x18f4ef;},'YiFvH':_0x3fa3('17','V2BP'),'QjfXV':_0x3fa3('18','pWmO'),'duCKj':_0x3fa3('19','er7U'),'dRnjI':'https://bean.m.jd.com/bean/signIndex.action','paHzm':function(_0x49fe1b,_0x5a013c){return _0x49fe1b<_0x5a013c;},'BLSac':function(_0x49aa9d,_0x5e60c6){return _0x49aa9d(_0x5e60c6);},'xRMyO':function(_0x6033ef){return _0x6033ef();},'wRXFi':function(_0x420ace,_0x3f24ff){return _0x420ace!==_0x3f24ff;},'aPDTB':_0x3fa3('1a','NwN8'),'jBaFw':_0x3fa3('1b','[iC9'),'Hfclw':_0x3fa3('1c','NwN8'),'ErhJP':_0x3fa3('1d','zh8B'),'GcOjf':function(_0x2fe23d,_0x3f1e48){return _0x2fe23d>_0x3f1e48;},'BGPbJ':function(_0x183f25,_0x196a9){return _0x183f25===_0x196a9;},'hTqma':_0x3fa3('1e','0T0Z'),'lnUuM':function(_0x481abe,_0x58bcb9){return _0x481abe<_0x58bcb9;},'vhefE':function(_0x33501e,_0x551dc0){return _0x33501e+_0x551dc0;},'qNNtl':function(_0x30f279){return _0x30f279();},'bcNMD':'bdFRM','Qakvy':function(_0x222b47,_0xaaef21,_0xdf359e){return _0x222b47(_0xaaef21,_0xdf359e);},'SzObS':function(_0x1a55e3){return _0x1a55e3();},'lsJsc':function(_0x32b459,_0x333d8e){return _0x32b459!==_0x333d8e;},'XnhtR':_0x3fa3('1f','0T0Z'),'BjryF':function(_0x766e9f,_0x4815dc){return _0x766e9f===_0x4815dc;},'KffiB':_0x3fa3('20','Y0rl')};if(!cookiesArr[0x0]){if(_0x4255ad['ntUFA'](_0x4255ad[_0x3fa3('21','h8r&')],_0x4255ad['QjfXV'])){$['msg']($[_0x3fa3('22','*ISn')],_0x4255ad[_0x3fa3('23','ctR6')],message);}else{$[_0x3fa3('24','6RPV')]($[_0x3fa3('25','V)4B')],_0x4255ad['duCKj'],_0x4255ad['dRnjI'],{'open-url':'https://bean.m.jd.com/bean/signIndex.action'});return;}}for(let _0x3fff89=0x0;_0x4255ad[_0x3fa3('26','kkF*')](_0x3fff89,cookiesArr['length']);_0x3fff89++){if(cookiesArr[_0x3fff89]){cookie=cookiesArr[_0x3fff89];originCookie=cookiesArr[_0x3fff89];newCookie='';$[_0x3fa3('27','V)4B')]=_0x4255ad['BLSac'](decodeURIComponent,cookie['match'](/pt_pin=(.+?);/)&&cookie[_0x3fa3('28','NpJV')](/pt_pin=(.+?);/)[0x1]);$[_0x3fa3('29','@cTD')]=_0x3fff89+0x1;$['isLogin']=!![];$[_0x3fa3('2a','#CMF')]='';await _0x4255ad[_0x3fa3('2b','lsS#')](checkCookie);console[_0x3fa3('2c','9c4x')](_0x3fa3('2d','wK2p')+$['index']+'】'+($[_0x3fa3('2e','6RPV')]||$[_0x3fa3('2f','0T0Z')])+_0x3fa3('30','*60G'));if(!$[_0x3fa3('31','Y0rl')]){$[_0x3fa3('32','VFlp')]($[_0x3fa3('33','0T0Z')],_0x3fa3('34','sp%p'),_0x3fa3('35','@cTD')+$[_0x3fa3('36','f9&&')]+'\x20'+($[_0x3fa3('37','ioE)')]||$['UserName'])+_0x3fa3('38','V)4B'),{'open-url':_0x4255ad[_0x3fa3('39','Hu3f')]});if($[_0x3fa3('3a','caLt')]()){if(_0x4255ad[_0x3fa3('3b','H86E')](_0x4255ad[_0x3fa3('3c','pWmO')],_0x4255ad[_0x3fa3('3d','[%Ug')])){await notify[_0x3fa3('3e','kup&')]($[_0x3fa3('3f',')2PR')]+_0x3fa3('40','#CMF')+$[_0x3fa3('41','4Qvf')],_0x3fa3('42','VFlp')+$['index']+'\x20'+$[_0x3fa3('43','kup&')]+_0x3fa3('44','h8r&'));}else{resolve();}}continue;}$[_0x3fa3('45','zh8B')]=0x0;$[_0x3fa3('46',')2PR')]=getUUID(_0x4255ad['Hfclw'],0x1);$[_0x3fa3('47','nEz2')]=getUUID(_0x4255ad[_0x3fa3('48','0T0Z')]);await _0x4255ad[_0x3fa3('49','zh8B')](elecSport);if(_0x4255ad['GcOjf']($[_0x3fa3('4a','@cTD')],0x0)){if(_0x4255ad[_0x3fa3('4b','*60G')](_0x4255ad[_0x3fa3('4c','ioE)')],'tupZR')){return format[_0x3fa3('4d','sp%p')](/[xy]/g,function(_0x2409ae){var _0x2d84ae=_0x4255ad[_0x3fa3('4e','Hu3f')](Math['random']()*0x10,0x0),_0x971d9e=_0x4255ad['mNlqv'](_0x2409ae,'x')?_0x2d84ae:_0x4255ad['BNZeX'](_0x2d84ae,0x3)|0x8;if(UpperCase){uuid=_0x971d9e['toString'](0x24)[_0x3fa3('4f','mHuK')]();}else{uuid=_0x971d9e[_0x3fa3('50','f9&&')](0x24);}return uuid;});}else{message+=_0x3fa3('51','pSfe')+$[_0x3fa3('52','4Qvf')]+'】'+($[_0x3fa3('53','CVU3')]||$['UserName'])+_0x3fa3('54','V2BP')+$[_0x3fa3('55','VFlp')]+'\x20京豆。';}}}}for(let _0x49a9e5=0x0;_0x4255ad[_0x3fa3('56','Q]NV')](_0x49a9e5,cookiesArr[_0x3fa3('57','MIkm')]);_0x49a9e5++){if('NdqZW'===_0x3fa3('58','4Qvf')){if(cookiesArr[_0x49a9e5]){cookie=cookiesArr[_0x49a9e5];originCookie=cookiesArr[_0x49a9e5];newCookie='';$[_0x3fa3('59','pWuh')]=_0x4255ad[_0x3fa3('5a','])(T')](decodeURIComponent,cookie[_0x3fa3('5b','ctR6')](/pt_pin=(.+?);/)&&cookie[_0x3fa3('5c','KA#Z')](/pt_pin=(.+?);/)[0x1]);$[_0x3fa3('29','@cTD')]=_0x4255ad[_0x3fa3('5d','er7U')](_0x49a9e5,0x1);$[_0x3fa3('5e','#CMF')]=!![];$[_0x3fa3('2e','6RPV')]='';await _0x4255ad['qNNtl'](checkCookie);console[_0x3fa3('5f','NwN8')](_0x3fa3('60','4Qvf')+$[_0x3fa3('61','pw(8')]+'】'+($['nickName']||$[_0x3fa3('62','Hu3f')])+_0x3fa3('63','zh8B'));if(!$[_0x3fa3('64','H86E')]){$[_0x3fa3('65','pw(8')]($[_0x3fa3('66','@1w[')],_0x3fa3('67','Q]NV'),_0x3fa3('68','Q]NV')+$[_0x3fa3('69','6RPV')]+'\x20'+($[_0x3fa3('6a','VFlp')]||$['UserName'])+_0x3fa3('6b','Q5TA'),{'open-url':_0x4255ad[_0x3fa3('6c','[%Ug')]});if($[_0x3fa3('6d','H86E')]()){if(_0x4255ad[_0x3fa3('6e','@cTD')](_0x4255ad[_0x3fa3('6f','pWmO')],_0x4255ad[_0x3fa3('70','[%Ug')])){$[_0x3fa3('71','ctR6')](_0x4255ad[_0x3fa3('72','*ISn')]);}else{await notify[_0x3fa3('73','MIkm')]($[_0x3fa3('74','@cTD')]+_0x3fa3('75','0T0Z')+$[_0x3fa3('76','])(T')],_0x3fa3('77','V2BP')+$['index']+'\x20'+$['UserName']+_0x3fa3('78','9c4x'));}}continue;}$['bean']=0x0;$['ADID']=_0x4255ad[_0x3fa3('79','*60G')](getUUID,_0x4255ad['Hfclw'],0x1);$['UUID']=getUUID(_0x4255ad[_0x3fa3('7a','#CMF')]);await _0x4255ad[_0x3fa3('7b','sp%p')](doAssist);if($[_0x3fa3('7c','NpJV')]>0x0){message+=_0x3fa3('7d','mHuK')+$[_0x3fa3('7e','kkF*')]+'】'+($[_0x3fa3('7f','Ur$f')]||$[_0x3fa3('80','R3[x')])+_0x3fa3('81','ioE)')+$[_0x3fa3('82','kkF*')]+'\x20京豆。';}}}else{$[_0x3fa3('83','xSzx')](_0x3fa3('84','#$kI'));}}if(message!==''){if(_0x4255ad[_0x3fa3('85','V2BP')]('iAaHj','klOsb')){if($['isNode']()){if(_0x4255ad[_0x3fa3('86','])(T')](_0x3fa3('87','lsS#'),_0x3fa3('88','h8r&'))){if(data){data=JSON[_0x3fa3('89','h8r&')](data);if(data[_0x3fa3('8a','sp%p')]==='0'){$[_0x3fa3('8b','NpJV')]=data[_0x3fa3('8c','pWmO')];cookie+=_0x3fa3('8d','caLt')+data[_0x3fa3('8e','#CMF')]+';';}}else{$[_0x3fa3('8f','#$kI')](_0x4255ad['LOjvu']);}}else{await notify[_0x3fa3('90','R3[x')]($['name'],message,'',_0x4255ad[_0x3fa3('91','VFlp')]);}}else{if(_0x4255ad[_0x3fa3('92','f9&&')]('PZDvN',_0x4255ad[_0x3fa3('93','KA#Z')])){$[_0x3fa3('94','])(T')]('没有成功获取到用户鉴权信息');}else{$['msg']($[_0x3fa3('95','Hu3f')],_0x4255ad[_0x3fa3('96','MIkm')],message);}}}else{_0x4255ad[_0x3fa3('97','pWuh')](resolve);}}})()[_0x3fa3('98','ioE)')](_0x51c81a=>{$['log']('','❌\x20'+$['name']+_0x3fa3('99','0T0Z')+_0x51c81a+'!','');})['finally'](()=>{$['done']();});async function doAssist(){var _0x595120={'vZsQR':function(_0x48d13a,_0x324818){return _0x48d13a===_0x324818;},'tfhMI':'完成助力','AqmpI':function(_0xb70c04,_0x50ec5b){return _0xb70c04-_0x50ec5b;},'xfbYu':function(_0x157af4,_0x5d76a8){return _0x157af4(_0x5d76a8);},'gRWoa':function(_0x3b080b,_0x5d5a79){return _0x3b080b===_0x5d5a79;},'KUJaw':_0x3fa3('9a','ioE)'),'DErph':function(_0x201633,_0x187529,_0x40f363){return _0x201633(_0x187529,_0x40f363);},'eNVLl':function(_0x3b88df,_0x418159){return _0x3b88df===_0x418159;},'gDZln':'qArVN','EfMeY':_0x3fa3('9b','@cTD'),'lNuwZ':_0x3fa3('9c','f9&&'),'NImwf':_0x3fa3('9d','Q5TA'),'hikUN':_0x3fa3('9e','9c4x'),'ubIic':_0x3fa3('9f','lsS#'),'IRyjD':_0x3fa3('a0','9c4x'),'RkgiR':_0x3fa3('a1','0T0Z'),'FfMth':'无法成功获取到用户鉴权信息','FNRdw':function(_0x55576d,_0x35d9ec){return _0x55576d!==_0x35d9ec;},'JJPVw':'cXqHj','jpytn':_0x3fa3('a2','V)4B')};console['log'](shareCodeList);$['token']=null;$[_0x3fa3('a3','MIkm')]=null;$['userId']=null;$['userInfo']=null;$[_0x3fa3('a4','6RPV')]=0x5;await getToken();if($['token']){if(_0x595120[_0x3fa3('a5','H86E')](_0x595120[_0x3fa3('a6','CVU3')],_0x595120[_0x3fa3('a7','])(T')])){await _0x595120[_0x3fa3('a8','KA#Z')](task,_0x3fa3('a9','NwN8'),_0x3fa3('aa','#$kI')+$[_0x3fa3('ab','Ur$f')]+_0x3fa3('ac','Q]NV'));if($[_0x3fa3('ad','V)4B')]){if(shareCodeList[_0x3fa3('ae','V)4B')]){if(_0x595120[_0x3fa3('af','Hu3f')](_0x595120['gDZln'],_0x595120['EfMeY'])){cookiesArr['push'](jdCookieNode[item]);}else{for(const _0x2cbf21 of shareCodeList){if($[_0x3fa3('b0','xSzx')]){if(_0x595120[_0x3fa3('b1','*ISn')](_0x595120[_0x3fa3('b2','V2BP')],_0x595120['NImwf'])){Object[_0x3fa3('b3','zh8B')](jdCookieNode)[_0x3fa3('b4','wK2p')](_0x130a04=>{cookiesArr[_0x3fa3('b5','@1w[')](jdCookieNode[_0x130a04]);});if(process['env'][_0x3fa3('b6','pSfe')]&&_0x595120[_0x3fa3('b7','lsS#')](process[_0x3fa3('b8','ctR6')]['JD_DEBUG'],_0x3fa3('b9','0T0Z')))console[_0x3fa3('ba','MIkm')]=()=>{};}else{await _0x595120[_0x3fa3('bb','V2BP')](task,_0x595120[_0x3fa3('bc','H86E')],'token='+_0x2cbf21[_0x3fa3('bd','pWuh')]+_0x3fa3('be','VFlp')+_0x2cbf21['inviter']);await $[_0x3fa3('bf','ctR6')](0x7d0);}}else{$[_0x3fa3('c0','VFlp')](_0x595120[_0x3fa3('c1','4Qvf')]);}}}}else{$[_0x3fa3('c2','*60G')](_0x595120[_0x3fa3('c3','9c4x')]);return;}}else{if(_0x595120[_0x3fa3('c4','nEz2')](_0x595120['RkgiR'],_0x3fa3('c5','H86E'))){$[_0x3fa3('c6','0T0Z')](_0x595120[_0x3fa3('c7','*60G')]);}else{if(data['body']['result']){$['log'](_0x595120[_0x3fa3('c8','Q5TA')]);$['assistTimes']=_0x595120['AqmpI'](parseInt(data[_0x3fa3('c9','caLt')][_0x3fa3('ca','ioE)')][_0x3fa3('cb','wK2p')]),_0x595120['xfbYu'](parseInt,data[_0x3fa3('cc','Ur$f')][_0x3fa3('cd','Q5TA')][_0x3fa3('ce','kup&')]));}}}}else{message+=_0x3fa3('cf','9c4x')+$['index']+'】'+($[_0x3fa3('d0','KA#Z')]||$[_0x3fa3('d1','vfy9')])+'\x20\x0a\x20\x20\x20\x20\x20\x20\x20└\x20获得\x20'+$[_0x3fa3('82','kkF*')]+_0x3fa3('d2','6RPV');}}else{if(_0x595120[_0x3fa3('d3','pWmO')](_0x595120[_0x3fa3('d4','Hu3f')],_0x595120[_0x3fa3('d5','pWuh')])){$[_0x3fa3('d6','h8r&')](_0x595120['FfMth']);}else{message+=_0x3fa3('d7','Ur$f')+$[_0x3fa3('d8','ctR6')]+'】'+($[_0x3fa3('d9','pWuh')]||$[_0x3fa3('da','#$kI')])+'\x20\x0a\x20\x20\x20\x20\x20\x20\x20└\x20获得\x20'+$[_0x3fa3('db','#CMF')]+_0x3fa3('dc','er7U');}}}async function elecSport(){var _0x317c86={'XeUpM':function(_0x36ee00,_0x1fcf5b){return _0x36ee00===_0x1fcf5b;},'iOMeN':'userInfo','qFMkJ':function(_0x10a422,_0x563d1b){return _0x10a422!==_0x563d1b;},'wGNJT':'DWKis','RgedW':function(_0x596c93,_0x12ae0f,_0xd484f0){return _0x596c93(_0x12ae0f,_0xd484f0);},'zEDOv':function(_0x331428,_0x1969fd,_0x40eb50,_0x3de83f){return _0x331428(_0x1969fd,_0x40eb50,_0x3de83f);},'bPmNq':_0x3fa3('dd','H86E'),'cOivi':_0x3fa3('de','Hu3f'),'zXSLp':function(_0xee9923,_0x1509f4){return _0xee9923!==_0x1509f4;},'aABXc':_0x3fa3('df','ioE)'),'zDbxG':'club/guide','uTJfY':'club/get_produce_coins','znVoF':'task/detail','xIjqk':function(_0x3baec4,_0x335d76){return _0x3baec4!==_0x335d76;},'CGXeR':'xCtEv','vCypb':'没有成功获取到用户信息','GEPDA':_0x3fa3('e0','kkF*')};$['token']=null;$[_0x3fa3('e1','ctR6')]=null;$[_0x3fa3('e2','Ur$f')]=null;$[_0x3fa3('e3','wK2p')]=null;await getToken();if($['token']){if(_0x317c86['qFMkJ'](_0x3fa3('e4','f9&&'),_0x317c86['wGNJT'])){await _0x317c86[_0x3fa3('e5','kkF*')](task,_0x3fa3('e6','H86E'),'token='+$[_0x3fa3('e7','f9&&')]+'&&source=01');if($[_0x3fa3('e8','f9&&')]){await _0x317c86[_0x3fa3('e9','KA#Z')](task,_0x317c86['bPmNq'],'',_0x317c86[_0x3fa3('ea','*60G')]);if($[_0x3fa3('eb','[%Ug')]){if(_0x317c86[_0x3fa3('ec','V)4B')](_0x317c86[_0x3fa3('ed','0T0Z')],_0x3fa3('ee','V)4B'))){if(data[_0x3fa3('ef','VFlp')][_0x3fa3('f0','*ISn')][_0x3fa3('f1','V2BP')]){$[_0x3fa3('f2','V)4B')](_0x3fa3('f3','CVU3')+data[_0x3fa3('f4','cs36')][_0x3fa3('f5','nEz2')]['user_score']+'金币');}}else{if($[_0x3fa3('f6','pw(8')][_0x3fa3('f7','vfy9')]==='1'){await task(_0x317c86['zDbxG'],'',_0x317c86[_0x3fa3('f8','@cTD')]);await $[_0x3fa3('f9','KA#Z')](0x7d0);await task(_0x3fa3('fa','pWuh'),'');}$[_0x3fa3('fb','4Qvf')]=$[_0x3fa3('fc','cs36')]['id'];$[_0x3fa3('fd','#CMF')](_0x3fa3('fe','4Qvf')+$['userInfo'][_0x3fa3('ff','zh8B')]+'’\x0a当前金币:'+$[_0x3fa3('100','CVU3')]['coins']+_0x3fa3('101','*ISn')+$[_0x3fa3('102',')2PR')]['club_level']+'\x0a当前竞赛关卡:'+$['userInfo']['gate_num']+'\x0a');await _0x317c86['RgedW'](task,_0x317c86[_0x3fa3('103','wK2p')],'');await _0x317c86[_0x3fa3('104','nEz2')](task,_0x317c86[_0x3fa3('105','Hu3f')],'',_0x317c86[_0x3fa3('106','Q]NV')]);}}else{if(_0x317c86[_0x3fa3('107','zh8B')](_0x317c86[_0x3fa3('108','H86E')],_0x3fa3('109','pw(8'))){$[_0x3fa3('10a','pWmO')](_0x317c86[_0x3fa3('10b','Hu3f')]);}else{data=JSON[_0x3fa3('10c','NwN8')](data);if(_0x317c86['XeUpM'](data['retcode'],'1001')){$[_0x3fa3('10d','Hu3f')]=![];return;}if(data[_0x3fa3('10e','cs36')]==='0'&&data['data']['hasOwnProperty'](_0x317c86[_0x3fa3('10f','Hu3f')])){$['nickName']=data[_0x3fa3('110','9c4x')][_0x3fa3('111','vfy9')][_0x3fa3('112','Ur$f')][_0x3fa3('113','4Qvf')];}}}}else{$[_0x3fa3('114','f9&&')](_0x3fa3('115','pWuh'));}}else{$[_0x3fa3('116','pSfe')]=data[_0x3fa3('117','ioE)')];cookie+='IsvToken='+data[_0x3fa3('8b','NpJV')]+';';}}else{$[_0x3fa3('118','CVU3')](_0x317c86['GEPDA']);}}function task(_0xfbfb6b,_0x18a674,_0x247a54=_0x3fa3('119','Ur$f')){var _0x5e2fe9={'DEDRF':_0x3fa3('11a',')2PR'),'ymkUs':'zh-cn','BAcya':_0x3fa3('11b','4Qvf'),'dcnHE':'application/x-www-form-urlencoded','CLUMw':_0x3fa3('11c','nEz2'),'lJHGA':_0x3fa3('11d','6RPV'),'rOPqP':_0x3fa3('11e','H86E'),'GRUZR':_0x3fa3('11f','kup&'),'tQQlX':function(_0xcd86ae,_0x4035d7){return _0xcd86ae!==_0x4035d7;},'bxrSl':'task/do_task','zhywy':_0x3fa3('120','Y0rl'),'QZrRn':function(_0x225103,_0x48b0cb){return _0x225103===_0x48b0cb;},'nHpyQ':function(_0xd9a843,_0x23746c){return _0xd9a843!==_0x23746c;},'mQKaI':'NDIKz','ViTzR':function(_0x1cb738,_0x1c221b,_0x3180cf){return _0x1cb738(_0x1c221b,_0x3180cf);},'oCCjQ':_0x3fa3('121','nEz2'),'NIPAQ':function(_0x1dad2e,_0x44ba98){return _0x1dad2e===_0x44ba98;},'wMTHe':_0x3fa3('122','[iC9'),'HykOQ':_0x3fa3('123','R3[x'),'sHhNb':'FJVXt','cjomu':_0x3fa3('124','wK2p'),'JsZIy':_0x3fa3('125','[iC9'),'SbxMm':function(_0x4bae27,_0x42bfff,_0x49aab3){return _0x4bae27(_0x42bfff,_0x49aab3);},'AREDu':function(_0x31f253,_0x24aa29,_0x2561a7){return _0x31f253(_0x24aa29,_0x2561a7);},'gsNZH':_0x3fa3('126','vfy9'),'feCdw':_0x3fa3('127','CVU3'),'ysQpC':'已经完成任务','dOghZ':_0x3fa3('128','pSfe'),'SkleY':_0x3fa3('129','ioE)'),'zeDNz':function(_0x85d55c,_0x3ce18c){return _0x85d55c(_0x3ce18c);},'OVyLu':function(_0x23ef49,_0x22af04){return _0x23ef49!==_0x22af04;},'lXCcY':_0x3fa3('12a','#$kI'),'aEJpC':_0x3fa3('12b','V2BP'),'anUcd':_0x3fa3('12c','0T0Z')};return new Promise(_0xd24716=>{var _0x261720={'QFXso':_0x5e2fe9[_0x3fa3('12d','@cTD')],'XheLk':_0x5e2fe9[_0x3fa3('12e','#CMF')],'xSAEr':_0x5e2fe9['BAcya'],'hMVzx':_0x5e2fe9['dcnHE'],'Eqlkk':_0x5e2fe9[_0x3fa3('12f','Y0rl')],'rNLYO':_0x3fa3('130','0T0Z'),'gjlrR':_0x5e2fe9[_0x3fa3('131','ctR6')],'lqsRk':'CookiesJD','pnOVv':_0x3fa3('132','xSzx'),'fuKNH':_0x5e2fe9['rOPqP'],'fsvxn':function(_0x10612a,_0xb9700){return _0x10612a===_0xb9700;},'UUsKx':_0x3fa3('133','NpJV'),'lZnCt':_0x5e2fe9[_0x3fa3('134','pSfe')],'viXyi':function(_0x4b1161,_0x3e423a){return _0x5e2fe9['tQQlX'](_0x4b1161,_0x3e423a);},'QJStV':_0x3fa3('135','kup&'),'gINzt':_0x3fa3('136','Q5TA'),'DELyh':_0x5e2fe9[_0x3fa3('137','0T0Z')],'Muqfn':_0x5e2fe9[_0x3fa3('138','4Qvf')],'KrCls':function(_0x5c9360,_0x5f3d4f){return _0x5e2fe9[_0x3fa3('139','[%Ug')](_0x5c9360,_0x5f3d4f);},'NLvvC':function(_0x1d5a9c,_0x54f36a){return _0x5e2fe9[_0x3fa3('13a','*ISn')](_0x1d5a9c,_0x54f36a);},'dKDDQ':_0x5e2fe9[_0x3fa3('13b','CVU3')],'ikhuI':_0x3fa3('13c','pw(8'),'MdeDl':function(_0xb0e670,_0x1c571f,_0x2fb0e3){return _0x5e2fe9[_0x3fa3('13d','er7U')](_0xb0e670,_0x1c571f,_0x2fb0e3);},'BcOwL':_0x5e2fe9[_0x3fa3('13e','pWmO')],'lJwUX':function(_0x52fa84,_0x20ad52){return _0x5e2fe9[_0x3fa3('13f','nEz2')](_0x52fa84,_0x20ad52);},'HbDpi':_0x5e2fe9[_0x3fa3('140',')2PR')],'JofaK':_0x5e2fe9['HykOQ'],'GDEJH':function(_0x2d5520,_0x29d174){return _0x5e2fe9[_0x3fa3('141','h8r&')](_0x2d5520,_0x29d174);},'lccVx':_0x5e2fe9[_0x3fa3('142','])(T')],'OQPTX':function(_0x5437e8,_0x1d0022){return _0x5437e8===_0x1d0022;},'fIppf':_0x5e2fe9[_0x3fa3('143','0T0Z')],'SOjXx':_0x5e2fe9[_0x3fa3('144','f9&&')],'FJQpq':function(_0x3beb60,_0x577ec1,_0x185fc4){return _0x5e2fe9[_0x3fa3('145','pw(8')](_0x3beb60,_0x577ec1,_0x185fc4);},'TLdSO':function(_0x101a80,_0x54cded,_0x26fe38){return _0x5e2fe9[_0x3fa3('146','0T0Z')](_0x101a80,_0x54cded,_0x26fe38);},'WUnHJ':_0x5e2fe9[_0x3fa3('147','ctR6')],'swABi':_0x5e2fe9['feCdw'],'YSoiQ':function(_0x233055,_0x27011f){return _0x5e2fe9[_0x3fa3('148','V)4B')](_0x233055,_0x27011f);},'zTzdr':_0x5e2fe9[_0x3fa3('149','Hu3f')],'laoJR':_0x3fa3('14a','pSfe'),'qzPmL':_0x5e2fe9[_0x3fa3('14b','Q]NV')],'lxvxt':_0x5e2fe9[_0x3fa3('14c','Hu3f')],'LnoyT':function(_0x2faa8e,_0xab9499){return _0x5e2fe9['zeDNz'](_0x2faa8e,_0xab9499);},'rylTn':function(_0x48cfe1,_0x134a94){return _0x5e2fe9[_0x3fa3('14d','R3[x')](_0x48cfe1,_0x134a94);},'RotNp':_0x5e2fe9[_0x3fa3('14e','[%Ug')],'ALxor':_0x5e2fe9['aEJpC'],'ivbGj':_0x5e2fe9[_0x3fa3('14f','KA#Z')],'Imrke':function(_0x4b1f2d){return _0x4b1f2d();}};$[_0x247a54](taskUrl(_0xfbfb6b,_0x18a674,_0x247a54),async(_0x50090b,_0x41eb52,_0x1c8c50)=>{var _0x37b13d={'gobuR':_0x261720['lqsRk'],'RPyLi':_0x261720[_0x3fa3('150','f9&&')],'vFQii':_0x261720['fuKNH']};try{if(_0x50090b){$[_0x3fa3('151','sp%p')](_0x50090b);}else{if(_0x261720[_0x3fa3('152','pWmO')](_0x261720['UUsKx'],_0x261720[_0x3fa3('153','MIkm')])){$[_0x3fa3('154','kup&')](error);}else{if(_0x1c8c50){_0x1c8c50=JSON['parse'](_0x1c8c50);if(_0x1c8c50[_0x3fa3('155','*60G')]==='0'){if(_0x261720[_0x3fa3('156','pWmO')]('zIipW',_0x3fa3('157','er7U'))){$[_0x3fa3('158','caLt')]();}else{switch(_0xfbfb6b){case _0x3fa3('159','6RPV'):if(_0x1c8c50['body']&&_0x1c8c50[_0x3fa3('15a','R3[x')][_0x3fa3('15b','caLt')]){$['auth']=_0x1c8c50[_0x3fa3('15c','pWuh')][_0x3fa3('15d','#$kI')];cookie+=_0x3fa3('15e','Q]NV')+_0x1c8c50[_0x3fa3('15f','NwN8')][_0x3fa3('160','Q]NV')]+';';}break;case _0x261720['QJStV']:$[_0x3fa3('161','V2BP')]('成功收取'+_0x1c8c50['body'][_0x3fa3('162','er7U')]+'金币');break;case _0x3fa3('163','Y0rl'):$[_0x3fa3('164','lsS#')]=_0x1c8c50[_0x3fa3('165','sp%p')];break;case _0x261720[_0x3fa3('166','4Qvf')]:if(_0x1c8c50[_0x3fa3('167','*60G')]['id']){$[_0x3fa3('168','caLt')](_0x3fa3('169','Q]NV')+_0x1c8c50[_0x3fa3('16a','6RPV')][_0x3fa3('16b','pWuh')]+_0x3fa3('16c','9c4x'));}break;case _0x261720[_0x3fa3('16d','pSfe')]:if(_0x1c8c50[_0x3fa3('16e','9c4x')]['result']){if(_0x1c8c50['body'][_0x3fa3('16f','h8r&')]['user_score']){$['log']('\x20\x20\x20\x20\x20完成任务,当前共'+_0x1c8c50[_0x3fa3('165','sp%p')][_0x3fa3('170','kup&')][_0x3fa3('171','f9&&')]+'金币');}}break;case _0x261720['Muqfn']:for(const _0x431f22 of _0x1c8c50['body']['task_vos']){$['log'](_0x3fa3('172','MIkm')+_0x431f22['task_name']);if(_0x261720['KrCls'](_0x431f22['status'],'1')){if(_0x261720['NLvvC'](_0x261720['dKDDQ'],_0x261720[_0x3fa3('173','@cTD')])){$['logErr'](_0x50090b);}else{switch(_0x431f22['task_id']){case'1':await task(_0x3fa3('174','ioE)'),'token='+_0x431f22[_0x3fa3('175','kkF*')][_0x3fa3('176','4Qvf')]+_0x3fa3('177','Ur$f')+_0x431f22['task_id']+_0x3fa3('178','caLt')+_0x431f22[_0x3fa3('179','Q]NV')]);break;case'2':$[_0x3fa3('118','CVU3')]('\x20\x20\x20\x20\x20任务进度:'+_0x431f22['times']+'/'+_0x431f22[_0x3fa3('17a','])(T')]);shareCodeList['push']({'token':_0x431f22[_0x3fa3('17b','nEz2')][_0x3fa3('17c','kup&')],'inviter':$[_0x3fa3('17d','[iC9')][_0x3fa3('17e','xSzx')]});break;case'4':for(const _0x46a20b of _0x431f22[_0x3fa3('17f','Y0rl')]){if(_0x261720[_0x3fa3('180','pWmO')]!==_0x261720[_0x3fa3('181',')2PR')]){$[_0x3fa3('182','kkF*')]('你好:'+_0x1c8c50['body'][_0x3fa3('183','pw(8')]+',欢迎来到东东电竞经理俱乐部。');}else{if(_0x261720[_0x3fa3('184','vfy9')](_0x46a20b[_0x3fa3('185','pSfe')],'1')){$[_0x3fa3('f2','V)4B')](_0x3fa3('186','*60G')+_0x46a20b['shop_name']);await task('task/do_task',_0x3fa3('187','0T0Z')+_0x46a20b['task_token']+_0x3fa3('188','6RPV')+_0x431f22[_0x3fa3('189','H86E')]+_0x3fa3('18a','VFlp')+_0x431f22[_0x3fa3('18b','#CMF')]);await _0x261720[_0x3fa3('18c','kkF*')](task,_0x261720[_0x3fa3('18d','kup&')],_0x3fa3('18e','xSzx')+_0x46a20b[_0x3fa3('18f','Ur$f')]);await $['wait'](0x7d0);}}}break;case'6':if(_0x261720[_0x3fa3('190','#$kI')](ZOO_OPENCARD,_0x261720[_0x3fa3('191','wK2p')])){if(_0x261720[_0x3fa3('192','@1w[')](_0x261720[_0x3fa3('193','6RPV')],_0x261720[_0x3fa3('194','V)4B')])){$['log'](_0x50090b);}else{for(const _0x35f7d9 of _0x431f22['brand_member_vos']){if(_0x35f7d9[_0x3fa3('195','Ur$f')]==='1'){$[_0x3fa3('196','Y0rl')]('\x20\x20\x20\x20\x20去成为'+_0x35f7d9[_0x3fa3('197','CVU3')]);await _0x261720['MdeDl'](task,_0x261720['DELyh'],'token='+_0x35f7d9['task_token']+_0x3fa3('198','@cTD')+_0x431f22['task_id']+'&task_type='+_0x431f22[_0x3fa3('199','f9&&')]);await _0x261720['MdeDl'](task,_0x3fa3('19a','4Qvf'),_0x3fa3('19b','#CMF'));await $[_0x3fa3('19c','[iC9')](0x7d0);}}}}else{$['log'](_0x3fa3('19d','VFlp'));}break;case'5':case'8':for(const _0xe9fbb5 of _0x431f22[_0x3fa3('19e','@cTD')]){if(_0xe9fbb5[_0x3fa3('19f','cs36')]==='1'){$['log']('\x20\x20\x20\x20\x20去浏览'+_0xe9fbb5[_0x3fa3('1a0','6RPV')]);await task(_0x261720[_0x3fa3('1a1','ioE)')],_0x3fa3('1a2','Y0rl')+_0xe9fbb5[_0x3fa3('1a3','pSfe')]+'&task_id='+_0x431f22[_0x3fa3('1a4','6RPV')]+_0x3fa3('1a5','Q5TA')+_0x431f22['task_type']);await $[_0x3fa3('1a6','4Qvf')](0x7d0);}}break;case'7':for(const _0x165ea5 of _0x431f22[_0x3fa3('1a7','@cTD')]){if(_0x261720['GDEJH'](_0x261720[_0x3fa3('1a8','Hu3f')],_0x3fa3('1a9','[iC9'))){$['logErr'](e);}else{if(_0x261720[_0x3fa3('1aa','ioE)')](_0x165ea5[_0x3fa3('1ab','6RPV')],'1')){if(_0x261720['fIppf']!==_0x261720[_0x3fa3('1ac','9c4x')]){$[_0x3fa3('83','xSzx')]('\x20\x20\x20\x20\x20去浏览'+_0x165ea5[_0x3fa3('1ad','xSzx')]);await _0x261720['FJQpq'](task,_0x261720['DELyh'],_0x3fa3('1ae','mHuK')+_0x165ea5[_0x3fa3('17c','kup&')]+'&task_id='+_0x431f22[_0x3fa3('1af','CVU3')]+_0x3fa3('1b0',')2PR')+_0x431f22[_0x3fa3('1b1','NwN8')]);await _0x261720[_0x3fa3('1b2','NpJV')](task,_0x3fa3('1b3','pWuh'),_0x3fa3('1b4','er7U'));await $[_0x3fa3('1b5','mHuK')](0x7d0);}else{let _0x327b5a=$['getdata'](_0x37b13d[_0x3fa3('1b6','caLt')])||'[]';_0x327b5a=JSON[_0x3fa3('1b7','#CMF')](_0x327b5a);cookiesArr=_0x327b5a[_0x3fa3('1b8','pSfe')](_0x2e5f28=>_0x2e5f28[_0x3fa3('1b9','R3[x')]);cookiesArr[_0x3fa3('1ba','6RPV')]();cookiesArr[_0x3fa3('1bb','@cTD')](...[$[_0x3fa3('1bc','@1w[')](_0x37b13d[_0x3fa3('1bd','pWuh')]),$[_0x3fa3('1be','pWuh')](_0x37b13d[_0x3fa3('1bf','*60G')])]);cookiesArr[_0x3fa3('1c0','nEz2')]();cookiesArr=cookiesArr['filter'](_0x4836c8=>!!_0x4836c8);}}}}break;case'10':for(const _0x3761b3 of _0x431f22['follow_shop_vo']){if(_0x261720[_0x3fa3('1c1','kup&')]!==_0x261720['swABi']){if(_0x261720[_0x3fa3('1c2','NwN8')](_0x3761b3[_0x3fa3('1c3','NwN8')],'1')){$[_0x3fa3('1c4','Q5TA')](_0x3fa3('1c5','xSzx')+_0x3761b3['shop_name']);await _0x261720[_0x3fa3('1c6','ioE)')](task,_0x261720[_0x3fa3('1c7','])(T')],_0x3fa3('1c8','lsS#')+_0x3761b3[_0x3fa3('1c9','zh8B')]+_0x3fa3('1ca','0T0Z')+_0x431f22[_0x3fa3('1cb','])(T')]+_0x3fa3('1cc','pWuh')+_0x431f22['task_type']);await task(_0x261720[_0x3fa3('1cd','*ISn')],'action_type=6&channel=2&source_app=2&vender='+_0x3761b3['vender_id']);await $[_0x3fa3('1ce','R3[x')](0x7d0);}}else{$[_0x3fa3('161','V2BP')](_0x50090b);}}break;default:console[_0x3fa3('196','Y0rl')](_0x431f22);break;}}}else{$[_0x3fa3('5f','NwN8')](_0x261720[_0x3fa3('1cf','*60G')]);}await $[_0x3fa3('1d0','ioE)')](0x7d0);}break;case _0x261720[_0x3fa3('1d1','@1w[')]:if(_0x1c8c50[_0x3fa3('1d2','V)4B')]){if(_0x261720['GDEJH'](_0x261720['qzPmL'],_0x3fa3('1d3','V2BP'))){$[_0x3fa3('1d4','wK2p')](error);}else{if(_0x1c8c50[_0x3fa3('1d5','ioE)')][_0x3fa3('16f','h8r&')]){if(_0x261720[_0x3fa3('1d6','xSzx')](_0x261720[_0x3fa3('1d7','lsS#')],_0x261720[_0x3fa3('1d8','nEz2')])){uuid=v[_0x3fa3('1d9','h8r&')](0x24)[_0x3fa3('1da','h8r&')]();}else{$['log'](_0x3fa3('1db','kup&'));$[_0x3fa3('1dc','cs36')]=_0x261720[_0x3fa3('1dd','sp%p')](parseInt,_0x1c8c50[_0x3fa3('1de','#$kI')]['result'][_0x3fa3('1df','NwN8')])-parseInt(_0x1c8c50['body'][_0x3fa3('1e0','wK2p')]['already_assist_times']);}}}}break;default:break;}}}}else{if(_0x261720[_0x3fa3('1e1','MIkm')](_0x261720[_0x3fa3('1e2','pWmO')],_0x261720['RotNp'])){return{'url':_0x3fa3('1e3','nEz2')+_0xfbfb6b,'headers':{'Host':_0x261720[_0x3fa3('1e4','pw(8')],'Accept':_0x3fa3('1e5','V2BP'),'Authorization':auth,'Accept-Language':_0x261720[_0x3fa3('1e6','CVU3')],'Accept-Encoding':_0x261720[_0x3fa3('1e7','#$kI')],'Content-Type':_0x261720['hMVzx'],'Origin':'https://xinruidddj-isv.isvjcloud.com','User-Agent':_0x3fa3('1e8','[iC9')+$[_0x3fa3('1e9','pSfe')]+';network/wifi;ADID/'+$[_0x3fa3('1ea','pw(8')]+_0x3fa3('1eb','V)4B'),'Connection':_0x261720[_0x3fa3('1ec','*ISn')],'Referer':_0x261720[_0x3fa3('1ed','NwN8')],'Cookie':cookie},'body':_0x18a674};}else{$['log'](_0x261720[_0x3fa3('1ee','VFlp')]);}}}}}catch(_0x4f11b0){$[_0x3fa3('1ef','vfy9')](_0x4f11b0);}finally{if(_0x261720[_0x3fa3('1f0','Y0rl')]('GhOJL',_0x261720['ivbGj'])){$[_0x3fa3('1f1','KA#Z')](_0x261720['gjlrR']);}else{_0x261720[_0x3fa3('1f2','@cTD')](_0xd24716);}}});});}function taskUrl(_0x148c6f,_0x23771a,_0x23e700){var _0xcc2bc1={'ATWVG':_0x3fa3('1f3','6RPV'),'znZaa':function(_0x556520,_0x8ef45){return _0x556520===_0x8ef45;},'bWbuT':_0x3fa3('1f4','Q]NV'),'linPr':_0x3fa3('1f5','mHuK'),'ijQwE':'zh-cn','uPNoQ':_0x3fa3('1f6','*ISn'),'fZTbN':_0x3fa3('1f7',')2PR'),'iXADh':'keep-alive','jCIIz':'https://xinruidddj-isv.isvjcloud.com','oBEfd':_0x3fa3('1f8','er7U')};auth=$[_0x3fa3('1f9','R3[x')]?$['auth']:'undefined';if(_0xcc2bc1[_0x3fa3('1fa','[%Ug')](_0x23e700,_0xcc2bc1['bWbuT'])){return{'url':_0x3fa3('1fb','0T0Z')+_0x148c6f,'headers':{'Host':_0x3fa3('1fc','wK2p'),'Accept':_0xcc2bc1[_0x3fa3('1fd','caLt')],'Authorization':auth,'Accept-Language':_0xcc2bc1[_0x3fa3('1fe','caLt')],'Accept-Encoding':_0xcc2bc1['uPNoQ'],'Content-Type':_0xcc2bc1['fZTbN'],'Origin':_0x3fa3('1ff','MIkm'),'User-Agent':_0x3fa3('200','h8r&')+$[_0x3fa3('201','Hu3f')]+_0x3fa3('202','H86E')+$[_0x3fa3('46',')2PR')]+_0x3fa3('203','@cTD'),'Connection':_0xcc2bc1[_0x3fa3('204','xSzx')],'Referer':_0xcc2bc1[_0x3fa3('205','zh8B')],'Cookie':cookie}};}else{if(_0xcc2bc1[_0x3fa3('206','V)4B')]===_0xcc2bc1[_0x3fa3('207','*ISn')]){return{'url':_0x3fa3('208','@cTD')+_0x148c6f,'headers':{'Host':_0x3fa3('209','])(T'),'Accept':_0x3fa3('20a','h8r&'),'Authorization':auth,'Accept-Language':_0xcc2bc1[_0x3fa3('20b','pw(8')],'Accept-Encoding':_0xcc2bc1['uPNoQ'],'Content-Type':_0xcc2bc1[_0x3fa3('20c','@cTD')],'Origin':_0xcc2bc1['jCIIz'],'User-Agent':_0x3fa3('20d','lsS#')+$[_0x3fa3('20e','NpJV')]+_0x3fa3('20f','[%Ug')+$[_0x3fa3('210','0T0Z')]+';JDEbook/openapp.jdreader;model/iPhone13,3;addressid/138474561;appBuild/167694;jdSupportDarkMode/0;Mozilla/5.0\x20(iPhone;\x20CPU\x20iPhone\x20OS\x2014_6\x20like\x20Mac\x20OS\x20X)\x20AppleWebKit/605.1.15\x20(KHTML,\x20like\x20Gecko)\x20Mobile/15E148;supportJDSHWK/1','Connection':'keep-alive','Referer':_0xcc2bc1[_0x3fa3('211','cs36')],'Cookie':cookie},'body':_0x23771a};}else{$[_0x3fa3('212','6RPV')](_0xcc2bc1[_0x3fa3('213','V2BP')]);return;}}}function getToken(){var _0x2df3ec={'gkIkT':function(_0x170ea2,_0x2c6043){return _0x170ea2!==_0x2c6043;},'YUtye':_0x3fa3('214','lsS#'),'AqUBs':function(_0x5cc9a2,_0x45b9a4){return _0x5cc9a2===_0x45b9a4;},'ijWDS':function(_0x520287,_0x2b7301){return _0x520287===_0x2b7301;},'eBhye':function(_0x4f2994,_0x4dad50){return _0x4f2994!==_0x4dad50;},'PuaXy':_0x3fa3('215','kkF*'),'DYuLG':'sArHf','rVkJd':_0x3fa3('216','wK2p'),'Pncjh':_0x3fa3('217','pWmO'),'lLrIP':function(_0x5e2acd){return _0x5e2acd();},'bPNTI':function(_0x4ec767,_0xa17775){return _0x4ec767-_0xa17775;},'pPUeJ':function(_0x3c46b2,_0xd912e1){return _0x3c46b2(_0xd912e1);},'DnUNL':_0x3fa3('218','Ur$f'),'jtCAf':_0x3fa3('219','h8r&'),'RmJmw':_0x3fa3('21a','*60G'),'UnSPQ':'keep-alive','aGbAj':_0x3fa3('21b','MIkm'),'Jrram':_0x3fa3('21c','h8r&')};let _0x17b624={'url':_0x3fa3('21d','nEz2'),'headers':{'Host':_0x2df3ec[_0x3fa3('21e','vfy9')],'Content-Type':_0x2df3ec[_0x3fa3('21f','Y0rl')],'Accept':_0x2df3ec[_0x3fa3('220','pw(8')],'Connection':_0x2df3ec[_0x3fa3('221','*ISn')],'Cookie':cookie,'User-Agent':_0x3fa3('222','*ISn'),'Accept-Language':_0x2df3ec['aGbAj'],'Accept-Encoding':_0x2df3ec[_0x3fa3('223','Ur$f')]},'body':_0x3fa3('224','ioE)')};return new Promise(_0x2c0db2=>{var _0x50c7f5={'qjWNU':function(_0x326f64,_0x415178){return _0x2df3ec['bPNTI'](_0x326f64,_0x415178);},'FgQUd':function(_0x58294c,_0x2323d9){return _0x2df3ec[_0x3fa3('225','#CMF')](_0x58294c,_0x2323d9);}};$['post'](_0x17b624,(_0x4d59de,_0x4d2bd0,_0xde06d8)=>{var _0x1e06b5={'gkyfw':function(_0xc72b1d){return _0xc72b1d();}};try{if(_0x4d59de){$[_0x3fa3('226','zh8B')](_0x4d59de);}else{if(_0x2df3ec[_0x3fa3('227','ctR6')](_0x2df3ec[_0x3fa3('228','er7U')],_0x2df3ec[_0x3fa3('229','kup&')])){_0x1e06b5['gkyfw'](_0x2c0db2);}else{if(_0xde06d8){_0xde06d8=JSON['parse'](_0xde06d8);if(_0x2df3ec['AqUBs'](_0xde06d8[_0x3fa3('22a','4Qvf')],'0')){if(_0x2df3ec[_0x3fa3('22b','@1w[')](_0x3fa3('22c','Ur$f'),_0x3fa3('22d','6RPV'))){$[_0x3fa3('151','sp%p')](_0x3fa3('22e','*ISn'));$[_0x3fa3('22f','nEz2')]=_0x50c7f5[_0x3fa3('230','CVU3')](parseInt(_0xde06d8[_0x3fa3('16a','6RPV')][_0x3fa3('231','@1w[')][_0x3fa3('232','pWmO')]),_0x50c7f5[_0x3fa3('233','pSfe')](parseInt,_0xde06d8[_0x3fa3('234','V2BP')][_0x3fa3('235','V)4B')][_0x3fa3('236','9c4x')]));}else{$[_0x3fa3('237','lsS#')]=_0xde06d8[_0x3fa3('238','wK2p')];cookie+=_0x3fa3('239','vfy9')+_0xde06d8[_0x3fa3('23a','kkF*')]+';';}}}else{if(_0x2df3ec[_0x3fa3('23b','kup&')](_0x2df3ec[_0x3fa3('23c','[%Ug')],_0x2df3ec['DYuLG'])){$[_0x3fa3('23d','pSfe')](_0x2df3ec['rVkJd']);}else{uuid=v[_0x3fa3('23e','9c4x')](0x24);}}}}}catch(_0x4fe949){if(_0x2df3ec['Pncjh']===_0x3fa3('23f','9c4x')){$[_0x3fa3('240','nEz2')](_0x4fe949);}else{$['log'](_0x3fa3('241','MIkm')+_0xde06d8[_0x3fa3('242','[%Ug')][_0x3fa3('231','@1w[')]['user_score']+'金币');}}finally{_0x2df3ec['lLrIP'](_0x2c0db2);}});});}function random(_0x47f9f3,_0x5c1d32){var _0x3bcbdc={'QIjXh':function(_0x438b65,_0x272a6d){return _0x438b65-_0x272a6d;}};return Math[_0x3fa3('243','kup&')](Math[_0x3fa3('244','Q5TA')]()*_0x3bcbdc[_0x3fa3('245','NpJV')](_0x5c1d32,_0x47f9f3))+_0x47f9f3;}function getUUID(_0x3bfb9f=_0x3fa3('246','#CMF'),_0x46bb28=0x0){var _0x573d2f={'LLLFe':_0x3fa3('247','pWuh'),'gmVee':'application/json,\x20text/plain,\x20*/*','nkZRv':'application/x-www-form-urlencoded','plpyK':_0x3fa3('248','*60G'),'GkNuC':function(_0x2791e0,_0x1f768e){return _0x2791e0===_0x1f768e;},'OLctZ':_0x3fa3('249','KA#Z'),'VBAIQ':function(_0xa715a8,_0x30f868){return _0xa715a8|_0x30f868;},'jzOYm':function(_0x4880e1,_0x5c9b7b){return _0x4880e1*_0x5c9b7b;},'CcvDA':function(_0xed5976,_0x13fdc7){return _0xed5976==_0x13fdc7;},'PCtma':function(_0x1d7c19,_0x5a600a){return _0x1d7c19|_0x5a600a;},'Setpf':function(_0x30e6cc,_0x5a30dc){return _0x30e6cc&_0x5a30dc;},'XGJZU':'AMEtE','TOqdf':_0x3fa3('24a','0T0Z')};return _0x3bfb9f[_0x3fa3('24b','pSfe')](/[xy]/g,function(_0x675fd2){var _0x421a0a={'qAszo':_0x573d2f['LLLFe'],'uCGJQ':_0x573d2f[_0x3fa3('24c','pWuh')],'ijXeC':_0x573d2f[_0x3fa3('24d','sp%p')],'pistL':_0x3fa3('24e','kup&'),'edTyk':_0x573d2f[_0x3fa3('24f','CVU3')],'DcOdI':function(_0x49c72e,_0x5567e1){return _0x573d2f['GkNuC'](_0x49c72e,_0x5567e1);}};if(_0x573d2f[_0x3fa3('250','zh8B')](_0x573d2f['OLctZ'],_0x3fa3('251','VFlp'))){return{'url':_0x3fa3('252','sp%p')+function_id,'headers':{'Host':_0x421a0a['qAszo'],'Accept':_0x421a0a['uCGJQ'],'Authorization':auth,'Accept-Language':'zh-cn','Accept-Encoding':_0x3fa3('253','lsS#'),'Content-Type':_0x421a0a['ijXeC'],'Origin':'https://xinruidddj-isv.isvjcloud.com','User-Agent':_0x3fa3('254','Q5TA')+$[_0x3fa3('255','[iC9')]+_0x3fa3('256','])(T')+$['ADID']+_0x3fa3('257','9c4x'),'Connection':_0x421a0a[_0x3fa3('258','lsS#')],'Referer':_0x421a0a[_0x3fa3('259','VFlp')],'Cookie':cookie}};}else{var _0x264945=_0x573d2f[_0x3fa3('25a','6RPV')](_0x573d2f['jzOYm'](Math[_0x3fa3('25b','6RPV')](),0x10),0x0),_0x2fd31c=_0x573d2f[_0x3fa3('25c','Q]NV')](_0x675fd2,'x')?_0x264945:_0x573d2f[_0x3fa3('25d','#CMF')](_0x573d2f[_0x3fa3('25e','])(T')](_0x264945,0x3),0x8);if(_0x46bb28){uuid=_0x2fd31c['toString'](0x24)['toUpperCase']();}else{if(_0x573d2f['XGJZU']!==_0x573d2f['TOqdf']){uuid=_0x2fd31c['toString'](0x24);}else{data=JSON[_0x3fa3('25f','vfy9')](data);if(_0x421a0a[_0x3fa3('260','0T0Z')](data[_0x3fa3('261','#CMF')],'0')){$[_0x3fa3('262','nEz2')]=data[_0x3fa3('263','er7U')];cookie+='IsvToken='+data[_0x3fa3('264','6RPV')]+';';}}}return uuid;}});}function checkCookie(){var _0x31ce52={'lxkpt':function(_0x28a5fb,_0x18f16d){return _0x28a5fb+_0x18f16d;},'foXwr':function(_0x13199a,_0x162e4b){return _0x13199a-_0x162e4b;},'dZPpV':_0x3fa3('265','V)4B'),'JZrGD':function(_0x1c3474,_0x4a3694){return _0x1c3474!==_0x4a3694;},'KWpOK':'YZavw','mMCty':_0x3fa3('266','Q5TA'),'MwhtQ':'1001','kEdwD':function(_0x298fa5,_0x145beb){return _0x298fa5===_0x145beb;},'wsYWY':_0x3fa3('267','NpJV'),'lKpcB':'nKjza','HwacU':_0x3fa3('268','nEz2'),'yRzYe':_0x3fa3('269','#CMF'),'cPvOM':_0x3fa3('26a','*60G'),'ubpZN':'me-api.jd.com','oqQnc':_0x3fa3('26b','kkF*'),'yBXVG':_0x3fa3('26c','caLt'),'jXLLz':'Mozilla/5.0\x20(iPhone;\x20CPU\x20iPhone\x20OS\x2014_3\x20like\x20Mac\x20OS\x20X)\x20AppleWebKit/605.1.15\x20(KHTML,\x20like\x20Gecko)\x20Version/14.0.2\x20Mobile/15E148\x20Safari/604.1','crqNp':'zh-cn','QFcuN':'https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&','hkdzs':'gzip,\x20deflate,\x20br'};const _0x4ac31b={'url':_0x31ce52['cPvOM'],'headers':{'Host':_0x31ce52['ubpZN'],'Accept':_0x31ce52['oqQnc'],'Connection':_0x31ce52[_0x3fa3('26d','Y0rl')],'Cookie':cookie,'User-Agent':_0x31ce52['jXLLz'],'Accept-Language':_0x31ce52['crqNp'],'Referer':_0x31ce52[_0x3fa3('26e','NwN8')],'Accept-Encoding':_0x31ce52[_0x3fa3('26f','Hu3f')]}};return new Promise(_0x5f0f64=>{if(_0x31ce52[_0x3fa3('270','pSfe')]===_0x31ce52[_0x3fa3('271','wK2p')]){$[_0x3fa3('1f4','Q]NV')](_0x4ac31b,(_0x52ae03,_0xc54603,_0x1c95d4)=>{var _0x55bb20={'TCrsK':function(_0x206dc0,_0x5c9943){return _0x31ce52['lxkpt'](_0x206dc0,_0x5c9943);},'ihEkA':function(_0x45e37e,_0x5d97ba){return _0x31ce52[_0x3fa3('272','[%Ug')](_0x45e37e,_0x5d97ba);},'LyPpr':_0x31ce52['dZPpV'],'DtbzM':'京东返回了空数据'};if(_0x31ce52[_0x3fa3('273','kup&')](_0x31ce52[_0x3fa3('274','#CMF')],'QzLCF')){try{if(_0x31ce52[_0x3fa3('275','VFlp')](_0x3fa3('276','#CMF'),_0x31ce52[_0x3fa3('277','*60G')])){return _0x55bb20[_0x3fa3('278','pWmO')](Math[_0x3fa3('279','V2BP')](Math[_0x3fa3('27a','pSfe')]()*_0x55bb20[_0x3fa3('27b','f9&&')](max,min)),min);}else{if(_0x52ae03){$['logErr'](_0x52ae03);}else{if(_0x1c95d4){_0x1c95d4=JSON[_0x3fa3('27c','9c4x')](_0x1c95d4);if(_0x1c95d4['retcode']===_0x31ce52[_0x3fa3('27d','@1w[')]){$[_0x3fa3('5e','#CMF')]=![];return;}if(_0x31ce52['kEdwD'](_0x1c95d4[_0x3fa3('27e','#$kI')],'0')&&_0x1c95d4['data'][_0x3fa3('27f','ctR6')]('userInfo')){if(_0x31ce52[_0x3fa3('280','er7U')](_0x31ce52[_0x3fa3('281','Hu3f')],_0x31ce52[_0x3fa3('282','[%Ug')])){$[_0x3fa3('283','NwN8')]=_0x1c95d4[_0x3fa3('284','xSzx')]['userInfo'][_0x3fa3('285','[%Ug')][_0x3fa3('286','Ur$f')];}else{$['log'](_0x55bb20[_0x3fa3('287','@1w[')]);}}}else{$[_0x3fa3('288','Hu3f')](_0x31ce52['HwacU']);}}}}catch(_0x351d35){$[_0x3fa3('289','xSzx')](_0x351d35);}finally{_0x5f0f64();}}else{$['log'](_0x55bb20[_0x3fa3('28a','KA#Z')]);}});}else{$[_0x3fa3('28b','kkF*')]=data[_0x3fa3('28c','MIkm')]['access_token'];cookie+='jd-elec-sport='+data[_0x3fa3('28d','H86E')][_0x3fa3('28e','VFlp')]+';';}});} // 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 (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); \ No newline at end of file diff --git a/jd_family.js b/jd_family.js index 66b775d..13fdd90 100755 --- a/jd_family.js +++ b/jd_family.js @@ -22,173 +22,182 @@ cron "1 12,23 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master ============小火箭========= 京东家庭号 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_family.js, cronexpr="1 12,23 * * *", timeout=3600, enable=true */ -const $ = new Env('京东家庭号'); -const notify = $.isNode() ? require('./sendNotify') : ''; -const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const jd_helpers = require("./utils/JDHelpers.js"); +const jd_env = require("./utils/JDEnv.js"); +const $ = jd_env.env("京东家庭号"); +const notify = $.isNode() ? require("./sendNotify") : ""; +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; //Node.js用户请在jdCookie.js处填写京东ck; //IOS等用户直接用NobyDa的jd cookie -let cookiesArr = [], cookie = '', message; +let cookiesArr = [], + cookie = "", + message; if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { - cookiesArr.push(jdCookieNode[item]) - }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { - }; + cookiesArr.push(jdCookieNode[item]); + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; } else { - cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...jd_helpers.jsonParse($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); } !(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"}); + $.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/bean/signIndex.action", { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); return; } for (let i = 0; i < cookiesArr.length; i++) { if (cookiesArr[i]) { cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); $.index = i + 1; $.isLogin = true; - $.nickName = ''; - $.beans = 0 - message = ''; + $.nickName = ""; + $.beans = 0; + message = ""; await TotalBean(); console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); if (!$.isLogin) { - $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action", + }); if ($.isNode()) { await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); } - continue + continue; } - await jdFamily() + await jdFamily(); } } })() .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); }) .finally(() => { $.done(); - }) + }); async function jdFamily() { - await getInfo() - await getUserInfo() - await getUserInfo(true) + await getInfo(); + await getUserInfo(); + await getUserInfo(true); await showMsg(); } function showMsg() { - return new Promise(resolve => { + return new Promise((resolve) => { // message += `本次运行获得${$.beans}京豆` - $.log($.name, '', `京东账号${$.index}${$.nickName}\n${message}`); - resolve() - }) + $.log($.name, "", `京东账号${$.index}${$.nickName}\n${message}`); + resolve(); + }); } function getInfo() { - return new Promise(resolve => { - $.get({ - url: 'https://lgame.jd.com/babelDiy/Zeus/VhPVVaw8nTSVr69E757fyCebwKG/index.html', - headers: { - Cookie: cookie + return new Promise((resolve) => { + $.get( + { + url: "https://lgame.jd.com/babelDiy/Zeus/VhPVVaw8nTSVr69E757fyCebwKG/index.html", + headers: { + Cookie: cookie, + }, + }, + async (err, resp, data) => { + try { + $.info = JSON.parse(data.match(/var snsConfig = (.*)/)[1]); + $.prize = JSON.parse($.info.prize); + } catch (e) { + console.log(e); + } finally { + resolve(); + } } - }, async (err, resp, data) => { - try { - $.info = JSON.parse(data.match(/var snsConfig = (.*)/)[1]) - $.prize = JSON.parse($.info.prize) - } catch (e) { - console.log(e) - } finally { - resolve() - } - }) - }) + ); + }); } function getUserInfo(info = false) { - return new Promise(resolve => { - $.get(taskUrl('family_query'), async (err, resp, data) => { + return new Promise((resolve) => { + $.get(taskUrl("family_query"), async (err, resp, data) => { try { if (err) { - console.log(`${err},${jsonParse(resp.body)['message']}`) - console.log(`${$.name} API请求失败,请检查网路重试`) + console.log(`${err},${jd_helpers.jsonParse(resp.body)["message"]}`); + console.log(`${$.name} API请求失败,请检查网路重试`); } else { - $.userInfo = JSON.parse(data.match(/query\((.*)\n/)[1]) - console.log(`当前幸福值:${$.userInfo.tatalprofits}`) + $.userInfo = JSON.parse(data.match(/query\((.*)\n/)[1]); + console.log(`当前幸福值:${$.userInfo.tatalprofits}`); if (info) { - message += `当前幸福值:${$.userInfo.tatalprofits}` - } else for (let task of $.info.config.tasks) { - let vo = $.userInfo.tasklist.filter(vo => vo.taskid === task['_id']) - if (vo.length > 0) { - vo = vo[0] - // 5fed97ce5da81a8c069810df 健身 2 9 3 - // 5fed97ce5da81a8c069810de 撸猫 80 6 1 - // 5fed97ce5da81a8c069810dd 做美食 40 10 2 - // 5fed97ce5da81a8c069810dc 去组队 150 13 5 - if (vo['isdo'] === 1) { - if (vo['times'] === 0) { - console.log(`去做任务${task['_id']}`) - await doTask(task['_id']) - await $.wait(1000) - } else { - console.log(`${Math.trunc(vo['times'] / 60)}分钟可后做任务${task['_id']}`) + message += `当前幸福值:${$.userInfo.tatalprofits}`; + } else + for (let task of $.info.config.tasks) { + let vo = $.userInfo.tasklist.filter((vo) => vo.taskid === task["_id"]); + if (vo.length > 0) { + vo = vo[0]; + // 5fed97ce5da81a8c069810df 健身 2 9 3 + // 5fed97ce5da81a8c069810de 撸猫 80 6 1 + // 5fed97ce5da81a8c069810dd 做美食 40 10 2 + // 5fed97ce5da81a8c069810dc 去组队 150 13 5 + if (vo["isdo"] === 1) { + if (vo["times"] === 0) { + console.log(`去做任务${task["_id"]}`); + await doTask(task["_id"]); + await $.wait(1000); + } else { + console.log(`${Math.trunc(vo["times"] / 60)}分钟可后做任务${task["_id"]}`); + } } } } - } } } catch (e) { - $.logErr(e, resp) + $.logErr(e, resp); } finally { resolve(data); } - }) - }) + }); + }); } function doTask(taskId) { - let body = `taskid=${taskId}` - return new Promise(resolve => { - $.get(taskUrl('family_task', body), async (err, resp, data) => { + let body = `taskid=${taskId}`; + return new Promise((resolve) => { + $.get(taskUrl("family_task", body), async (err, resp, data) => { try { if (err) { - console.log(`${err},${jsonParse(resp.body)['message']}`) - console.log(`${$.name} API请求失败,请检查网路重试`) + console.log(`${err},${jd_helpers.jsonParse(resp.body)["message"]}`); + console.log(`${$.name} API请求失败,请检查网路重试`); } else { - data = JSON.parse(data.match(/query\((.*)\n/)[1]) + data = JSON.parse(data.match(/query\((.*)\n/)[1]); if (data.ret === 0) { - console.log(`任务完成成功`) + console.log(`任务完成成功`); } else { - console.log(`任务完成失败,原因未知`) + console.log(`任务完成失败,原因未知`); } } } catch (e) { - $.logErr(e, resp) + $.logErr(e, resp); } finally { resolve(data); } - }) - }) + }); + }); } -function taskUrl(function_id, body = '') { - body = `activeid=${$.info.activeId}&token=${$.info.actToken}&sceneval=2&shareid=&t=${Date.now()}&_=${new Date().getTime()}&callback=query&${body}` +function taskUrl(function_id, body = "") { + body = `activeid=${$.info.activeId}&token=${$.info.actToken}&sceneval=2&shareid=&t=${Date.now()}&_=${new Date().getTime()}&callback=query&${body}`; return { url: `https://wq.jd.com/activep3/family/${function_id}?${body}`, headers: { - 'Host': 'wq.jd.com', - 'Accept': 'application/json', - 'Accept-Language': 'zh-cn', - 'Content-Type': 'application/json;charset=utf-8', - 'Origin': 'wq.jd.com', - 'User-Agent': 'JD4iPhone/167490 (iPhone; iOS 14.2; Scale/3.00)', - 'Referer': `https://anmp.jd.com/babelDiy/Zeus/xKACpgVjVJM7zPKbd5AGCij5yV9/index.html?wxAppName=jd`, - 'Cookie': cookie - } - } + Host: "wq.jd.com", + Accept: "application/json", + "Accept-Language": "zh-cn", + "Content-Type": "application/json;charset=utf-8", + Origin: "wq.jd.com", + "User-Agent": "JD4iPhone/167490 (iPhone; iOS 14.2; Scale/3.00)", + Referer: `https://anmp.jd.com/babelDiy/Zeus/xKACpgVjVJM7zPKbd5AGCij5yV9/index.html?wxAppName=jd`, + Cookie: cookie, + }, + }; } function taskPostUrl(function_id, body) { @@ -196,85 +205,65 @@ function taskPostUrl(function_id, body) { url: `https://lzdz-isv.isvjcloud.com/${function_id}`, body: body, headers: { - 'Host': 'lzdz-isv.isvjcloud.com', - 'Accept': 'application/json', - 'Accept-Language': 'zh-cn', - 'Content-Type': 'application/x-www-form-urlencoded', - 'Origin': 'https://lzdz-isv.isvjcloud.com', - 'User-Agent': 'JD4iPhone/167490 (iPhone; iOS 14.2; Scale/3.00)', - 'Referer': `https://lzdz-isv.isvjcloud.com/dingzhi/book/develop/activity?activityId=${ACT_ID}`, - 'Cookie': `${cookie} isvToken=${$.isvToken};` - } - } + Host: "lzdz-isv.isvjcloud.com", + Accept: "application/json", + "Accept-Language": "zh-cn", + "Content-Type": "application/x-www-form-urlencoded", + Origin: "https://lzdz-isv.isvjcloud.com", + "User-Agent": "JD4iPhone/167490 (iPhone; iOS 14.2; Scale/3.00)", + Referer: `https://lzdz-isv.isvjcloud.com/dingzhi/book/develop/activity?activityId=${ACT_ID}`, + Cookie: `${cookie} isvToken=${$.isvToken};`, + }, + }; } function TotalBean() { - return new Promise(async resolve => { + return new Promise(async (resolve) => { const options = { - "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, - "headers": { - "Accept": "application/json,text/plain, */*", + url: `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + headers: { + Accept: "application/json,text/plain, */*", "Content-Type": "application/x-www-form-urlencoded", "Accept-Encoding": "gzip, deflate, br", "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") - } - } + Connection: "keep-alive", + Cookie: cookie, + Referer: "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1" + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + }; $.post(options, (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); } else { if (data) { data = JSON.parse(data); - if (data['retcode'] === 13) { + if (data["retcode"] === 13) { $.isLogin = false; //cookie过期 - return + return; } - if (data['retcode'] === 0) { - $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + if (data["retcode"] === 0) { + $.nickName = (data["base"] && data["base"].nickname) || $.UserName; } else { - $.nickName = $.UserName + $.nickName = $.UserName; } } else { - console.log(`京东服务器返回空数据`) + console.log(`京东服务器返回空数据`); } } } catch (e) { - $.logErr(e, resp) + $.logErr(e, resp); } finally { resolve(); } - }) - }) -} - -function safeGet(data) { - try { - if (typeof JSON.parse(data) == "object") { - return true; - } - } catch (e) { - console.log(e); - console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); - return false; - } -} - -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') - return []; - } - } -} -// prettier-ignore -function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} + }); + }); +} \ No newline at end of file diff --git a/jd_fruit.js b/jd_fruit.js index 6f0ee27..a42db9c 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,82 +10,92 @@ ==========================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('东东农场'); -let cookiesArr = [], cookie = '', jdFruitShareArr = [], isBox = false, notify, newShareCodes, allMessage = ''; +const jd_helpers = require("./utils/JDHelpers.js"); +const jd_env = require("./utils/JDEnv.js"); +const $ = jd_env.env("东东农场"); +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@35fcfda6d3af48e7afe79f5e18a39e55@5a41b6db624346cdbe347b61279fda8f@3fa4d41fe66e47bd8a9549e33e3b9b54@5dc8a7b9f4544a8ca79f8cf62d0c7623@4918db5a466c4332843c75064a5a3880@b48561c90c8c45f5b355034629715a80', - //账号二的好友shareCode,不同好友的shareCode中间用@符号隔开 - //'b1638a774d054a05a30a17d3b4d364b8@f92cb56c6a1349f5a35f0372aa041ea0@9c52670d52ad4e1a812f894563c746ea@8175509d82504e96828afc8b1bbb9cb3@2673c3777d4443829b2a635059953a28@d2d5d435675544679413cb9145577e0f@35fcfda6d3af48e7afe79f5e18a39e55@5a41b6db624346cdbe347b61279fda8f@3fa4d41fe66e47bd8a9549e33e3b9b54@5dc8a7b9f4544a8ca79f8cf62d0c7623@4918db5a466c4332843c75064a5a3880@b48561c90c8c45f5b355034629715a80', - //账号三的好友shareCode,不同好友的shareCode中间用@符号隔开 - //'35fcfda6d3af48e7afe79f5e18a39e55@5a41b6db624346cdbe347b61279fda8f@3fa4d41fe66e47bd8a9549e33e3b9b54@5dc8a7b9f4544a8ca79f8cf62d0c7623@4918db5a466c4332843c75064a5a3880@b48561c90c8c45f5b355034629715a80', -] -let message = '', subTitle = '', option = {}, isFruitFinished = false; -const retainWater = 100;//保留水滴大于多少g,默认100g; -let jdNotify = false;//是否关闭通知,false打开通知推送,true关闭通知推送 -let jdFruitBeanCard = false;//农场使用水滴换豆卡(如果出现限时活动时100g水换20豆,此时比浇水划算,推荐换豆),true表示换豆(不浇水),false表示不换豆(继续浇水),脚本默认是浇水 -let randomCount = $.isNode() ? 0 : 0; -const JD_API_HOST = 'https://api.m.jd.com/client.action'; +let shareCodes = [ + // 这个列表填入你要助力的好友的shareCode + "", +]; +let message = "", + subTitle = "", + option = {}, + isFruitFinished = false; +const retainWater = 100; //保留水滴大于多少g,默认100g; +let jdNotify = false; //是否关闭通知,false打开通知推送,true关闭通知推送 +let jdFruitBeanCard = false; //农场使用水滴换豆卡(如果出现限时活动时100g水换20豆,此时比浇水划算,推荐换豆),true表示换豆(不浇水),false表示不换豆(继续浇水),脚本默认是浇水 +let randomCount = $.isNode() ? 20 : 5; +const JD_API_HOST = "https://api.m.jd.com/client.action"; const urlSchema = `openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/3KSjXqQabiTuD1cJ28QskrpWoBKT/index.html%22%20%7D`; !(async () => { await requireConfig(); 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" }); + $.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/bean/signIndex.action", { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); return; } for (let i = 0; i < cookiesArr.length; i++) { if (cookiesArr[i]) { cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); $.index = i + 1; $.isLogin = true; - $.nickName = ''; + $.nickName = ""; await TotalBean(); console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); if (!$.isLogin) { - $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action", + }); if ($.isNode()) { await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); } - continue + continue; } - message = ''; - subTitle = ''; + message = ""; + subTitle = ""; option = {}; await shareCodesFormat(); await jdFruit(); } } if ($.isNode() && allMessage && $.ctrTemp) { - await notify.sendNotify(`${$.name}`, `${allMessage}`) + await notify.sendNotify(`${$.name}`, `${allMessage}`); } })() - .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') - }) - .finally(() => { - $.done(); - }) + // .catch((e) => { + // $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); + // }) + // .finally(() => { + // $.done(); + // }); async function jdFruit() { subTitle = `【京东账号${$.index}】${$.nickName}`; try { + //await helpAuthor(); await initForFarm(); if ($.farmInfo.farmUserPro) { // option['media-url'] = $.farmInfo.farmUserPro.goodsImage; @@ -93,45 +103,46 @@ async function jdFruit() { console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${$.farmInfo.farmUserPro.shareCode}\n`); console.log(`\n【已成功兑换水果】${$.farmInfo.farmUserPro.winTimes}次\n`); message += `【已兑换水果】${$.farmInfo.farmUserPro.winTimes}次\n`; - await masterHelpShare();//助力好友 + await masterHelpShare(); //助力好友 if ($.farmInfo.treeState === 2 || $.farmInfo.treeState === 3) { - option['open-url'] = urlSchema; + option["open-url"] = urlSchema; $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); if ($.isNode()) { - await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}水果已可领取`, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去京东APP或微信小程序查看`); + await notify.sendNotify( + `${$.name} - 账号${$.index} - ${$.nickName}水果已可领取`, + `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去京东APP或微信小程序查看` + ); } - return + return; } else if ($.farmInfo.treeState === 1) { - console.log(`\n${$.farmInfo.farmUserPro.name}种植中...\n`) + console.log(`\n${$.farmInfo.farmUserPro.name}种植中...\n`); } else if ($.farmInfo.treeState === 0) { //已下单购买, 但未开始种植新的水果 - option['open-url'] = urlSchema; + option["open-url"] = urlSchema; $.msg($.name, ``, `【京东账号${$.index}】 ${$.nickName || $.UserName}\n【提醒⏰】您忘了种植新的水果\n请去京东APP或微信小程序选购并种植新的水果\n点击弹窗即达`, option); if ($.isNode()) { await notify.sendNotify(`${$.name} - 您忘了种植新的水果`, `京东账号${$.index} ${$.nickName}\n【提醒⏰】您忘了种植新的水果\n请去京东APP或微信小程序选购并种植新的水果`); } - return + return; } await doDailyTask(); - await doTenWater();//浇水十次 - await getFirstWaterAward();//领取首次浇水奖励 - await getTenWaterAward();//领取10浇水奖励 - await getWaterFriendGotAward();//领取为2好友浇水奖励 + await doTenWater(); //浇水十次 + await getFirstWaterAward(); //领取首次浇水奖励 + await getTenWaterAward(); //领取10浇水奖励 + await getWaterFriendGotAward(); //领取为2好友浇水奖励 await duck(); - await doTenWaterAgain();//再次浇水 - await predictionFruit();//预测水果成熟时间 + await doTenWaterAgain(); //再次浇水 + await predictionFruit(); //预测水果成熟时间 } else { console.log(`初始化农场数据异常, 请登录京东 app查看农场0元水果功能是否正常,农场初始化数据: ${JSON.stringify($.farmInfo)}`); - console.log(`等待10秒后重试`); - await $.wait(10000); - await jdFruit(); + message = `【数据异常】请手动登录京东app查看此账号${$.name}是否正常`; } } catch (e) { console.log(`任务执行异常,请检查执行日志 ‼️‼️`); $.logErr(e); - // const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; - // if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg); - // $.msg($.name, '', `${errMsg}`) + const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; + if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg); + $.msg($.name, "", `${errMsg}`); } await showMsg(); } @@ -141,7 +152,7 @@ async function doDailyTask() { if (!$.farmTask.signInit.todaySigned) { await signForFarm(); //签到 if ($.signResult.code === "0") { - console.log(`【签到成功】获得${$.signResult.amount}g💧\\n`) + console.log(`【签到成功】获得${$.signResult.amount}g💧\\n`); //message += `【签到成功】获得${$.signResult.amount}g💧\n`//连续签到${signResult.signDay}天 } else { // message += `签到失败,详询日志\n`; @@ -151,44 +162,43 @@ async function doDailyTask() { console.log(`今天已签到,连续签到${$.farmTask.signInit.totalSigned},下次签到可得${$.farmTask.signInit.signEnergyEachAmount}g\n`); } // 被水滴砸中 - console.log(`被水滴砸中: ${$.farmInfo.todayGotWaterGoalTask.canPop ? '是' : '否'}`); + console.log(`被水滴砸中: ${$.farmInfo.todayGotWaterGoalTask.canPop ? "是" : "否"}`); if ($.farmInfo.todayGotWaterGoalTask.canPop) { await gotWaterGoalTaskForFarm(); - if ($.goalResult.code === '0') { + if ($.goalResult.code === "0") { console.log(`【被水滴砸中】获得${$.goalResult.addEnergy}g💧\\n`); // message += `【被水滴砸中】获得${$.goalResult.addEnergy}g💧\n` } } console.log(`签到结束,开始广告浏览任务`); - if ($.farmTask.gotBrowseTaskAdInit.f) { - console.log(`今天已经做过浏览广告任务\n`); - } else { - let adverts = $.farmTask.gotBrowseTaskAdInit.userBrowseTaskAds - let browseReward = 0 - let browseSuccess = 0 - let browseFail = 0 - for (let advert of adverts) { //开始浏览广告 + if (!$.farmTask.gotBrowseTaskAdInit.f) { + let adverts = $.farmTask.gotBrowseTaskAdInit.userBrowseTaskAds; + let browseReward = 0; + let browseSuccess = 0; + let browseFail = 0; + for (let advert of adverts) { + //开始浏览广告 if (advert.limit <= advert.hadFinishedTimes) { // browseReward+=advert.reward - console.log(`${advert.mainTitle}+ ' 已完成`);//,获得${advert.reward}g + console.log(`${advert.mainTitle}+ ' 已完成`); //,获得${advert.reward}g continue; } - console.log('正在进行广告浏览任务: ' + advert.mainTitle); + console.log("正在进行广告浏览任务: " + advert.mainTitle); await browseAdTaskForFarm(advert.advertId, 0); - if ($.browseResult.code === '0') { + if ($.browseResult.code === "0") { console.log(`${advert.mainTitle}浏览任务完成`); //领取奖励 await browseAdTaskForFarm(advert.advertId, 1); - if ($.browseRwardResult.code === '0') { - console.log(`领取浏览${advert.mainTitle}广告奖励成功,获得${$.browseRwardResult.amount}g`) - browseReward += $.browseRwardResult.amount - browseSuccess++ + if ($.browseRwardResult.code === "0") { + console.log(`领取浏览${advert.mainTitle}广告奖励成功,获得${$.browseRwardResult.amount}g`); + browseReward += $.browseRwardResult.amount; + browseSuccess++; } else { - browseFail++ - console.log(`领取浏览广告奖励结果: ${JSON.stringify($.browseRwardResult)}`) + browseFail++; + console.log(`领取浏览广告奖励结果: ${JSON.stringify($.browseRwardResult)}`); } } else { - browseFail++ + browseFail++; console.log(`广告浏览任务结果: ${JSON.stringify($.browseResult)}`); } } @@ -199,6 +209,8 @@ async function doDailyTask() { console.log(`【广告浏览】完成${browseSuccess}个,获得${browseReward}g💧\n`); // message += `【广告浏览】完成${browseSuccess}个,获得${browseReward}g💧\n`; } + } else { + console.log(`今天已经做过浏览广告任务\n`); } //定时领水 if (!$.farmTask.gotThreeMealInit.f) { @@ -212,7 +224,7 @@ async function doDailyTask() { console.log(`定时领水成功结果: ${JSON.stringify($.threeMeal)}`); } } else { - console.log('当前不在定时领水时间断或者已经领过\n') + console.log("当前不在定时领水时间断或者已经领过\n"); } //给好友浇水 if (!$.farmTask.waterFriendTaskInit.f) { @@ -220,7 +232,7 @@ async function doDailyTask() { await doFriendsWater(); } } else { - console.log(`给${$.farmTask.waterFriendTaskInit.waterFriendMax}个好友浇水任务已完成\n`) + console.log(`给${$.farmTask.waterFriendTaskInit.waterFriendMax}个好友浇水任务已完成\n`); } // await Promise.all([ // clockInIn(),//打卡领水 @@ -230,42 +242,44 @@ async function doDailyTask() { // turntableFarm()//天天抽奖得好礼 // ]) await getAwardInviteFriend(); - await clockInIn();//打卡领水 - await executeWaterRains();//水滴雨 - await getExtraAward();//领取额外水滴奖励 - await turntableFarm()//天天抽奖得好礼 + await clockInIn(); //打卡领水 + await executeWaterRains(); //水滴雨 + await getExtraAward(); //领取额外水滴奖励 + await turntableFarm(); //天天抽奖得好礼 } async function predictionFruit() { - console.log('开始预测水果成熟时间\n'); + console.log("开始预测水果成熟时间\n"); await initForFarm(); await taskInitForFarm(); - let waterEveryDayT = $.farmTask.totalWaterTaskInit.totalWaterTaskTimes;//今天到到目前为止,浇了多少次水 + let waterEveryDayT = $.farmTask.totalWaterTaskInit.totalWaterTaskTimes; //今天到到目前为止,浇了多少次水 message += `【今日共浇水】${waterEveryDayT}次\n`; message += `【剩余 水滴】${$.farmInfo.farmUserPro.totalEnergy}g💧\n`; - message += `【水果🍉进度】${(($.farmInfo.farmUserPro.treeEnergy / $.farmInfo.farmUserPro.treeTotalEnergy) * 100).toFixed(2)}%,已浇水${$.farmInfo.farmUserPro.treeEnergy / 10}次,还需${($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy) / 10}次\n` - if ($.farmInfo.toFlowTimes > ($.farmInfo.farmUserPro.treeEnergy / 10)) { - message += `【开花进度】再浇水${$.farmInfo.toFlowTimes - $.farmInfo.farmUserPro.treeEnergy / 10}次开花\n` - } else if ($.farmInfo.toFruitTimes > ($.farmInfo.farmUserPro.treeEnergy / 10)) { - message += `【结果进度】再浇水${$.farmInfo.toFruitTimes - $.farmInfo.farmUserPro.treeEnergy / 10}次结果\n` + message += `【水果🍉进度】${(($.farmInfo.farmUserPro.treeEnergy / $.farmInfo.farmUserPro.treeTotalEnergy) * 100).toFixed(2)}%,已浇水${$.farmInfo.farmUserPro.treeEnergy / 10}次,还需${ + ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy) / 10 + }次\n`; + if ($.farmInfo.toFlowTimes > $.farmInfo.farmUserPro.treeEnergy / 10) { + message += `【开花进度】再浇水${$.farmInfo.toFlowTimes - $.farmInfo.farmUserPro.treeEnergy / 10}次开花\n`; + } else if ($.farmInfo.toFruitTimes > $.farmInfo.farmUserPro.treeEnergy / 10) { + message += `【结果进度】再浇水${$.farmInfo.toFruitTimes - $.farmInfo.farmUserPro.treeEnergy / 10}次结果\n`; } // 预测n天后水果课可兑换功能 - let waterTotalT = ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy - $.farmInfo.farmUserPro.totalEnergy) / 10;//一共还需浇多少次水 + let waterTotalT = ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy - $.farmInfo.farmUserPro.totalEnergy) / 10; //一共还需浇多少次水 let waterD = Math.ceil(waterTotalT / waterEveryDayT); - message += `【预测】${waterD === 1 ? '明天' : waterD === 2 ? '后天' : waterD + '天之后'}(${timeFormat(24 * 60 * 60 * 1000 * waterD + Date.now())}日)可兑换水果🍉` + message += `【预测】${waterD === 1 ? "明天" : waterD === 2 ? "后天" : waterD + "天之后"}(${timeFormat(24 * 60 * 60 * 1000 * waterD + Date.now())}日)可兑换水果🍉`; } //浇水十次 async function doTenWater() { - jdFruitBeanCard = $.getdata('jdFruitBeanCard') ? $.getdata('jdFruitBeanCard') : jdFruitBeanCard; + jdFruitBeanCard = $.getdata("jdFruitBeanCard") ? $.getdata("jdFruitBeanCard") : jdFruitBeanCard; if ($.isNode() && process.env.FRUIT_BEAN_CARD) { jdFruitBeanCard = process.env.FRUIT_BEAN_CARD; } await myCardInfoForFarm(); const { fastCard, doubleCard, beanCard, signCard } = $.myCardInfoRes; - if (`${jdFruitBeanCard}` === 'true' && JSON.stringify($.myCardInfoRes).match(`限时翻倍`) && beanCard > 0) { - console.log(`您设置的是使用水滴换豆卡,且背包有水滴换豆卡${beanCard}张, 跳过10次浇水任务`) - return + if (`${jdFruitBeanCard}` === "true" && JSON.stringify($.myCardInfoRes).match(`限时翻倍`) && beanCard > 0) { + console.log(`您设置的是使用水滴换豆卡,且背包有水滴换豆卡${beanCard}张, 跳过10次浇水任务`); + return; } if ($.farmTask.totalWaterTaskInit.totalWaterTaskTimes < $.farmTask.totalWaterTaskInit.totalWaterTaskLimit) { console.log(`\n准备浇水十次`); @@ -275,26 +289,26 @@ async function doTenWater() { console.log(`第${waterCount + 1}次浇水`); await waterGoodForFarm(); console.log(`本次浇水结果: ${JSON.stringify($.waterResult)}`); - if ($.waterResult.code === '0') { + if ($.waterResult.code === "0") { console.log(`剩余水滴${$.waterResult.totalEnergy}g`); if ($.waterResult.finished) { // 已证实,waterResult.finished为true,表示水果可以去领取兑换了 isFruitFinished = true; - break + break; } else { if ($.waterResult.totalEnergy < 10) { - console.log(`水滴不够,结束浇水`) - break + console.log(`水滴不够,结束浇水`); + break; } - await gotStageAward();//领取阶段性水滴奖励 + await gotStageAward(); //领取阶段性水滴奖励 } } else { - console.log('浇水出现失败异常,跳出不在继续浇水') + console.log("浇水出现失败异常,跳出不在继续浇水"); break; } } if (isFruitFinished) { - option['open-url'] = urlSchema; + option["open-url"] = urlSchema; $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); $.done(); if ($.isNode()) { @@ -302,7 +316,7 @@ async function doTenWater() { } } } else { - console.log('\n今日已完成10次浇水任务\n'); + console.log("\n今日已完成10次浇水任务\n"); } } //领取首次浇水奖励 @@ -311,7 +325,7 @@ async function getFirstWaterAward() { //领取首次浇水奖励 if (!$.farmTask.firstWaterInit.f && $.farmTask.firstWaterInit.totalWaterTimes > 0) { await firstWaterTaskForFarm(); - if ($.firstWaterReward.code === '0') { + if ($.firstWaterReward.code === "0") { console.log(`【首次浇水奖励】获得${$.firstWaterReward.amount}g💧\n`); // message += `【首次浇水奖励】获得${$.firstWaterReward.amount}g💧\n`; } else { @@ -319,7 +333,7 @@ async function getFirstWaterAward() { console.log(`领取首次浇水奖励结果: ${JSON.stringify($.firstWaterReward)}`); } } else { - console.log('首次浇水奖励已领取\n') + console.log("首次浇水奖励已领取\n"); } } //领取十次浇水奖励 @@ -327,7 +341,7 @@ async function getTenWaterAward() { //领取10次浇水奖励 if (!$.farmTask.totalWaterTaskInit.f && $.farmTask.totalWaterTaskInit.totalWaterTaskTimes >= $.farmTask.totalWaterTaskInit.totalWaterTaskLimit) { await totalWaterTaskForFarm(); - if ($.totalWaterReward.code === '0') { + if ($.totalWaterReward.code === "0") { console.log(`【十次浇水奖励】获得${$.totalWaterReward.totalWaterTaskEnergy}g💧\n`); // message += `【十次浇水奖励】获得${$.totalWaterReward.totalWaterTaskEnergy}g💧\n`; } else { @@ -338,21 +352,25 @@ async function getTenWaterAward() { // message += `【十次浇水奖励】任务未完成,今日浇水${$.farmTask.totalWaterTaskInit.totalWaterTaskTimes}次\n`; console.log(`【十次浇水奖励】任务未完成,今日浇水${$.farmTask.totalWaterTaskInit.totalWaterTaskTimes}次\n`); } - console.log('finished 水果任务完成!'); + console.log("finished 水果任务完成!"); } //再次浇水 async function doTenWaterAgain() { - console.log('开始检查剩余水滴能否再次浇水再次浇水\n'); + console.log("开始检查剩余水滴能否再次浇水再次浇水\n"); await initForFarm(); let totalEnergy = $.farmInfo.farmUserPro.totalEnergy; console.log(`剩余水滴${totalEnergy}g\n`); await myCardInfoForFarm(); const { fastCard, doubleCard, beanCard, signCard } = $.myCardInfoRes; - console.log(`背包已有道具:\n快速浇水卡:${fastCard === -1 ? '未解锁' : fastCard + '张'}\n水滴翻倍卡:${doubleCard === -1 ? '未解锁' : doubleCard + '张'}\n水滴换京豆卡:${beanCard === -1 ? '未解锁' : beanCard + '张'}\n加签卡:${signCard === -1 ? '未解锁' : signCard + '张'}\n`) + console.log( + `背包已有道具:\n快速浇水卡:${fastCard === -1 ? "未解锁" : fastCard + "张"}\n水滴翻倍卡:${doubleCard === -1 ? "未解锁" : doubleCard + "张"}\n水滴换京豆卡:${ + beanCard === -1 ? "未解锁" : beanCard + "张" + }\n加签卡:${signCard === -1 ? "未解锁" : signCard + "张"}\n` + ); if (totalEnergy >= 100 && doubleCard > 0) { //使用翻倍水滴卡 - for (let i = 0; i < new Array(doubleCard).fill('').length; i++) { - await userMyCardForFarm('doubleCard'); + for (let i = 0; i < new Array(doubleCard).fill("").length; i++) { + await userMyCardForFarm("doubleCard"); console.log(`使用翻倍水滴卡结果:${JSON.stringify($.userMyCardRes)}`); } await initForFarm(); @@ -360,29 +378,29 @@ async function doTenWaterAgain() { } if (signCard > 0) { //使用加签卡 - for (let i = 0; i < new Array(signCard).fill('').length; i++) { - await userMyCardForFarm('signCard'); + for (let i = 0; i < new Array(signCard).fill("").length; i++) { + await userMyCardForFarm("signCard"); console.log(`使用加签卡结果:${JSON.stringify($.userMyCardRes)}`); } await initForFarm(); totalEnergy = $.farmInfo.farmUserPro.totalEnergy; } - jdFruitBeanCard = $.getdata('jdFruitBeanCard') ? $.getdata('jdFruitBeanCard') : jdFruitBeanCard; + jdFruitBeanCard = $.getdata("jdFruitBeanCard") ? $.getdata("jdFruitBeanCard") : jdFruitBeanCard; if ($.isNode() && process.env.FRUIT_BEAN_CARD) { jdFruitBeanCard = process.env.FRUIT_BEAN_CARD; } - if (`${jdFruitBeanCard}` === 'true' && JSON.stringify($.myCardInfoRes).match('限时翻倍')) { + if (`${jdFruitBeanCard}` === "true" && JSON.stringify($.myCardInfoRes).match("限时翻倍")) { console.log(`\n您设置的是水滴换豆功能,现在为您换豆`); if (totalEnergy >= 100 && $.myCardInfoRes.beanCard > 0) { //使用水滴换豆卡 - await userMyCardForFarm('beanCard'); + await userMyCardForFarm("beanCard"); console.log(`使用水滴换豆卡结果:${JSON.stringify($.userMyCardRes)}`); - if ($.userMyCardRes.code === '0') { + if ($.userMyCardRes.code === "0") { message += `【水滴换豆卡】获得${$.userMyCardRes.beanCount}个京豆\n`; - return + return; } } else { - console.log(`您目前水滴:${totalEnergy}g,水滴换豆卡${$.myCardInfoRes.beanCard}张,暂不满足水滴换豆的条件,为您继续浇水`) + console.log(`您目前水滴:${totalEnergy}g,水滴换豆卡${$.myCardInfoRes.beanCard}张,暂不满足水滴换豆的条件,为您继续浇水`); } } // if (totalEnergy > 100 && $.myCardInfoRes.fastCard > 0) { @@ -397,28 +415,28 @@ async function doTenWaterAgain() { // } // 所有的浇水(10次浇水)任务,获取水滴任务完成后,如果剩余水滴大于等于60g,则继续浇水(保留部分水滴是用于完成第二天的浇水10次的任务) let overageEnergy = totalEnergy - retainWater; - if (totalEnergy >= ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy)) { + if (totalEnergy >= $.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy) { //如果现有的水滴,大于水果可兑换所需的对滴(也就是把水滴浇完,水果就能兑换了) isFruitFinished = false; for (let i = 0; i < ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy) / 10; i++) { await waterGoodForFarm(); console.log(`本次浇水结果(水果马上就可兑换了): ${JSON.stringify($.waterResult)}`); - if ($.waterResult.code === '0') { - console.log('\n浇水10g成功\n'); + if ($.waterResult.code === "0") { + console.log("\n浇水10g成功\n"); if ($.waterResult.finished) { // 已证实,waterResult.finished为true,表示水果可以去领取兑换了 isFruitFinished = true; - break + break; } else { - console.log(`目前水滴【${$.waterResult.totalEnergy}】g,继续浇水,水果马上就可以兑换了`) + console.log(`目前水滴【${$.waterResult.totalEnergy}】g,继续浇水,水果马上就可以兑换了`); } } else { - console.log('浇水出现失败异常,跳出不在继续浇水') + console.log("浇水出现失败异常,跳出不在继续浇水"); break; } } if (isFruitFinished) { - option['open-url'] = urlSchema; + option["open-url"] = urlSchema; $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); $.done(); if ($.isNode()) { @@ -431,22 +449,22 @@ async function doTenWaterAgain() { for (let i = 0; i < parseInt(overageEnergy / 10); i++) { await waterGoodForFarm(); console.log(`本次浇水结果: ${JSON.stringify($.waterResult)}`); - if ($.waterResult.code === '0') { - console.log(`\n浇水10g成功,剩余${$.waterResult.totalEnergy}\n`) + if ($.waterResult.code === "0") { + console.log(`\n浇水10g成功,剩余${$.waterResult.totalEnergy}\n`); if ($.waterResult.finished) { // 已证实,waterResult.finished为true,表示水果可以去领取兑换了 isFruitFinished = true; - break + break; } else { - await gotStageAward() + await gotStageAward(); } } else { - console.log('浇水出现失败异常,跳出不在继续浇水') + console.log("浇水出现失败异常,跳出不在继续浇水"); break; } } if (isFruitFinished) { - option['open-url'] = urlSchema; + option["open-url"] = urlSchema; $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); $.done(); if ($.isNode()) { @@ -454,144 +472,144 @@ async function doTenWaterAgain() { } } } else { - console.log("目前剩余水滴:【" + totalEnergy + "】g,不再继续浇水,保留部分水滴用于完成第二天【十次浇水得水滴】任务") + console.log("目前剩余水滴:【" + totalEnergy + "】g,不再继续浇水,保留部分水滴用于完成第二天【十次浇水得水滴】任务"); } } //领取阶段性水滴奖励 function gotStageAward() { - return new Promise(async resolve => { + return new Promise(async (resolve) => { if ($.waterResult.waterStatus === 0 && $.waterResult.treeEnergy === 10) { - console.log('果树发芽了,奖励30g水滴'); - await gotStageAwardForFarm('1'); + console.log("果树发芽了,奖励30g水滴"); + await gotStageAwardForFarm("1"); console.log(`浇水阶段奖励1领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`); - if ($.gotStageAwardForFarmRes.code === '0') { + if ($.gotStageAwardForFarmRes.code === "0") { // message += `【果树发芽了】奖励${$.gotStageAwardForFarmRes.addEnergy}\n`; console.log(`【果树发芽了】奖励${$.gotStageAwardForFarmRes.addEnergy}\n`); } } else if ($.waterResult.waterStatus === 1) { - console.log('果树开花了,奖励40g水滴'); - await gotStageAwardForFarm('2'); + console.log("果树开花了,奖励40g水滴"); + await gotStageAwardForFarm("2"); console.log(`浇水阶段奖励2领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`); - if ($.gotStageAwardForFarmRes.code === '0') { + if ($.gotStageAwardForFarmRes.code === "0") { // message += `【果树开花了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`; console.log(`【果树开花了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`); } } else if ($.waterResult.waterStatus === 2) { - console.log('果树长出小果子啦, 奖励50g水滴'); - await gotStageAwardForFarm('3'); - console.log(`浇水阶段奖励3领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`) - if ($.gotStageAwardForFarmRes.code === '0') { + console.log("果树长出小果子啦, 奖励50g水滴"); + await gotStageAwardForFarm("3"); + console.log(`浇水阶段奖励3领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`); + if ($.gotStageAwardForFarmRes.code === "0") { // message += `【果树结果了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`; console.log(`【果树结果了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`); } } - resolve() - }) + resolve(); + }); } //天天抽奖活动 async function turntableFarm() { await initForTurntableFarm(); - if ($.initForTurntableFarmRes.code === '0') { + if ($.initForTurntableFarmRes.code === "0") { //领取定时奖励 //4小时一次 let { timingIntervalHours, timingLastSysTime, sysTime, timingGotStatus, remainLotteryTimes, turntableInfos } = $.initForTurntableFarmRes; if (!timingGotStatus) { - console.log(`是否到了领取免费赠送的抽奖机会----${sysTime > (timingLastSysTime + 60 * 60 * timingIntervalHours * 1000)}`) - if (sysTime > (timingLastSysTime + 60 * 60 * timingIntervalHours * 1000)) { + console.log(`是否到了领取免费赠送的抽奖机会----${sysTime > timingLastSysTime + 60 * 60 * timingIntervalHours * 1000}`); + if (sysTime > timingLastSysTime + 60 * 60 * timingIntervalHours * 1000) { await timingAwardForTurntableFarm(); console.log(`领取定时奖励结果${JSON.stringify($.timingAwardRes)}`); await initForTurntableFarm(); remainLotteryTimes = $.initForTurntableFarmRes.remainLotteryTimes; } else { - console.log(`免费赠送的抽奖机会未到时间`) + console.log(`免费赠送的抽奖机会未到时间`); } } else { - console.log('4小时候免费赠送的抽奖机会已领取') + console.log("4小时候免费赠送的抽奖机会已领取"); } if ($.initForTurntableFarmRes.turntableBrowserAds && $.initForTurntableFarmRes.turntableBrowserAds.length > 0) { for (let index = 0; index < $.initForTurntableFarmRes.turntableBrowserAds.length; index++) { if (!$.initForTurntableFarmRes.turntableBrowserAds[index].status) { - console.log(`开始浏览天天抽奖的第${index + 1}个逛会场任务`) + console.log(`开始浏览天天抽奖的第${index + 1}个逛会场任务`); await browserForTurntableFarm(1, $.initForTurntableFarmRes.turntableBrowserAds[index].adId); - if ($.browserForTurntableFarmRes.code === '0' && $.browserForTurntableFarmRes.status) { - console.log(`第${index + 1}个逛会场任务完成,开始领取水滴奖励\n`) + if ($.browserForTurntableFarmRes.code === "0" && $.browserForTurntableFarmRes.status) { + console.log(`第${index + 1}个逛会场任务完成,开始领取水滴奖励\n`); await browserForTurntableFarm(2, $.initForTurntableFarmRes.turntableBrowserAds[index].adId); - if ($.browserForTurntableFarmRes.code === '0') { - console.log(`第${index + 1}个逛会场任务领取水滴奖励完成\n`) + if ($.browserForTurntableFarmRes.code === "0") { + console.log(`第${index + 1}个逛会场任务领取水滴奖励完成\n`); await initForTurntableFarm(); remainLotteryTimes = $.initForTurntableFarmRes.remainLotteryTimes; } } } else { - console.log(`浏览天天抽奖的第${index + 1}个逛会场任务已完成`) + console.log(`浏览天天抽奖的第${index + 1}个逛会场任务已完成`); } } } //天天抽奖助力 - console.log('开始天天抽奖--好友助力--每人每天只有三次助力机会.') + console.log("开始天天抽奖--好友助力--每人每天只有三次助力机会."); for (let code of newShareCodes) { if (code === $.farmInfo.farmUserPro.shareCode) { - console.log('天天抽奖-不能自己给自己助力\n') - continue + console.log("天天抽奖-不能自己给自己助力\n"); + continue; } await lotteryMasterHelp(code); // console.log('天天抽奖助力结果',lotteryMasterHelpRes.helpResult) - if ($.lotteryMasterHelpRes.helpResult.code === '0') { - console.log(`天天抽奖-助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}成功\n`) - } else if ($.lotteryMasterHelpRes.helpResult.code === '11') { - console.log(`天天抽奖-不要重复助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}\n`) - } else if ($.lotteryMasterHelpRes.helpResult.code === '13') { + if ($.lotteryMasterHelpRes.helpResult.code === "0") { + console.log(`天天抽奖-助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}成功\n`); + } else if ($.lotteryMasterHelpRes.helpResult.code === "11") { + console.log(`天天抽奖-不要重复助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}\n`); + } else if ($.lotteryMasterHelpRes.helpResult.code === "13") { console.log(`天天抽奖-助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}失败,助力次数耗尽\n`); break; } } - console.log(`---天天抽奖次数remainLotteryTimes----${remainLotteryTimes}次`) + console.log(`---天天抽奖次数remainLotteryTimes----${remainLotteryTimes}次`); //抽奖 if (remainLotteryTimes > 0) { - console.log('开始抽奖') - let lotteryResult = ''; - for (let i = 0; i < new Array(remainLotteryTimes).fill('').length; i++) { - await lotteryForTurntableFarm() + console.log("开始抽奖"); + let lotteryResult = ""; + for (let i = 0; i < new Array(remainLotteryTimes).fill("").length; i++) { + await lotteryForTurntableFarm(); console.log(`第${i + 1}次抽奖结果${JSON.stringify($.lotteryRes)}`); - if ($.lotteryRes.code === '0') { + if ($.lotteryRes.code === "0") { turntableInfos.map((item) => { if (item.type === $.lotteryRes.type) { console.log(`lotteryRes.type${$.lotteryRes.type}`); - if ($.lotteryRes.type.match(/bean/g) && $.lotteryRes.type.match(/bean/g)[0] === 'bean') { + if ($.lotteryRes.type.match(/bean/g) && $.lotteryRes.type.match(/bean/g)[0] === "bean") { lotteryResult += `${item.name}个,`; - } else if ($.lotteryRes.type.match(/water/g) && $.lotteryRes.type.match(/water/g)[0] === 'water') { + } else if ($.lotteryRes.type.match(/water/g) && $.lotteryRes.type.match(/water/g)[0] === "water") { lotteryResult += `${item.name},`; } else { lotteryResult += `${item.name},`; } } - }) + }); //没有次数了 if ($.lotteryRes.remainLotteryTimes === 0) { - break + break; } } } if (lotteryResult) { - console.log(`【天天抽奖】${lotteryResult.substr(0, lotteryResult.length - 1)}\n`) + console.log(`【天天抽奖】${lotteryResult.substr(0, lotteryResult.length - 1)}\n`); // message += `【天天抽奖】${lotteryResult.substr(0, lotteryResult.length - 1)}\n`; } } else { - console.log('天天抽奖--抽奖机会为0次') + console.log("天天抽奖--抽奖机会为0次"); } } else { - console.log('初始化天天抽奖得好礼失败') + console.log("初始化天天抽奖得好礼失败"); } } //领取额外奖励水滴 async function getExtraAward() { await masterHelpTaskInitForFarm(); - if ($.masterHelpResult.code === '0') { + if ($.masterHelpResult.code === "0") { if ($.masterHelpResult.masterHelpPeoples && $.masterHelpResult.masterHelpPeoples.length >= 5) { // 已有五人助力。领取助力后的奖励 if (!$.masterHelpResult.masterGotFinal) { await masterGotFinishedTaskForFarm(); - if ($.masterGotFinished.code === '0') { + if ($.masterGotFinished.code === "0") { console.log(`已成功领取好友助力奖励:【${$.masterGotFinished.amount}】g水`); message += `【额外奖励】${$.masterGotFinished.amount}g水领取成功\n`; } @@ -604,50 +622,50 @@ async function getExtraAward() { message += `【额外奖励】领取失败,原因:给您助力的人未达5个\n`; } if ($.masterHelpResult.masterHelpPeoples && $.masterHelpResult.masterHelpPeoples.length > 0) { - let str = ''; + let str = ""; $.masterHelpResult.masterHelpPeoples.map((item, index) => { - if (index === ($.masterHelpResult.masterHelpPeoples.length - 1)) { + if (index === $.masterHelpResult.masterHelpPeoples.length - 1) { str += item.nickName || "匿名用户"; } else { - str += (item.nickName || "匿名用户") + ','; + str += (item.nickName || "匿名用户") + ","; } let date = new Date(item.time); - let time = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getMinutes(); + let time = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getMinutes(); console.log(`\n京东昵称【${item.nickName || "匿名用户"}】 在 ${time} 给您助过力\n`); - }) + }); message += `【助力您的好友】${str}\n`; } - console.log('领取额外奖励水滴结束\n'); + console.log("领取额外奖励水滴结束\n"); } } //助力好友 async function masterHelpShare() { - console.log('开始助力好友') + console.log("开始助力好友"); let salveHelpAddWater = 0; - let remainTimes = 3;//今日剩余助力次数,默认3次(京东农场每人每天3次助力机会)。 - let helpSuccessPeoples = '';//成功助力好友 + let remainTimes = 3; //今日剩余助力次数,默认3次(京东农场每人每天3次助力机会)。 + let helpSuccessPeoples = ""; //成功助力好友 console.log(`格式化后的助力码::${JSON.stringify(newShareCodes)}\n`); for (let code of newShareCodes) { console.log(`开始助力京东账号${$.index} - ${$.nickName}的好友: ${code}`); if (!code) continue; if (code === $.farmInfo.farmUserPro.shareCode) { - console.log('不能为自己助力哦,跳过自己的shareCode\n') - continue + console.log("不能为自己助力哦,跳过自己的shareCode\n"); + continue; } await masterHelp(code); - if ($.helpResult.code === '0') { - if ($.helpResult.helpResult.code === '0') { + if ($.helpResult.code === "0") { + if ($.helpResult.helpResult.code === "0") { //助力成功 salveHelpAddWater += $.helpResult.helpResult.salveHelpAddWater; console.log(`【助力好友结果】: 已成功给【${$.helpResult.helpResult.masterUserInfo.nickName}】助力`); - console.log(`给好友【${$.helpResult.helpResult.masterUserInfo.nickName}】助力获得${$.helpResult.helpResult.salveHelpAddWater}g水滴`) - helpSuccessPeoples += ($.helpResult.helpResult.masterUserInfo.nickName || '匿名用户') + ','; - } else if ($.helpResult.helpResult.code === '8') { + console.log(`给好友【${$.helpResult.helpResult.masterUserInfo.nickName}】助力获得${$.helpResult.helpResult.salveHelpAddWater}g水滴`); + helpSuccessPeoples += ($.helpResult.helpResult.masterUserInfo.nickName || "匿名用户") + ","; + } else if ($.helpResult.helpResult.code === "8") { console.log(`【助力好友结果】: 助力【${$.helpResult.helpResult.masterUserInfo.nickName}】失败,您今天助力次数已耗尽`); - } else if ($.helpResult.helpResult.code === '9') { + } else if ($.helpResult.helpResult.code === "9") { console.log(`【助力好友结果】: 之前给【${$.helpResult.helpResult.masterUserInfo.nickName}】助力过了`); - } else if ($.helpResult.helpResult.code === '10') { + } else if ($.helpResult.helpResult.code === "10") { console.log(`【助力好友结果】: 好友【${$.helpResult.helpResult.masterUserInfo.nickName}】已满五人助力`); } else { console.log(`助力其他情况:${JSON.stringify($.helpResult.helpResult)}`); @@ -656,7 +674,7 @@ async function masterHelpShare() { remainTimes = $.helpResult.helpResult.remainTimes; if ($.helpResult.helpResult.remainTimes === 0) { console.log(`您当前助力次数已耗尽,跳出助力`); - break + break; } } else { console.log(`助力失败::${JSON.stringify($.helpResult)}`); @@ -666,12 +684,12 @@ async function masterHelpShare() { let helpSuccessPeoplesKey = timeFormat() + $.farmInfo.farmUserPro.shareCode; if (!$.getdata(helpSuccessPeoplesKey)) { //把前一天的清除 - $.setdata('', timeFormat(Date.now() - 24 * 60 * 60 * 1000) + $.farmInfo.farmUserPro.shareCode); - $.setdata('', helpSuccessPeoplesKey); + $.setdata("", timeFormat(Date.now() - 24 * 60 * 60 * 1000) + $.farmInfo.farmUserPro.shareCode); + $.setdata("", helpSuccessPeoplesKey); } if (helpSuccessPeoples) { if ($.getdata(helpSuccessPeoplesKey)) { - $.setdata($.getdata(helpSuccessPeoplesKey) + ',' + helpSuccessPeoples, helpSuccessPeoplesKey); + $.setdata($.getdata(helpSuccessPeoplesKey) + "," + helpSuccessPeoples, helpSuccessPeoplesKey); } else { $.setdata(helpSuccessPeoples, helpSuccessPeoplesKey); } @@ -686,16 +704,16 @@ async function masterHelpShare() { console.log(`【助力好友👬】获得${salveHelpAddWater}g💧\n`); } message += `【今日剩余助力👬】${remainTimes}次\n`; - console.log('助力好友结束,即将开始领取额外水滴奖励\n'); + console.log("助力好友结束,即将开始领取额外水滴奖励\n"); } //水滴雨 async function executeWaterRains() { let executeWaterRain = !$.farmTask.waterRainInit.f; if (executeWaterRain) { console.log(`水滴雨任务,每天两次,最多可得10g水滴`); - console.log(`两次水滴雨任务是否全部完成:${$.farmTask.waterRainInit.f ? '是' : '否'}`); + console.log(`两次水滴雨任务是否全部完成:${$.farmTask.waterRainInit.f ? "是" : "否"}`); if ($.farmTask.waterRainInit.lastTime) { - if (Date.now() < ($.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000)) { + if (Date.now() < $.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000) { executeWaterRain = false; // message += `【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】未到时间,请${new Date($.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000).toLocaleTimeString()}再试\n`; console.log(`\`【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】未到时间,请${new Date($.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000).toLocaleTimeString()}再试\n`); @@ -704,9 +722,9 @@ async function executeWaterRains() { if (executeWaterRain) { console.log(`开始水滴雨任务,这是第${$.farmTask.waterRainInit.winTimes + 1}次,剩余${2 - ($.farmTask.waterRainInit.winTimes + 1)}次`); await waterRainForFarm(); - console.log('水滴雨waterRain'); - if ($.waterRain.code === '0') { - console.log('水滴雨任务执行成功,获得水滴:' + $.waterRain.addEnergy + 'g'); + console.log("水滴雨waterRain"); + if ($.waterRain.code === "0") { + console.log("水滴雨任务执行成功,获得水滴:" + $.waterRain.addEnergy + "g"); console.log(`【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】获得${$.waterRain.addEnergy}g水滴\n`); // message += `【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】获得${$.waterRain.addEnergy}g水滴\n`; } @@ -717,22 +735,22 @@ async function executeWaterRains() { } //打卡领水活动 async function clockInIn() { - console.log('开始打卡领水活动(签到,关注,领券)'); + console.log("开始打卡领水活动(签到,关注,领券)"); await clockInInitForFarm(); - if ($.clockInInit.code === '0') { + if ($.clockInInit.code === "0") { // 签到得水滴 if (!$.clockInInit.todaySigned) { - console.log('开始今日签到'); + console.log("开始今日签到"); await clockInForFarm(); console.log(`打卡结果${JSON.stringify($.clockInForFarmRes)}`); - if ($.clockInForFarmRes.code === '0') { + if ($.clockInForFarmRes.code === "0") { // message += `【第${$.clockInForFarmRes.signDay}天签到】获得${$.clockInForFarmRes.amount}g💧\n`; - console.log(`【第${$.clockInForFarmRes.signDay}天签到】获得${$.clockInForFarmRes.amount}g💧\n`) + console.log(`【第${$.clockInForFarmRes.signDay}天签到】获得${$.clockInForFarmRes.amount}g💧\n`); if ($.clockInForFarmRes.signDay === 7) { //可以领取惊喜礼包 - console.log('开始领取--惊喜礼包38g水滴'); + console.log("开始领取--惊喜礼包38g水滴"); await gotClockInGift(); - if ($.gotClockInGiftRes.code === '0') { + if ($.gotClockInGiftRes.code === "0") { // message += `【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`; console.log(`【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`); } @@ -740,9 +758,9 @@ async function clockInIn() { } } if ($.clockInInit.todaySigned && $.clockInInit.totalSigned === 7) { - console.log('开始领取--惊喜礼包38g水滴'); + console.log("开始领取--惊喜礼包38g水滴"); await gotClockInGift(); - if ($.gotClockInGiftRes.code === '0') { + if ($.gotClockInGiftRes.code === "0") { // message += `【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`; console.log(`【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`); } @@ -754,10 +772,10 @@ async function clockInIn() { console.log(`关注ID${item.id}`); await clockInFollowForFarm(item.id, "theme", "1"); console.log(`themeStep1--结果${JSON.stringify($.themeStep1)}`); - if ($.themeStep1.code === '0') { + if ($.themeStep1.code === "0") { await clockInFollowForFarm(item.id, "theme", "2"); console.log(`themeStep2--结果${JSON.stringify($.themeStep2)}`); - if ($.themeStep2.code === '0') { + if ($.themeStep2.code === "0") { console.log(`关注${item.name},获得水滴${$.themeStep2.amount}g`); } } @@ -771,9 +789,9 @@ async function clockInIn() { console.log(`领券的ID${item.id}`); await clockInFollowForFarm(item.id, "venderCoupon", "1"); console.log(`venderCouponStep1--结果${JSON.stringify($.venderCouponStep1)}`); - if ($.venderCouponStep1.code === '0') { + if ($.venderCouponStep1.code === "0") { await clockInFollowForFarm(item.id, "venderCoupon", "2"); - if ($.venderCouponStep2.code === '0') { + if ($.venderCouponStep2.code === "0") { console.log(`venderCouponStep2--结果${JSON.stringify($.venderCouponStep2)}`); console.log(`从${item.name}领券,获得水滴${$.venderCouponStep2.amount}g`); } @@ -782,11 +800,11 @@ async function clockInIn() { } } } - console.log('开始打卡领水活动(签到,关注,领券)结束\n'); + console.log("开始打卡领水活动(签到,关注,领券)结束\n"); } // async function getAwardInviteFriend() { - await friendListInitForFarm();//查询好友列表 + await friendListInitForFarm(); //查询好友列表 // console.log(`查询好友列表数据:${JSON.stringify($.friendList)}\n`) if ($.friendList) { console.log(`\n今日已邀请好友${$.friendList.inviteFriendCount}个 / 每日邀请上限${$.friendList.inviteFriendMax}个`); @@ -794,21 +812,21 @@ async function getAwardInviteFriend() { if ($.friendList.friends && $.friendList.friends.length > 0) { for (let friend of $.friendList.friends) { console.log(`\n开始删除好友 [${friend.shareCode}]`); - const deleteFriendForFarm = await request('deleteFriendForFarm', { "shareCode": `${friend.shareCode}`, "version": 8, "channel": 1 }); - if (deleteFriendForFarm && deleteFriendForFarm.code === '0') { + const deleteFriendForFarm = await request("deleteFriendForFarm", { shareCode: `${friend.shareCode}`, version: 8, channel: 1 }); + if (deleteFriendForFarm && deleteFriendForFarm.code === "0") { console.log(`删除好友 [${friend.shareCode}] 成功\n`); } } } - await receiveFriendInvite();//为他人助力,接受邀请成为别人的好友 + await receiveFriendInvite(); //为他人助力,接受邀请成为别人的好友 if ($.friendList.inviteFriendCount > 0) { if ($.friendList.inviteFriendCount > $.friendList.inviteFriendGotAwardCount) { - console.log('开始领取邀请好友的奖励'); + console.log("开始领取邀请好友的奖励"); await awardInviteFriendForFarm(); console.log(`领取邀请好友的奖励结果::${JSON.stringify($.awardInviteFriendRes)}`); } } else { - console.log('今日未邀请过好友') + console.log("今日未邀请过好友"); } } else { console.log(`查询好友列表失败\n`); @@ -817,7 +835,7 @@ async function getAwardInviteFriend() { //给好友浇水 async function doFriendsWater() { await friendListInitForFarm(); - console.log('开始给好友浇水...'); + console.log("开始给好友浇水..."); await taskInitForFarm(); const { waterFriendCountKey, waterFriendMax } = $.farmTask.waterFriendTaskInit; console.log(`今日已给${waterFriendCountKey}个好友浇水`); @@ -826,36 +844,37 @@ async function doFriendsWater() { if ($.friendList.friends && $.friendList.friends.length > 0) { $.friendList.friends.map((item, index) => { if (item.friendState === 1) { - if (needWaterFriends.length < (waterFriendMax - waterFriendCountKey)) { + if (needWaterFriends.length < waterFriendMax - waterFriendCountKey) { needWaterFriends.push(item.shareCode); } } }); console.log(`需要浇水的好友列表shareCodes:${JSON.stringify(needWaterFriends)}`); - let waterFriendsCount = 0, cardInfoStr = ''; + let waterFriendsCount = 0, + cardInfoStr = ""; for (let index = 0; index < needWaterFriends.length; index++) { await waterFriendForFarm(needWaterFriends[index]); - console.log(`为第${index + 1}个好友浇水结果:${JSON.stringify($.waterFriendForFarmRes)}\n`) - if ($.waterFriendForFarmRes.code === '0') { + console.log(`为第${index + 1}个好友浇水结果:${JSON.stringify($.waterFriendForFarmRes)}\n`); + if ($.waterFriendForFarmRes.code === "0") { waterFriendsCount++; if ($.waterFriendForFarmRes.cardInfo) { - console.log('为好友浇水获得道具了'); - if ($.waterFriendForFarmRes.cardInfo.type === 'beanCard') { + console.log("为好友浇水获得道具了"); + if ($.waterFriendForFarmRes.cardInfo.type === "beanCard") { console.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); cardInfoStr += `水滴换豆卡,`; - } else if ($.waterFriendForFarmRes.cardInfo.type === 'fastCard') { + } else if ($.waterFriendForFarmRes.cardInfo.type === "fastCard") { console.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); cardInfoStr += `快速浇水卡,`; - } else if ($.waterFriendForFarmRes.cardInfo.type === 'doubleCard') { + } else if ($.waterFriendForFarmRes.cardInfo.type === "doubleCard") { console.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); cardInfoStr += `水滴翻倍卡,`; - } else if ($.waterFriendForFarmRes.cardInfo.type === 'signCard') { + } else if ($.waterFriendForFarmRes.cardInfo.type === "signCard") { console.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); cardInfoStr += `加签卡,`; } } - } else if ($.waterFriendForFarmRes.code === '11') { - console.log('水滴不够,跳出浇水') + } else if ($.waterFriendForFarmRes.code === "11") { + console.log("水滴不够,跳出浇水"); } } // message += `【好友浇水】已给${waterFriendsCount}个好友浇水,消耗${waterFriendsCount * 10}g水\n`; @@ -865,21 +884,21 @@ async function doFriendsWater() { console.log(`【好友浇水奖励】${cardInfoStr.substr(0, cardInfoStr.length - 1)}\n`); } } else { - console.log('您的好友列表暂无好友,快去邀请您的好友吧!') + console.log("您的好友列表暂无好友,快去邀请您的好友吧!"); } } else { - console.log(`今日已为好友浇水量已达${waterFriendMax}个`) + console.log(`今日已为好友浇水量已达${waterFriendMax}个`); } } //领取给3个好友浇水后的奖励水滴 async function getWaterFriendGotAward() { await taskInitForFarm(); - const { waterFriendCountKey, waterFriendMax, waterFriendSendWater, waterFriendGotAward } = $.farmTask.waterFriendTaskInit + const { waterFriendCountKey, waterFriendMax, waterFriendSendWater, waterFriendGotAward } = $.farmTask.waterFriendTaskInit; if (waterFriendCountKey >= waterFriendMax) { if (!waterFriendGotAward) { await waterFriendGotAwardForFarm(); - console.log(`领取给${waterFriendMax}个好友浇水后的奖励水滴::${JSON.stringify($.waterFriendGotAwardRes)}`) - if ($.waterFriendGotAwardRes.code === '0') { + console.log(`领取给${waterFriendMax}个好友浇水后的奖励水滴::${JSON.stringify($.waterFriendGotAwardRes)}`); + if ($.waterFriendGotAwardRes.code === "0") { // message += `【给${waterFriendMax}好友浇水】奖励${$.waterFriendGotAwardRes.addWater}g水滴\n`; console.log(`【给${waterFriendMax}好友浇水】奖励${$.waterFriendGotAwardRes.addWater}g水滴\n`); } @@ -895,15 +914,15 @@ async function getWaterFriendGotAward() { async function receiveFriendInvite() { for (let code of newShareCodes) { if (code === $.farmInfo.farmUserPro.shareCode) { - console.log('自己不能邀请自己成为好友噢\n') - continue + console.log("自己不能邀请自己成为好友噢\n"); + continue; } await inviteFriend(code); // console.log(`接收邀请成为好友结果:${JSON.stringify($.inviteFriendRes)}`) - if ($.inviteFriendRes && $.inviteFriendRes.helpResult && $.inviteFriendRes.helpResult.code === '0') { - console.log(`接收邀请成为好友结果成功,您已成为${$.inviteFriendRes.helpResult.masterUserInfo.nickName}的好友`) - } else if ($.inviteFriendRes && $.inviteFriendRes.helpResult && $.inviteFriendRes.helpResult.code === '17') { - console.log(`接收邀请成为好友结果失败,对方已是您的好友`) + if ($.inviteFriendRes && $.inviteFriendRes.helpResult && $.inviteFriendRes.helpResult.code === "0") { + console.log(`接收邀请成为好友结果成功,您已成为${$.inviteFriendRes.helpResult.masterUserInfo.nickName}的好友`); + } else if ($.inviteFriendRes && $.inviteFriendRes.helpResult && $.inviteFriendRes.helpResult.code === "17") { + console.log(`接收邀请成为好友结果失败,对方已是您的好友`); } } // console.log(`开始接受6fbd26cc27ac44d6a7fed34092453f77的邀请\n`) @@ -919,7 +938,7 @@ async function duck() { for (let i = 0; i < 10; i++) { //这里循环十次 await getFullCollectionReward(); - if ($.duckRes.code === '0') { + if ($.duckRes.code === "0") { if (!$.duckRes.hasLimit) { console.log(`小鸭子游戏:${$.duckRes.title}`); // if ($.duckRes.type !== 3) { @@ -931,11 +950,11 @@ async function duck() { // } // } } else { - console.log(`${$.duckRes.title}`) + console.log(`${$.duckRes.title}`); break; } - } else if ($.duckRes.code === '10') { - console.log(`小鸭子游戏达到上限`) + } else if ($.duckRes.code === "10") { + console.log(`小鸭子游戏达到上限`); break; } } @@ -943,26 +962,26 @@ async function duck() { // ========================API调用接口======================== //鸭子,点我有惊喜 async function getFullCollectionReward() { - return new Promise(resolve => { - const body = { "type": 2, "version": 6, "channel": 2 }; + return new Promise((resolve) => { + const body = { type: 2, version: 6, channel: 2 }; $.post(taskUrl("getFullCollectionReward", body), (err, resp, data) => { try { if (err) { - console.log('\n东东农场: API查询请求失败 ‼️‼️'); + console.log("\n东东农场: API查询请求失败 ‼️‼️"); console.log(JSON.stringify(err)); $.logErr(err); } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { $.duckRes = JSON.parse(data); } } } catch (e) { - $.logErr(e, resp) + $.logErr(e, resp); } finally { resolve(); } - }) - }) + }); + }); } /** @@ -980,17 +999,17 @@ async function firstWaterTaskForFarm() { //领取给3个好友浇水后的奖励水滴API async function waterFriendGotAwardForFarm() { const functionId = arguments.callee.name.toString(); - $.waterFriendGotAwardRes = await request(functionId, { "version": 4, "channel": 1 }); + $.waterFriendGotAwardRes = await request(functionId, { version: 4, channel: 1 }); } // 查询背包道具卡API async function myCardInfoForFarm() { const functionId = arguments.callee.name.toString(); - $.myCardInfoRes = await request(functionId, { "version": 5, "channel": 1 }); + $.myCardInfoRes = await request(functionId, { version: 5, channel: 1 }); } //使用道具卡API async function userMyCardForFarm(cardType) { const functionId = arguments.callee.name.toString(); - $.userMyCardRes = await request(functionId, { "cardType": cardType }); + $.userMyCardRes = await request(functionId, { cardType: cardType }); } /** * 领取浇水过程中的阶段性奖励 @@ -998,12 +1017,12 @@ async function userMyCardForFarm(cardType) { * @returns {Promise} */ async function gotStageAwardForFarm(type) { - $.gotStageAwardForFarmRes = await request(arguments.callee.name.toString(), { 'type': type }); + $.gotStageAwardForFarmRes = await request(arguments.callee.name.toString(), { type: type }); } //浇水API async function waterGoodForFarm() { await $.wait(1000); - console.log('等待了1秒'); + console.log("等待了1秒"); const functionId = arguments.callee.name.toString(); $.waterResult = await request(functionId); @@ -1014,7 +1033,7 @@ async function initForTurntableFarm() { } async function lotteryForTurntableFarm() { await $.wait(2000); - console.log('等待了2秒'); + console.log("等待了2秒"); $.lotteryRes = await request(arguments.callee.name.toString(), { type: 1, version: 4, channel: 1 }); } @@ -1024,19 +1043,19 @@ async function timingAwardForTurntableFarm() { async function browserForTurntableFarm(type, adId) { if (type === 1) { - console.log('浏览爆品会场'); + console.log("浏览爆品会场"); } if (type === 2) { - console.log('天天抽奖浏览任务领取水滴'); + console.log("天天抽奖浏览任务领取水滴"); } - const body = { "type": type, "adId": adId, "version": 4, "channel": 1 }; + const body = { type: type, adId: adId, version: 4, channel: 1 }; $.browserForTurntableFarmRes = await request(arguments.callee.name.toString(), body); // 浏览爆品会场8秒 } //天天抽奖浏览任务领取水滴API async function browserForTurntableFarm2(type) { - const body = { "type": 2, "adId": type, "version": 4, "channel": 1 }; - $.browserForTurntableFarm2Res = await request('browserForTurntableFarm', body); + const body = { type: 2, adId: type, version: 4, channel: 1 }; + $.browserForTurntableFarm2Res = await request("browserForTurntableFarm", body); } /** * 天天抽奖拿好礼-助力API(每人每天三次助力机会) @@ -1045,10 +1064,10 @@ async function lotteryMasterHelp() { $.lotteryMasterHelpRes = await request(`initForFarm`, { imageUrl: "", nickName: "", - shareCode: arguments[0] + '-3', + shareCode: arguments[0] + "-3", babelChannel: "3", version: 4, - channel: 1 + channel: 1, }); } @@ -1067,9 +1086,9 @@ async function inviteFriend() { $.inviteFriendRes = await request(`initForFarm`, { imageUrl: "", nickName: "", - shareCode: arguments[0] + '-inviteFriend', + shareCode: arguments[0] + "-inviteFriend", version: 4, - channel: 2 + channel: 2, }); } // 助力好友API @@ -1080,7 +1099,7 @@ async function masterHelp() { shareCode: arguments[0], babelChannel: "3", version: 2, - channel: 1 + channel: 1, }); } /** @@ -1088,7 +1107,7 @@ async function masterHelp() { */ async function waterRainForFarm() { const functionId = arguments.callee.name.toString(); - const body = { "type": 1, "hongBaoTimes": 100, "version": 3 }; + const body = { type: 1, hongBaoTimes: 100, version: 3 }; $.waterRain = await request(functionId, body); } /** @@ -1102,7 +1121,7 @@ async function clockInInitForFarm() { // 连续签到API async function clockInForFarm() { const functionId = arguments.callee.name.toString(); - $.clockInForFarmRes = await request(functionId, { "type": 1 }); + $.clockInForFarmRes = await request(functionId, { type: 1 }); } //关注,领券等API @@ -1111,18 +1130,18 @@ async function clockInFollowForFarm(id, type, step) { let body = { id, type, - step - } - if (type === 'theme') { - if (step === '1') { + step, + }; + if (type === "theme") { + if (step === "1") { $.themeStep1 = await request(functionId, body); - } else if (step === '2') { + } else if (step === "2") { $.themeStep2 = await request(functionId, body); } - } else if (type === 'venderCoupon') { - if (step === '1') { + } else if (type === "venderCoupon") { + if (step === "1") { $.venderCouponStep1 = await request(functionId, body); - } else if (step === '2') { + } else if (step === "2") { $.venderCouponStep2 = await request(functionId, body); } } @@ -1130,7 +1149,7 @@ async function clockInFollowForFarm(id, type, step) { // 领取连续签到7天的惊喜礼包API async function gotClockInGift() { - $.gotClockInGiftRes = await request('clockInForFarm', { "type": 2 }) + $.gotClockInGiftRes = await request("clockInForFarm", { type: 2 }); } //定时领水API @@ -1146,9 +1165,9 @@ async function gotThreeMealForFarm() { async function browseAdTaskForFarm(advertId, type) { const functionId = arguments.callee.name.toString(); if (type === 0) { - $.browseResult = await request(functionId, { advertId, type, "version": 14, "channel": 1, "babelChannel": "45" }); + $.browseResult = await request(functionId, { advertId, type, version: 14, channel: 1, babelChannel: "45" }); } else if (type === 1) { - $.browseRwardResult = await request(functionId, { advertId, type, "version": 14, "channel": 1, "babelChannel": "45" }); + $.browseRwardResult = await request(functionId, { advertId, type, version: 14, channel: 1, babelChannel: "45" }); } } // 被水滴砸中API @@ -1164,79 +1183,85 @@ async function signForFarm() { * 初始化农场, 可获取果树及用户信息API */ async function initForFarm() { - return new Promise(resolve => { + return new Promise((resolve) => { const option = { url: `${JD_API_HOST}?functionId=initForFarm`, - body: `body=${escape(JSON.stringify({ "version": 14 }))}&appid=wh5&clientVersion=9.1.0`, + body: `body=${escape(JSON.stringify({ version: 14 }))}&appid=wh5&clientVersion=9.1.0`, headers: { - "accept": "*/*", + accept: "*/*", "accept-encoding": "gzip, deflate, br", "accept-language": "zh-CN,zh;q=0.9", "cache-control": "no-cache", - "cookie": cookie, - "origin": "https://home.m.jd.com", - "pragma": "no-cache", - "referer": "https://home.m.jd.com/myJd/newhome.action", + cookie: cookie, + origin: "https://home.m.jd.com", + pragma: "no-cache", + referer: "https://home.m.jd.com/myJd/newhome.action", "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "same-site", - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), - "Content-Type": "application/x-www-form-urlencoded" + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : require("./USER_AGENTS").USER_AGENT + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "Content-Type": "application/x-www-form-urlencoded", }, timeout: 10000, }; $.post(option, (err, resp, data) => { try { if (err) { - console.log('\n东东农场: API查询请求失败 ‼️‼️'); + console.log("\n东东农场: API查询请求失败 ‼️‼️"); console.log(JSON.stringify(err)); $.logErr(err); } else { - if (safeGet(data)) { - $.farmInfo = JSON.parse(data) + if (jd_helpers.safeGet(data)) { + $.farmInfo = JSON.parse(data); } } } catch (e) { - $.logErr(e, resp) + $.logErr(e, resp); } finally { resolve(); } - }) - }) + }); + }); } // 初始化任务列表API async function taskInitForFarm() { - console.log('\n初始化任务列表') + console.log("\n初始化任务列表"); const functionId = arguments.callee.name.toString(); - $.farmTask = await request(functionId, {"version": 14, "channel": 1, "babelChannel":"45"}); + $.farmTask = await request(functionId, {"version":14,"channel":1,"babelChannel":"120"}); } //获取好友列表API async function friendListInitForFarm() { - $.friendList = await request('friendListInitForFarm', { "version": 4, "channel": 1 }); + $.friendList = await request("friendListInitForFarm", { version: 4, channel: 1 }); // console.log('aa', aa); } // 领取邀请好友的奖励API async function awardInviteFriendForFarm() { - $.awardInviteFriendRes = await request('awardInviteFriendForFarm'); + $.awardInviteFriendRes = await request("awardInviteFriendForFarm"); } //为好友浇水API async function waterFriendForFarm(shareCode) { - const body = { "shareCode": shareCode, "version": 6, "channel": 1 } - $.waterFriendForFarmRes = await request('waterFriendForFarm', body); + const body = { shareCode: shareCode, version: 6, channel: 1 }; + $.waterFriendForFarmRes = await request("waterFriendForFarm", body); } async function showMsg() { if ($.isNode() && process.env.FRUIT_NOTIFY_CONTROL) { - $.ctrTemp = `${process.env.FRUIT_NOTIFY_CONTROL}` === 'false'; - } else if ($.getdata('jdFruitNotify')) { - $.ctrTemp = $.getdata('jdFruitNotify') === 'false'; + $.ctrTemp = `${process.env.FRUIT_NOTIFY_CONTROL}` === "false"; + } else if ($.getdata("jdFruitNotify")) { + $.ctrTemp = $.getdata("jdFruitNotify") === "false"; } else { - $.ctrTemp = `${jdNotify}` === 'false'; + $.ctrTemp = `${jdNotify}` === "false"; } if ($.ctrTemp) { $.msg($.name, subTitle, message, option); if ($.isNode()) { - allMessage += `${subTitle}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}`; + allMessage += `${subTitle}\n${message}${$.index !== cookiesArr.length ? "\n\n" : ""}`; // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `${subTitle}\n${message}`); } } else { @@ -1247,117 +1272,74 @@ async function showMsg() { function timeFormat(time) { let date; if (time) { - date = new Date(time) + date = new Date(time); } else { date = new Date(); } - return date.getFullYear() + '-' + ((date.getMonth() + 1) >= 10 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)) + '-' + (date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()); + return date.getFullYear() + "-" + (date.getMonth() + 1 >= 10 ? date.getMonth() + 1 : "0" + (date.getMonth() + 1)) + "-" + (date.getDate() >= 10 ? date.getDate() : "0" + date.getDate()); } -// function readShareCode() { -// return new Promise(async resolve => { -// $.get({url: `http://www.helpu.cf/jdcodes/getcode.php?type=farm&num=${randomCount}`, timeout: 10000,}, (err, resp, data) => { -// try { -// if (err) { -// console.log(`${JSON.stringify(err)}`) -// console.log(`${$.name} API请求失败,请检查网路重试`) -// } else { -// if (data) { -// console.log(`随机取个${randomCount}码放到您固定的互助码后面(不影响已有固定互助)`) -// data = JSON.parse(data); -// } -// } -// } catch (e) { -// $.logErr(e, resp) -// } finally { -// resolve(data); -// } -// }) -// await $.wait(10000); -// resolve() -// }) -// } -//提交互助码 -// function submitCode() { -// return new Promise(async resolve => { -// $.get({url: `http://www.helpu.cf/jdcodes/submit.php?code=${$.farmInfo.farmUserPro.shareCode}&type=farm`, timeout: 10000}, (err, resp, data) => { -// try { -// if (err) { -// console.log(`${JSON.stringify(err)}`) -// console.log(`${$.name} API请求失败,请检查网路重试`) -// } else { -// if (data) { -// //console.log(`随机取个${randomCount}码放到您固定的互助码后面(不影响已有固定互助)`) -// data = JSON.parse(data); -// } -// } -// } catch (e) { -// $.logErr(e, resp) -// } finally { -// resolve(data); -// } -// }) -// await $.wait(15000); -// resolve() -// }) -// } + function shareCodesFormat() { - return new Promise(async resolve => { + return new Promise(async (resolve) => { // console.log(`第${$.index}个京东账号的助力码:::${$.shareCodesArr[$.index - 1]}`) newShareCodes = []; if ($.shareCodesArr[$.index - 1]) { - newShareCodes = $.shareCodesArr[$.index - 1].split('@'); + newShareCodes = $.shareCodesArr[$.index - 1].split("@"); } else { - console.log(`由于您第${$.index}个京东账号未提供shareCode,将采纳本脚本自带的助力码\n`) - const tempIndex = $.index > shareCodes.length ? (shareCodes.length - 1) : ($.index - 1); - newShareCodes = shareCodes[tempIndex].split('@'); + console.log(`由于您第${$.index}个京东账号未提供shareCode,将采纳本脚本自带的助力码\n`); + const tempIndex = $.index > shareCodes.length ? shareCodes.length - 1 : $.index - 1; + newShareCodes = shareCodes[tempIndex].split("@"); } - // 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)}`) + //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(); - }) + }); } function requireConfig() { - return new Promise(resolve => { - console.log('开始获取配置文件\n') - notify = $.isNode() ? require('./sendNotify') : ''; + return new Promise((resolve) => { + console.log("开始获取配置文件\n"); + notify = $.isNode() ? require("./sendNotify") : ""; //Node.js用户请在jdCookie.js处填写京东ck; - const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; - const jdFruitShareCodes = $.isNode() ? require('./jdFruitShareCodes.js') : ''; + const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; + const jdFruitShareCodes = $.isNode() ? require("./jdFruitShareCodes.js") : ""; //IOS等用户直接用NobyDa的jd cookie if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { if (jdCookieNode[item]) { - cookiesArr.push(jdCookieNode[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); + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...jd_helpers.jsonParse($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); } - console.log(`共${cookiesArr.length}个京东账号\n`) + console.log(`共${cookiesArr.length}个京东账号\n`); $.shareCodesArr = []; if ($.isNode()) { Object.keys(jdFruitShareCodes).forEach((item) => { if (jdFruitShareCodes[item]) { - $.shareCodesArr.push(jdFruitShareCodes[item]) + $.shareCodesArr.push(jdFruitShareCodes[item]); } - }) + }); } else { - if ($.getdata('FRUITSHARECODES')) $.shareCodesArr = $.getdata('FRUITSHARECODES').split('\n').filter(item => !!item); - console.log(`\nBoxJs设置的${$.name}好友邀请码:${$.getdata('FRUITSHARECODES') ? $.getdata('FRUITSHARECODES') : '暂无'}\n`); + if ($.getdata("jd_fruit_inviter")) + $.shareCodesArr = $.getdata("jd_fruit_inviter") + .split("\n") + .filter((item) => !!item); + console.log(`\nBoxJs设置的${$.name}好友邀请码:${$.getdata("jd_fruit_inviter") ? $.getdata("jd_fruit_inviter") : "暂无"}\n`); } // console.log(`$.shareCodesArr::${JSON.stringify($.shareCodesArr)}`) // console.log(`jdFruitShareArr账号长度::${$.shareCodesArr.length}`) console.log(`您提供了${$.shareCodesArr.length}个账号的农场助力码\n`); - resolve() - }) + resolve(); + }); } function TotalBean() { - return new Promise(async resolve => { + return new Promise(async (resolve) => { const options = { url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", headers: { @@ -1365,50 +1347,56 @@ function TotalBean() { Accept: "*/*", Connection: "keep-alive", Cookie: cookie, - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : require("./USER_AGENTS").USER_AGENT + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", "Accept-Language": "zh-cn", - "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", - "Accept-Encoding": "gzip, deflate, br" - } - } + Referer: "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br", + }, + }; $.get(options, (err, resp, data) => { try { if (err) { - $.logErr(err) + $.logErr(err); } else { if (data) { data = JSON.parse(data); - if (data['retcode'] === "1001") { + if (data["retcode"] === "1001") { $.isLogin = false; //cookie过期 return; } - if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + if (data["retcode"] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { $.nickName = data.data.userInfo.baseInfo.nickname; } } else { - $.log('京东服务器返回空数据'); + $.log("京东服务器返回空数据"); } } } catch (e) { - $.logErr(e) + $.logErr(e); } finally { resolve(); } - }) - }) + }); + }); } function request(function_id, body = {}, timeout = 1000) { - return new Promise(resolve => { + return new Promise((resolve) => { setTimeout(() => { $.get(taskUrl(function_id, body), (err, resp, data) => { try { if (err) { - console.log('\n东东农场: API查询请求失败 ‼️‼️') + console.log("\n东东农场: API查询请求失败 ‼️‼️"); console.log(JSON.stringify(err)); - console.log(`function_id:${function_id}`) + console.log(`function_id:${function_id}`); $.logErr(err); } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); } } @@ -1417,41 +1405,23 @@ function request(function_id, body = {}, timeout = 1000) { } finally { resolve(data); } - }) - }, timeout) - }) -} -function safeGet(data) { - try { - if (typeof JSON.parse(data) == "object") { - return true; - } - } catch (e) { - console.log(e); - console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); - return false; - } + }); + }, timeout); + }); } function taskUrl(function_id, body = {}) { return { url: `${JD_API_HOST}?functionId=${function_id}&appid=wh5&body=${escape(JSON.stringify(body))}`, headers: { Cookie: cookie, - UserAgent: $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + UserAgent: $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : require("./USER_AGENTS").USER_AGENT + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", }, timeout: 10000, - } -} -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') - return []; - } - } -} -// prettier-ignore -function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file + }; +} \ No newline at end of file diff --git a/jd_necklace.js b/jd_necklace.js index 8a67e37..ec6a3ab 100755 --- a/jd_necklace.js +++ b/jd_necklace.js @@ -1,135 +1,124 @@ -// @grant require /* 点点券,可以兑换无门槛红包(1元,5元,10元,100元,部分红包需抢购) -Last Modified time: 2021-07-23 10:27 +Last Modified time: 2021-05-28 17:27:14 活动入口:京东APP-领券中心/券后9.9-领点点券 [活动地址](https://h5.m.jd.com/babelDiy/Zeus/41Lkp7DumXYCFmPYtU3LTcnTTXTX/index.html) 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js ===============Quantumultx=============== [task_local] #点点券 -10 0,20 * * * jd_necklace.js, tag=点点券, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true - -================Loon============== -[Script] -cron "10 0,20 * * *" script-path=jd_necklace.js,tag=点点券 - -===============Surge================= -点点券 = type=cron,cronexp="10 0,20 * * *",wake-system=1,timeout=3600,script-path=jd_necklace.js - -============小火箭========= -点点券 = type=cron,script-path=jd_necklace.js, cronexpr="10 0,20 * * *", timeout=3600, enable=true +20 0,20 * * * jd_necklace.js, tag=点点券, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true */ -const $ = new Env('点点券'); +const jd_helpers = require("./utils/JDHelpers.js"); +const jd_env = require("./utils/JDEnv.js"); +const $ = jd_env.env("点点券二代目"); +const ZooFaker = require("./utils/ZooFaker_Necklace.js").utils; let allMessage = ``; const notify = $.isNode() ? require('./sendNotify') : ''; -const zooFaker = require('./ZooFaker_Necklace').utils; //Node.js用户请在jdCookie.js处填写京东ck; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; -const openUrl = `openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/41Lkp7DumXYCFmPYtU3LTcnTTXTX/index.html%22%20%7D` -let message = '', joyToken = '', UA = '', uuid = ''; +const openUrl = `openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/41Lkp7DumXYCFmPYtU3LTcnTTXTX/index.html%22%20%7D`; + +$.UA = ``; +$.UUID = ``; +$.joyytoken_count = 1; +getUA(); +let message = ''; let nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000); //IOS等用户直接用NobyDa的jd cookie -let cookiesArr = [], cookie = '', hasSend = false; +let cookiesArr = [], + cookie = ''; if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { - cookiesArr.push(jdCookieNode[item]) - }) + cookiesArr.push(jdCookieNode[item]); + }); if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; } else { - cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jd_helpers.jsonParse($.getdata('CookiesJD') || '[]').map((item) => item.cookie)].filter((item) => !!item); } const JD_API_HOST = 'https://api.m.jd.com/api'; !(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"}); + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { 'open-url': 'https://bean.m.jd.com/bean/signIndex.action' }); return; } - + console.log(`\n通知:[非法请求] 可以等5分钟左右再次执行脚本\n`); for (let i = 0; i < cookiesArr.length; i++) { if (cookiesArr[i]) { - await getToken(); - cookie = cookiesArr[i] + `joyytoken=50082${joyToken};`; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + cookie = cookiesArr[i]; + $.cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); $.index = i + 1; $.isLogin = true; $.nickName = ''; message = ''; - await TotalBean(); - console.log(`\n*******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); - if (!$.isLogin) { - $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); - - if ($.isNode()) { - await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); - } - continue - } - UA = `jdapp;iPhone;10.0.8;14.4.2;${randomString()};network/wifi;ADID/3F74A88A-71D3-404B-BBDF-8C0575E680EC;model/iPhone10,2;addressid/4091160336;appBuild/167741;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` - uuid = UA.split(';') && UA.split(';')[4] || '' + errorMsgLllegal = 0; + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); await jd_necklace(); + // break } } if ($.isNode() && allMessage) { - await notify.sendNotify(`${$.name}`, `${allMessage}`, { url: openUrl }) + await notify.sendNotify(`${$.name}`, `${allMessage}`, { url: openUrl }); } })() - .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') - }) - .finally(() => { - $.done(); - }) + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, ''); + }) + .finally(() => { + $.done(); + }); async function jd_necklace() { try { await necklace_homePage(); - await $.wait(2000) + await $.wait(2000); await doTask(); - await $.wait(2000) + await $.wait(2000); await sign(); - await $.wait(2000) + await $.wait(2000); await necklace_homePage(); - await $.wait(2000) await receiveBubbles(); - await $.wait(2000) await necklace_homePage(); - await $.wait(2000) - if (formatInt($.totalScore)) { - if (new Date().getDate() === 20 && (new Date().getMonth() + 1 === 6)) { - //2021-06-21凌晨0点,点点券将要全部清零处理,故全部兑换 - await $.wait(2000) - await necklace_exchangeGift(formatInt($.totalScore));//自动兑换多少钱的无门槛红包,1000代表1元,默认兑换全部点点券 - } - } + // // await necklace_exchangeGift($.totalScore);//自动兑换多少钱的无门槛红包,1000代表1元,默认兑换全部点点券 await showMsg(); + await $.wait(2000); } catch (e) { - $.logErr(e) + $.logErr(e); } } function showMsg() { - return new Promise(async resolve => { - if (nowTimes.getHours() >= 20) { - $.msg($.name, '', `京东账号${$.index} ${$.nickName || $.UserName}\n当前${$.name}:${$.totalScore}个\n可兑换无门槛红包:${$.totalScore / 1000}元\n点击弹窗即可去兑换(注:此红包具有时效性)`, { 'open-url': openUrl}); - } + return new Promise(async (resolve) => { + $.msg( + $.name, + '', + `京东账号${$.index} ${$.nickName || $.UserName}\n${(errorMsgLllegal > 0 && '当前有' + errorMsgLllegal + '个[非法请求]任务\n') || ''}当前${$.name}:${$.totalScore}个\n可兑换无门槛红包:${ + $.totalScore / 1000 + }元\n点击弹窗即可去兑换(注:此红包具有时效性)`, + { 'open-url': openUrl } + ); // 云端大于10元无门槛红包时进行通知推送 - // if ($.isNode() && $.totalScore >= 20000 && nowTimes.getHours() >= 20) await notify.sendNotify(`${$.name} - 京东账号${$.index} - ${$.nickName}`, `京东账号${$.index} ${$.nickName}\n当前${$.name}:${$.totalScore}个\n可兑换无门槛红包:${$.totalScore / 1000}元\n点击链接即可去兑换(注:此红包具有时效性)\n↓↓↓ \n\n ${openUrl} \n\n ↑↑↑`, { url: openUrl }) - if ($.isNode() && nowTimes.getHours() >= 20 && (process.env.DDQ_NOTIFY_CONTROL ? process.env.DDQ_NOTIFY_CONTROL === 'false' : !!1)) { - allMessage += `京东账号${$.index} ${$.nickName || $.UserName}\n当前${$.name}:${$.totalScore}个\n可兑换无门槛红包:${$.totalScore / 1000}元\n(京东APP->领券->左上角点点券.注:此红包具有时效性)${$.index !== cookiesArr.length ? '\n\n' : `\n\n↓↓↓ \n https://h5.m.jd.com/babelDiy/Zeus/41Lkp7DumXYCFmPYtU3LTcnTTXTX/index.html \n\n ↑↑↑\n\n点点券将在每年 6月21日和11月14日 00:00 清空,请注意兑换`}` + // if ($.isNode() && $.totalScore >= 20000 && nowTimes.getHours() >= 20) await notify.sendNotify(`${$.name} - 京东账号${$.index}`, `京东账号${$.index}\n当前${$.name}:${$.totalScore}个\n可兑换无门槛红包:${$.totalScore / 1000}元\n点击链接即可去兑换(注:此红包具有时效性)\n↓↓↓ \n\n ${openUrl} \n\n ↑↑↑`, { url: openUrl }) + if ($.isNode() && (nowTimes.getHours() >= 20 || errorMsgLllegal > 0) && (process.env.DDQ_NOTIFY_CONTROL ? process.env.DDQ_NOTIFY_CONTROL === 'false' : !!1)) { + allMessage += `京东账号${$.index} ${$.nickName || $.UserName}\n${(errorMsgLllegal > 0 && '当前有' + errorMsgLllegal + '个[非法请求]任务\n') || ''}当前${$.name}:${ + $.totalScore + }个\n可兑换无门槛红包:${$.totalScore / 1000}元\n(京东APP->领券->左上角点点券.注:此红包具有时效性)${ + $.index !== cookiesArr.length ? '\n\n' : `\n↓↓↓ \n\n "https://h5.m.jd.com/babelDiy/Zeus/41Lkp7DumXYCFmPYtU3LTcnTTXTX/index.html" \n\n ↑↑↑` + }`; } - resolve() - }) + resolve(); + }); } async function doTask() { for (let item of $.taskConfigVos) { if (item.taskStage === 0) { - console.log(`\n【${item.taskName}】 任务未领取,开始领取此任务`); - const res = await necklace_startTask(item.id); - await $.wait(2000); - if (res && res.rtn_code !== 0) continue - console.log(`【${item.taskName}】 任务领取成功,开始完成此任务`); - await $.wait(2000); - await reportTask(item); - await $.wait(2000); + console.log(`【${item.taskName}】 任务未领取,开始领取此任务`); + let res = await necklace_startTask(item.id); + if (res && res.rtn_code == 0) { + console.log(`【${item.taskName}】 任务领取成功,开始完成此任务`); + await $.wait(2000); + await reportTask(item); + await $.wait(2000); + } } else if (item.taskStage === 2) { console.log(`【${item.taskName}】 任务已做完,奖励未领取`); } else if (item.taskStage === 3) { @@ -142,27 +131,18 @@ async function doTask() { } } async function receiveBubbles() { - if ($.bubbles && $.bubbles.length) { + for (let item of $.bubbles) { console.log(`\n开始领取点点券`); - for (let item of $.bubbles) { - if (!item.id) continue; - await necklace_chargeScores(item.id); - await $.wait(2000) - } - } else { - console.log(`\n当前暂无可领取点点券`); + await necklace_chargeScores(item.id); + await $.wait(2000); } } async function sign() { - if ($.signInfo && $.signInfo.todayCurrentSceneSignStatus) { - if ($.signInfo.todayCurrentSceneSignStatus === 1) { - console.log(`\n开始每日签到`) - await necklace_sign(); - } else { - console.log(`已签到\n`) - } - } else { - console.log(`未获取到签到信息\n`) + if ($.signInfo && $.signInfo.todayCurrentSceneSignStatus === 1) { + console.log(`\n开始每日签到`); + await necklace_sign(); + } else if ($.signInfo) { + console.log(`当前${new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000).toLocaleString()}已签到`); } } async function reportTask(item = {}) { @@ -172,436 +152,358 @@ async function reportTask(item = {}) { if (item['taskType'] === 6 || item['taskType'] === 8 || item['taskType'] === 5 || item['taskType'] === 9) { //浏览精选活动任务 await necklace_getTask(item.id); - $.taskItems = $.taskItems.filter(value => !!value && value['status'] === 0); + $.taskItems = $.taskItems.filter((value) => !!value && value['status'] === 0); for (let vo of $.taskItems) { console.log(`浏览精选活动 【${vo['title']}】`); await necklace_startTask(item.id, 'necklace_reportTask', vo['id']); } } //首页浏览XX秒的任务 + // console.log(item) if (item['taskType'] === 3) await doAppTask('3', item.id); if (item['taskType'] === 4) await doAppTask('4', item.id); } - -/** - * 将数字取整为10的倍数 - * @param {Number} num 需要取整的值 - * @param {Boolean} ceil 是否向上取整 - * @param {Number} prec 需要用0占位的数量 - */ -function formatInt(num, prec = 1, ceil = false) { - const len = String(num).length; - if (len <= prec) { return num } - const mult = Math.pow(10, prec); - return ceil ? Math.ceil(num / mult) * mult : Math.floor(num / mult) * mult; -} //每日签到福利 function necklace_sign() { - return new Promise(async resolve => { - const body = await zooFaker.getBody({ 'cookie': cookie, 'action': 'sign', 'joyToken': joyToken, 'uuid': uuid }); - $.post(taskPostUrl("necklace_sign", body), async (err, resp, data) => { + return new Promise(async (resolve) => { + $.action = 'sign'; + const body = await ZooFaker.get_risk_result($); + // const body = { + // currentDate: $.lastRequestTime.replace(/:/g, "%3A"), + // } + $.post(taskPostUrl('necklace_sign', body), async (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.rtn_code === 0) { if (data.data.biz_code === 0) { - console.log(`签到成功,时间:${new Date(new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000).toLocaleString()}`) + console.log(`签到成功,时间:${new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000).toLocaleString()}`); // $.taskConfigVos = data.data.result.taskConfigVos; // $.exchangeGiftConfigs = data.data.result.exchangeGiftConfigs; } - } else if (data.rtn_code === 403) { - console.log(`每日签到失败:活动太火爆了,还是去买买买吧~\n`); + } else if (data.rtn_code === 403 || data.rtn_msg.indexOf('非法请求') > -1) { + console.log(`每日签到失败:${data.rtn_msg}\n`); + errorMsgLllegal += 1; + getUA(); } else { console.log(`每日签到失败:${JSON.stringify(data)}\n`); } } } } catch (e) { - $.logErr(e, resp) + $.logErr(e, resp); } finally { resolve(data); } - }) - }) + }); + }); } //兑换无门槛红包 function necklace_exchangeGift(scoreNums) { - return new Promise(async resolve => { - const body = await zooFaker.getBody({ 'cookie': cookie, 'action': 'exchangeGift', 'id': scoreNums, 'joyToken': joyToken, 'uuid': uuid }); - console.log(`\n使用${scoreNums}个点点券兑换${scoreNums / 1000}元无门槛红包`); - $.post(taskPostUrl("necklace_exchangeGift", body), async (err, resp, data) => { + return new Promise((resolve) => { + const body = { + scoreNums, + giftConfigId: 31, + currentDate: $.lastRequestTime.replace(/:/g, '%3A'), + }; + $.post(taskPostUrl('necklace_exchangeGift', body), async (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.rtn_code === 0) { if (data.data.biz_code === 0) { const { result } = data.data; message += `${result.redpacketTitle}:${result.redpacketAmount}元兑换成功\n`; - message += `红包有效期:${new Date(result.endTime + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000).toLocaleString('zh', {hour12: false})}`; - console.log(message) - if ($.isNode()) await notify.sendNotify($.name, message); + message += `红包有效期:${new Date(result.endTime + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000).toLocaleString('zh', { hour12: false })}`; + console.log(message); } - } else { - console.log(`兑换失败:${JSON.stringify(data)}`) } } } } catch (e) { - $.logErr(e, resp) + $.logErr(e, resp); } finally { resolve(data); } - }) - }) + }); + }); } //领取奖励 function necklace_chargeScores(bubleId) { - return new Promise(async resolve => { - const body = await zooFaker.getBody({ 'cookie': cookie, 'action': 'chargeScores', 'id': bubleId, 'giftConfigId': $.giftConfigId, 'joyToken': joyToken, 'uuid': uuid }); - $.post(taskPostUrl("necklace_chargeScores", body), async (err, resp, data) => { + return new Promise(async (resolve) => { + $.id = bubleId; + $.action = 'chargeScores'; + const body = await ZooFaker.get_risk_result($); + // const body = { + // bubleId, + // currentDate: $.lastRequestTime.replace(/:/g, "%3A"), + // } + $.post(taskPostUrl('necklace_chargeScores', body), async (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); } else { - // console.log(`领取点点券结果`, data); - if (safeGet(data)) { - data = JSON.parse(data); - if (data.rtn_code === 0) { - if (data.data.biz_code === 0) { - console.log(`点点券领取成功,获得${data.data.result.giftScoreNum},当前共有${data.data.result.totalScoreNum}\n`) - // $.giftScoreNum = data.data.result.giftScoreNum; - $.totalScore = data.data.result.totalScoreNum; - } - } else { - console.log(`领取点点券失败:${JSON.stringify(data)}\n`) - } - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(data); - } - }) - }) -} -function necklace_startTask(taskId, functionId = 'necklace_startTask', itemId = "") { - return new Promise(async resolve => { - let body = { - taskId, - currentDate: $.lastRequestTime.replace(/:/g, "%3A"), - } - if (functionId === 'necklace_startTask') { - body = await zooFaker.getBody({ 'id': taskId, 'cookie': cookie, 'action': 'startTask', 'joyToken': joyToken, 'uuid': uuid }) - } - if (itemId && functionId === 'necklace_reportTask') body['itemId'] = itemId; - $.post(taskPostUrl(functionId, body), async (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.rtn_code === 0) { if (data.data.biz_code === 0) { // $.taskConfigVos = data.data.result.taskConfigVos; // $.exchangeGiftConfigs = data.data.result.exchangeGiftConfigs; } - } else if (data.rtn_code === 403) { - console.log(`${functionId === 'necklace_startTask' ? '领取任务失败' : '做任务失败'}:活动太火爆了,还是去买买买吧~\n`); + } else if (data.rtn_code === 403 || data.rtn_msg.indexOf('非法请求') > -1) { + console.log(`领取奖励失败:${data.rtn_msg}\n`); + errorMsgLllegal += 1; + getUA(); } else { - console.log(`${functionId === 'necklace_startTask' ? '领取任务失败' : '做任务失败'}:${JSON.stringify(data)}\n`); + console.log(`领取奖励失败:${JSON.stringify(data)}\n`); } } } } catch (e) { - $.logErr(e, resp) + $.logErr(e, resp); } finally { resolve(data); } - }) - }) + }); + }); } -function necklace_getTask(taskId) { - return new Promise(resolve => { - const body = { +function necklace_startTask(taskId, functionId = 'necklace_startTask', itemId = '') { + return new Promise(async (resolve) => { + let body = { taskId, - currentDate: $.lastRequestTime.replace(/:/g, "%3A"), + currentDate: $.lastRequestTime.replace(/:/g, '%3A'), + }; + if (functionId == 'necklace_startTask') { + $.id = taskId; + $.action = 'startTask'; + body = await ZooFaker.get_risk_result($); + } else { + if (itemId) body['itemId'] = itemId; } - $.taskItems = []; - $.post(taskPostUrl("necklace_getTask", body), async (err, resp, data) => { + $.post(taskPostUrl(functionId, body), async (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); } else { - if (safeGet(data)) { + console.log(`${functionId === 'necklace_startTask' ? '领取任务结果' : '做任务结果'}:${data}`); + if (jd_helpers.safeGet(data)) { + data = JSON.parse(data); + if (data.rtn_code === 0) { + if (data.data.biz_code === 0) { + // $.taskConfigVos = data.data.result.taskConfigVos; + // $.exchangeGiftConfigs = data.data.result.exchangeGiftConfigs; + } + } else if (data.rtn_code === 403 || data.rtn_msg.indexOf('非法请求') > -1) { + console.log(`${functionId === 'necklace_startTask' ? '领取任务失败' : '做任务结果'}:${data.rtn_msg}\n`); + errorMsgLllegal += 1; + getUA(); + } else { + console.log(`${functionId === 'necklace_startTask' ? '领取任务失败' : '做任务结果'}:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} +function necklace_getTask(taskId) { + return new Promise((resolve) => { + const body = { + taskId, + currentDate: $.lastRequestTime.replace(/:/g, '%3A'), + }; + $.taskItems = []; + $.post(taskPostUrl('necklace_getTask', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.rtn_code === 0) { if (data.data.biz_code === 0) { $.taskItems = data.data.result && data.data.result.taskItems; } + } else if (data.rtn_code === 403 || data.rtn_msg.indexOf('非法请求') > -1) { + console.log(`浏览精选活动失败:${data.rtn_msg}\n`); + errorMsgLllegal += 1; + getUA(); + } else { + console.log(`浏览精选活动失败:${JSON.stringify(data)}\n`); } } } } catch (e) { - $.logErr(e, resp) + $.logErr(e, resp); } finally { resolve(); } - }) - }) + }); + }); } function necklace_homePage() { $.taskConfigVos = []; $.bubbles = []; $.signInfo = {}; - return new Promise(resolve => { + return new Promise((resolve) => { $.post(taskPostUrl('necklace_homePage'), async (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); } else { - if (safeGet(data)) { + if (jd_helpers.safeGet(data)) { data = JSON.parse(data); if (data.rtn_code === 0) { if (data.data.biz_code === 0) { $.taskConfigVos = data.data.result.taskConfigVos; - $.exchangeGiftConfigs = data.data.result.exchangeGiftConfigs || []; + $.exchangeGiftConfigs = data.data.result.exchangeGiftConfigs; $.lastRequestTime = data.data.result.lastRequestTime; $.bubbles = data.data.result.bubbles; - $.signInfo = data.data.result.signInfo || {}; + $.signInfo = data.data.result.signInfo; $.totalScore = data.data.result.totalScore; - const config = $.exchangeGiftConfigs.filter(item => item['giftType'] === 1); - if (config && config[0]) { - $.giftConfigId = config[0]['id']; - console.log(`点点券兑换无门槛红包ID为:${$.giftConfigId}`); - } } } } } } catch (e) { - $.logErr(e, resp) + $.logErr(e, resp); } finally { resolve(); } - }) - }) + }); + }); } async function doAppTask(type = '3', id) { - let functionId = `` - let body = `area=1_2953_54044_0&body=%7B%22pageClickKey%22%3A%22CouponCenter%22%2C%22shshshfpb%22%3A%22xMvLenI90G5fXNwdmMLrZ9zcRvSKKKrp3twx2gniQsgkav01VHSjwfaIlRQEYYJ4lUh7i6BmZXDIqLmrcpFgFPw%3D%3D%22%2C%22eid%22%3A%22eidI10a1812352s2f8fFJhaZRAaygJavMzzPuH%5C/HxpE9QzhNJ2Cf5aWxpC%2Bi2hshw7jujEFX%5C/JQtTGYOL2wlDjPaiPMK0KbiFPDza4sbsufvPStkf1tM%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22lat%22%3A%2240.18191448804161%22%2C%22globalLat%22%3A%2240.18993%22%2C%22lng%22%3A%22117.0065653831892%22%2C%22globalLng%22%3A%22117.010071%22%7D&build=167741&client=apple&clientVersion=10.0.8&d_brand=apple&d_model=iPhone10%2C2&eid=eidI10a1812352s2f8fFJhaZRAaygJavMzzPuH/HxpE9QzhNJ2Cf5aWxpC%2Bi2hshw7jujEFX/JQtTGYOL2wlDjPaiPMK0KbiFPDza4sbsufvPStkf1tM&isBackground=N&joycious=95&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=8548106a862f1fe7b4b84d3a16f7ffdcf47390de&osVersion=14.4.2&partner=apple&rfs=0000&scope=01&screen=1242%2A2208&sign=2c33f9e1230505e54632d18706b99d5c&st=1627058018278&sv=100&uemps=0-0&uts=0f31TVRjBStnWyWKh4kj%2BvuskvWGi54eyJH5cLJVT6QoOtzNpjyhH/ToU5X7LhKoleMMycwNk8t28%2BJhe0WWPZLkED4dnpAJv9MsudkLTd%2BKR8CJOEgC4PH/IFRT8y51lwtUBXR26fHwsk4aYqBSg0uiALvjv09TMPXJwxQIQ6gEdaaN2v%2B2PBvm1Obp5Nr0RMweFYy4mc1DamSX2mqF5g%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=a19cc6de09ae7d189d19659de2c95af6` - await getCcTaskList('getCcTaskList', body, type); - if (id === 229) { - body = `area=16_1315_3486_59648&body=%7B%22shshshfpb%22%3A%22dPH6zeJy%5C/HFogCIf0ZGFYqSDOShGwmpjVOPM%5C/ViCGC5fgBLL9JoI9mjgUt46vjSFeSkmU9DZLEjFaeFTWBj4Axg%3D%3D%22%2C%22globalLng%22%3A%22118.1423%22%2C%22globalLat%22%3A%2224.49335%22%2C%22monitorSource%22%3A%22ccgroup_ios_index_task%22%2C%22monitorRefer%22%3A%22%22%2C%22taskType%22%3A%222%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22pageClickKey%22%3A%22CouponCenter%22%2C%22lat%22%3A%2224.49441271645999%22%2C%22taskId%22%3A%22necklace_229%22%2C%22lng%22%3A%22118.1447713674174%22%2C%22eid%22%3A%22eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY%5C/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0%5C/dGmOJzfbLuyNo%22%7D&build=167707&client=apple&clientVersion=10.0.4&d_brand=apple&d_model=iPhone12%2C1&eid=eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0/dGmOJzfbLuyNo&isBackground=N&joycious=70&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=8a0d1837f803a12eb217fcf5e1f8769cbb3f898d&osVersion=14.3&partner=apple&rfs=0000&scope=11&screen=828%2A1792&sign=57453a76ffe9440d7961b05405fb4f13&st=1624535165882&sv=110&uemps=0-0&uts=0f31TVRjBStsz%2BC9YKuTtbGZPv/xrvQQdSUKvavez1nEbzXO4dLo%2BXEvUHAXAd0VPmZqkUNAf2yO/fBM7ImhPYnyBrotzw06Kk7qP6mG42fhA1t5BkW3ZGLaQgPtiuosYOHPMyHpg%2BJ9ZQBP4g3zsSFq2DUWsTOZbb85I4ThMCgqvymyLl48ebUg7aQTle9CfTJVWu5gx0YZ/ScklgN9Pg%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=796606e8e181aa5865ec20728a27238b` - } else if (id === 260) { - body = `area=16_1315_3486_59648&body=%7B%22shshshfpb%22%3A%22hRRVbEkLST%2BoqUB6fhir%2BfMoJS814u0eqASGoy8xq0vV1m9X9zKoAVYtaZjcO4UsQaWNyUrMVkZK5HBZ5aJo5zQ%3D%3D%22%2C%22globalLng%22%3A%22118.1423%22%2C%22globalLat%22%3A%2224.49335%22%2C%22monitorSource%22%3A%22ccgroup_ios_index_task%22%2C%22monitorRefer%22%3A%22%22%2C%22taskType%22%3A%222%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22pageClickKey%22%3A%22CouponCenter%22%2C%22lat%22%3A%2224.49435886957707%22%2C%22taskId%22%3A%22necklace_260%22%2C%22lng%22%3A%22118.144791637343%22%2C%22eid%22%3A%22eidI0faa812328s1AvGqBpW%2BSouJeXiZIORi9gLxq36FvXhk6SQPmtUFPglIaTIxGXnVzVAwHm%5C/QEwj14SR2vxSgH5tw4rWGdLJtHzSh8bloRLoX8mFY%22%7D&build=167568&client=apple&clientVersion=9.4.2&d_brand=apple&d_model=iPhone12%2C1&eid=eidI0faa812328s1AvGqBpW%2BSouJeXiZIORi9gLxq36FvXhk6SQPmtUFPglIaTIxGXnVzVAwHm/QEwj14SR2vxSgH5tw4rWGdLJtHzSh8bloRLoX8mFY&isBackground=N&joycious=51&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=ebf4ce8ecbb641054b00c00483b1cee85660d196&osVersion=14.3&partner=apple&rfs=0000&scope=11&screen=828%2A1792&sign=93249982ced7ec850c69de8b3e859dab&st=1624610691429&sv=110&uts=0f31TVRjBSsqndu4/jgUPz6uymy50MQJSTfJm3Nbyn7GqB7OtrJRuHoZMYV%2Bs0mkEZsSwjxzwlDPXLeepml5BnM5XPZQmPVomYBHlkSfLJWR5D1y0Ovgf60fpjMS2gXL5aLh50cNO3cmx2GvVTaTeYxvRUl%2BpaW7HXsuBhxJgA6pUzd01tBX9yiFih8xvToesg91Nl8KcWGYzXJ2/hWKXg%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=796606e8e181aa5865ec20728a27238b` - } else if (id === 267){ - body = `area=16_1315_3486_59648&body=%7B%22shshshfpb%22%3A%22dPH6zeJy%5C/HFogCIf0ZGFYqSDOShGwmpjVOPM%5C/ViCGC5fgBLL9JoI9mjgUt46vjSFeSkmU9DZLEjFaeFTWBj4Axg%3D%3D%22%2C%22globalLng%22%3A%22118.1423%22%2C%22globalLat%22%3A%2224.49335%22%2C%22monitorSource%22%3A%22ccgroup_ios_index_task%22%2C%22monitorRefer%22%3A%22%22%2C%22taskType%22%3A%222%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22pageClickKey%22%3A%22CouponCenter%22%2C%22lat%22%3A%2224.49437467152672%22%2C%22taskId%22%3A%22necklace_267%22%2C%22lng%22%3A%22118.1447981202065%22%2C%22eid%22%3A%22eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY%5C/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0%5C/dGmOJzfbLuyNo%22%7D&build=167707&client=apple&clientVersion=10.0.4&d_brand=apple&d_model=iPhone12%2C1&eid=eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0/dGmOJzfbLuyNo&isBackground=N&joycious=70&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=8a0d1837f803a12eb217fcf5e1f8769cbb3f898d&osVersion=14.3&partner=apple&rfs=0000&scope=11&screen=828%2A1792&sign=64e2361aa2a81068930c0c3325fd45ef&st=1624950832218&sv=111&uemps=0-0&uts=0f31TVRjBSsMGLCxYS3UIqlZl8dbXmnuZ4ayfhN43Ot1QaV41onc66czNm7agt5ZxuI/ZiEjTyLMd9C68bu6j250BhqFBz9aHYMZHRsZRt99av4Tsia77GOWxlDaSYf5ixm0pZhBRR4OQ%2BUBD6%2BPW4wCMOS5CO3/VI2cFHPfi%2BdGNinbfncIha86vGUGuGKiHSAf4rUFY4wrafX6Rksw7g%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=796606e8e181aa5865ec20728a27238b` - } else if (id === 273) { - body = `area=16_1315_3486_59648&body=%7B%22shshshfpb%22%3A%22dPH6zeJy%5C/HFogCIf0ZGFYqSDOShGwmpjVOPM%5C/ViCGC5fgBLL9JoI9mjgUt46vjSFeSkmU9DZLEjFaeFTWBj4Axg%3D%3D%22%2C%22globalLng%22%3A%22118.1423%22%2C%22globalLat%22%3A%2224.49335%22%2C%22monitorSource%22%3A%22ccgroup_ios_index_task%22%2C%22monitorRefer%22%3A%22%22%2C%22taskType%22%3A%222%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22pageClickKey%22%3A%22CouponCenter%22%2C%22lat%22%3A%2224.494383110087%22%2C%22taskId%22%3A%22necklace_273%22%2C%22lng%22%3A%22118.1447767134287%22%2C%22eid%22%3A%22eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY%5C/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0%5C/dGmOJzfbLuyNo%22%7D&build=167741&client=apple&clientVersion=10.0.8&d_brand=apple&d_model=iPhone12%2C1&eid=eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0/dGmOJzfbLuyNo&isBackground=N&joycious=71&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=8a0d1837f803a12eb217fcf5e1f8769cbb3f898d&osVersion=14.3&partner=apple&rfs=0000&scope=11&screen=828%2A1792&sign=c5f1773c699259a32596629ff17c77af&st=1627034890276&sv=101&uemps=0-0&uts=0f31TVRjBSuc9dw/M%2Bj%2BYjMPuoLDUbUPjPag%2BZ5OSbdXPyIGbVBxfPOWG8Z24KZdpryfyfoAUE5oYfYi1SuqGZ5atF1ARqzdFrPeo%2BZQVMmuwn/nYDGsLdj0Q9HcidhJXAaY1ti0j023Mv4f/ls51fJl5ypecBgw2sWtd8KiGQncYOe9GxCz6tlkHuSHDk3zN6hF%2BN0deRJOqJP8OOrJog%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=796606e8e181aa5865ec20728a27238b` - } else if (id === 281) { - body = `area=1_2953_54044_0&body=%7B%22shshshfpb%22%3A%22xMvLenI90G5fXNwdmMLrZ9zcRvSKKKrp3twx2gniQsgkav01VHSjwfaIlRQEYYJ4lUh7i6BmZXDIqLmrcpFgFPw%3D%3D%22%2C%22globalLng%22%3A%22117.010071%22%2C%22globalLat%22%3A%2240.18993%22%2C%22monitorSource%22%3A%22ccgroup_ios_index_task%22%2C%22monitorRefer%22%3A%22%22%2C%22taskType%22%3A%222%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22pageClickKey%22%3A%22CouponCenter%22%2C%22lat%22%3A%2240.18191448804161%22%2C%22taskId%22%3A%22necklace_281%22%2C%22lng%22%3A%22117.0065653831892%22%2C%22eid%22%3A%22eidI10a1812352s2f8fFJhaZRAaygJavMzzPuH%5C/HxpE9QzhNJ2Cf5aWxpC%2Bi2hshw7jujEFX%5C/JQtTGYOL2wlDjPaiPMK0KbiFPDza4sbsufvPStkf1tM%22%7D&build=167741&client=apple&clientVersion=10.0.8&d_brand=apple&d_model=iPhone10%2C2&eid=eidI10a1812352s2f8fFJhaZRAaygJavMzzPuH/HxpE9QzhNJ2Cf5aWxpC%2Bi2hshw7jujEFX/JQtTGYOL2wlDjPaiPMK0KbiFPDza4sbsufvPStkf1tM&isBackground=N&joycious=95&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=8548106a862f1fe7b4b84d3a16f7ffdcf47390de&osVersion=14.4.2&partner=apple&rfs=0000&scope=01&screen=1242%2A2208&sign=53be7e8df676c891c8b7ffedd695c188&st=1627058033720&sv=122&uemps=0-0&uts=0f31TVRjBStnWyWKh4kj%2BvuskvWGi54eyJH5cLJVT6QoOtzNpjyhH/ToU5X7LhKoleMMycwNk8t28%2BJhe0WWPZLkED4dnpAJv9MsudkLTd%2BKR8CJOEgC4PH/IFRT8y51lwtUBXR26fHwsk4aYqBSg0uiALvjv09TMPXJwxQIQ6gEdaaN2v%2B2PBvm1Obp5Nr0RMweFYy4mc1DamSX2mqF5g%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=a19cc6de09ae7d189d19659de2c95af6` + console.log(id); + let functionId = 'getCcTaskList'; + let body = + 'area=16_1315_3486_59648&body=%7B%22pageClickKey%22%3A%22CouponCenter%22%2C%22shshshfpb%22%3A%22dPH6zeJy%5C/HFogCIf0ZGFYqSDOShGwmpjVOPM%5C/ViCGC5fgBLL9JoI9mjgUt46vjSFeSkmU9DZLEjFaeFTWBj4Axg%3D%3D%22%2C%22eid%22%3A%22eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY%5C/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0%5C/dGmOJzfbLuyNo%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22lat%22%3A%2224.49441271645999%22%2C%22globalLat%22%3A%2224.49335%22%2C%22lng%22%3A%22118.1447713674174%22%2C%22globalLng%22%3A%22118.1423%22%7D&build=167707&client=apple&clientVersion=10.0.4&d_brand=apple&d_model=iPhone12%2C1&eid=eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0/dGmOJzfbLuyNo&isBackground=N&joycious=70&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=8a0d1837f803a12eb217fcf5e1f8769cbb3f898d&osVersion=14.3&partner=apple&rfs=0000&scope=11&screen=828%2A1792&sign=75afd018b5751e9ac4cba0b51b8adb3c&st=1624535152771&sv=101&uemps=0-0&uts=0f31TVRjBStsz%2BC9YKuTtbGZPv/xrvQQdSUKvavez1nEbzXO4dLo%2BXEvUHAXAd0VPmZqkUNAf2yO/fBM7ImhPYnyBrotzw06Kk7qP6mG42fhA1t5BkW3ZGLaQgPtiuosYOHPMyHpg%2BJ9ZQBP4g3zsSFq2DUWsTOZbb85I4ThMCgqvymyLl48ebUg7aQTle9CfTJVWu5gx0YZ/ScklgN9Pg%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=796606e8e181aa5865ec20728a27238b'; + await getCcTaskList(functionId, body, type); + if (Number(id) == 229) { + body = `area=16_1315_3486_59648&body=%7B%22shshshfpb%22%3A%22dPH6zeJy%5C/HFogCIf0ZGFYqSDOShGwmpjVOPM%5C/ViCGC5fgBLL9JoI9mjgUt46vjSFeSkmU9DZLEjFaeFTWBj4Axg%3D%3D%22%2C%22globalLng%22%3A%22118.1423%22%2C%22globalLat%22%3A%2224.49335%22%2C%22monitorSource%22%3A%22ccgroup_ios_index_task%22%2C%22monitorRefer%22%3A%22%22%2C%22taskType%22%3A%222%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22pageClickKey%22%3A%22CouponCenter%22%2C%22lat%22%3A%2224.49441271645999%22%2C%22taskId%22%3A%22necklace_229%22%2C%22lng%22%3A%22118.1447713674174%22%2C%22eid%22%3A%22eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY%5C/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0%5C/dGmOJzfbLuyNo%22%7D&build=167707&client=apple&clientVersion=10.0.4&d_brand=apple&d_model=iPhone12%2C1&eid=eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0/dGmOJzfbLuyNo&isBackground=N&joycious=70&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=8a0d1837f803a12eb217fcf5e1f8769cbb3f898d&osVersion=14.3&partner=apple&rfs=0000&scope=11&screen=828%2A1792&sign=57453a76ffe9440d7961b05405fb4f13&st=1624535165882&sv=110&uemps=0-0&uts=0f31TVRjBStsz%2BC9YKuTtbGZPv/xrvQQdSUKvavez1nEbzXO4dLo%2BXEvUHAXAd0VPmZqkUNAf2yO/fBM7ImhPYnyBrotzw06Kk7qP6mG42fhA1t5BkW3ZGLaQgPtiuosYOHPMyHpg%2BJ9ZQBP4g3zsSFq2DUWsTOZbb85I4ThMCgqvymyLl48ebUg7aQTle9CfTJVWu5gx0YZ/ScklgN9Pg%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=796606e8e181aa5865ec20728a27238b`; + } else if (Number(id) == 260) { + body = `area=16_1315_3486_59648&body=%7B%22shshshfpb%22%3A%22hRRVbEkLST%2BoqUB6fhir%2BfMoJS814u0eqASGoy8xq0vV1m9X9zKoAVYtaZjcO4UsQaWNyUrMVkZK5HBZ5aJo5zQ%3D%3D%22%2C%22globalLng%22%3A%22118.1423%22%2C%22globalLat%22%3A%2224.49335%22%2C%22monitorSource%22%3A%22ccgroup_ios_index_task%22%2C%22monitorRefer%22%3A%22%22%2C%22taskType%22%3A%222%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22pageClickKey%22%3A%22CouponCenter%22%2C%22lat%22%3A%2224.49435886957707%22%2C%22taskId%22%3A%22necklace_260%22%2C%22lng%22%3A%22118.144791637343%22%2C%22eid%22%3A%22eidI0faa812328s1AvGqBpW%2BSouJeXiZIORi9gLxq36FvXhk6SQPmtUFPglIaTIxGXnVzVAwHm%5C/QEwj14SR2vxSgH5tw4rWGdLJtHzSh8bloRLoX8mFY%22%7D&build=167568&client=apple&clientVersion=9.4.2&d_brand=apple&d_model=iPhone12%2C1&eid=eidI0faa812328s1AvGqBpW%2BSouJeXiZIORi9gLxq36FvXhk6SQPmtUFPglIaTIxGXnVzVAwHm/QEwj14SR2vxSgH5tw4rWGdLJtHzSh8bloRLoX8mFY&isBackground=N&joycious=51&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=ebf4ce8ecbb641054b00c00483b1cee85660d196&osVersion=14.3&partner=apple&rfs=0000&scope=11&screen=828%2A1792&sign=93249982ced7ec850c69de8b3e859dab&st=1624610691429&sv=110&uts=0f31TVRjBSsqndu4/jgUPz6uymy50MQJSTfJm3Nbyn7GqB7OtrJRuHoZMYV%2Bs0mkEZsSwjxzwlDPXLeepml5BnM5XPZQmPVomYBHlkSfLJWR5D1y0Ovgf60fpjMS2gXL5aLh50cNO3cmx2GvVTaTeYxvRUl%2BpaW7HXsuBhxJgA6pUzd01tBX9yiFih8xvToesg91Nl8KcWGYzXJ2/hWKXg%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=796606e8e181aa5865ec20728a27238b`; + } else if (Number(id) == 267) { + body = `area=16_1315_3486_59648&body=%7B%22shshshfpb%22%3A%22dPH6zeJy%5C/HFogCIf0ZGFYqSDOShGwmpjVOPM%5C/ViCGC5fgBLL9JoI9mjgUt46vjSFeSkmU9DZLEjFaeFTWBj4Axg%3D%3D%22%2C%22globalLng%22%3A%22118.1423%22%2C%22globalLat%22%3A%2224.49335%22%2C%22monitorSource%22%3A%22ccgroup_ios_index_task%22%2C%22monitorRefer%22%3A%22%22%2C%22taskType%22%3A%222%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22pageClickKey%22%3A%22CouponCenter%22%2C%22lat%22%3A%2224.49437467152672%22%2C%22taskId%22%3A%22necklace_267%22%2C%22lng%22%3A%22118.1447981202065%22%2C%22eid%22%3A%22eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY%5C/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0%5C/dGmOJzfbLuyNo%22%7D&build=167707&client=apple&clientVersion=10.0.4&d_brand=apple&d_model=iPhone12%2C1&eid=eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0/dGmOJzfbLuyNo&isBackground=N&joycious=70&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=8a0d1837f803a12eb217fcf5e1f8769cbb3f898d&osVersion=14.3&partner=apple&rfs=0000&scope=11&screen=828%2A1792&sign=64e2361aa2a81068930c0c3325fd45ef&st=1624950832218&sv=111&uemps=0-0&uts=0f31TVRjBSsMGLCxYS3UIqlZl8dbXmnuZ4ayfhN43Ot1QaV41onc66czNm7agt5ZxuI/ZiEjTyLMd9C68bu6j250BhqFBz9aHYMZHRsZRt99av4Tsia77GOWxlDaSYf5ixm0pZhBRR4OQ%2BUBD6%2BPW4wCMOS5CO3/VI2cFHPfi%2BdGNinbfncIha86vGUGuGKiHSAf4rUFY4wrafX6Rksw7g%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=796606e8e181aa5865ec20728a27238b`; + } else if (Number(id) == 273) { + body = `area=16_1315_3486_59648&body=%7B%22shshshfpb%22%3A%22dPH6zeJy%5C/HFogCIf0ZGFYqSDOShGwmpjVOPM%5C/ViCGC5fgBLL9JoI9mjgUt46vjSFeSkmU9DZLEjFaeFTWBj4Axg%3D%3D%22%2C%22globalLng%22%3A%22118.1423%22%2C%22globalLat%22%3A%2224.49335%22%2C%22monitorSource%22%3A%22ccgroup_ios_index_task%22%2C%22monitorRefer%22%3A%22%22%2C%22taskType%22%3A%222%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22pageClickKey%22%3A%22CouponCenter%22%2C%22lat%22%3A%2224.494383110087%22%2C%22taskId%22%3A%22necklace_273%22%2C%22lng%22%3A%22118.1447767134287%22%2C%22eid%22%3A%22eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY%5C/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0%5C/dGmOJzfbLuyNo%22%7D&build=167741&client=apple&clientVersion=10.0.8&d_brand=apple&d_model=iPhone12%2C1&eid=eidIeb54812323sf%2BAJEbj5LR0Kf6GUzM9DKXvgCReTpKTRyRwiuxY/uvRHBqebAAKCAXkJFzhWtPj5uoHxNeK3DjTumb%2BrfXOt1w0/dGmOJzfbLuyNo&isBackground=N&joycious=71&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=8a0d1837f803a12eb217fcf5e1f8769cbb3f898d&osVersion=14.3&partner=apple&rfs=0000&scope=11&screen=828%2A1792&sign=c5f1773c699259a32596629ff17c77af&st=1627034890276&sv=101&uemps=0-0&uts=0f31TVRjBSuc9dw/M%2Bj%2BYjMPuoLDUbUPjPag%2BZ5OSbdXPyIGbVBxfPOWG8Z24KZdpryfyfoAUE5oYfYi1SuqGZ5atF1ARqzdFrPeo%2BZQVMmuwn/nYDGsLdj0Q9HcidhJXAaY1ti0j023Mv4f/ls51fJl5ypecBgw2sWtd8KiGQncYOe9GxCz6tlkHuSHDk3zN6hF%2BN0deRJOqJP8OOrJog%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=796606e8e181aa5865ec20728a27238b`; + } else if (Number(id) == 281) { + body = `area=16_1332_42932_43102&body=%7B%22shshshfpb%22%3A%22hRRVbEkLST%2BoqUB6fhir%2BfMoJS814u0eqASGoy8xq0vV1m9X9zKoAVYtaZjcO4UsQaWNyUrMVkZK5HBZ5aJo5zQ%3D%3D%22%2C%22globalLng%22%3A%22118.541458%22%2C%22globalLat%22%3A%2224.609455%22%2C%22monitorSource%22%3A%22ccgroup_ios_index_task%22%2C%22monitorRefer%22%3A%22%22%2C%22taskType%22%3A%222%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22pageClickKey%22%3A%22CouponCenter%22%2C%22lat%22%3A%2224.49440185204448%22%2C%22taskId%22%3A%22necklace_281%22%2C%22lng%22%3A%22118.1448096802756%22%2C%22eid%22%3A%22eidI0faa812328s1AvGqBpW%2BSouJeXiZIORi9gLxq36FvXhk6SQPmtUFPglIaTIxGXnVzVAwHm%5C/QEwj14SR2vxSgH5tw4rWGdLJtHzSh8bloRLoX8mFY%22%7D&build=167741&client=apple&clientVersion=10.0.8&d_brand=apple&d_model=iPhone12%2C1&eid=eidI0faa812328s1AvGqBpW%2BSouJeXiZIORi9gLxq36FvXhk6SQPmtUFPglIaTIxGXnVzVAwHm/QEwj14SR2vxSgH5tw4rWGdLJtHzSh8bloRLoX8mFY&isBackground=N&joycious=51&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=ebf4ce8ecbb641054b00c00483b1cee85660d196&osVersion=14.3&partner=apple&rfs=0000&scope=11&screen=828%2A1792&sign=6bf1da7e3c218998ae5bd34a5b9b0d5c&st=1627088377408&sv=122&uemps=0-1&uts=0f31TVRjBSsqndu4/jgUPz6uymy50MQJPuQXd3Iw2YAKsnsGHXGtpI6DTtbcnaz7p7QeCmsoL2Cl/BMWopi0bEL/HBdhfK3iH/oMP6POfCzGYqGUp9HjUx/7lG%2BGpzuUJ%2B7ZrAQF4UMuG2/9epLOLCkpw4w6EgF4FqamAtXxTBCJZ82M%2Bkm26wJx996BKm7JCzdQfT6pJ0aFbovPOlp71A%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=796606e8e181aa5865ec20728a27238b`; } - console.log(`\n领券浏览任务:type:${type},id:${id}\n`); if (type === '4') { - functionId = 'reportSinkTask' - body = `&appid=XPMSGC2019&monitorSource=&uuid=16245525345801334814959&body=%7B%22platformType%22%3A%221%22%2C%22taskId%22%3A%22necklace_${id}%22%7D&client=m&clientVersion=4.6.0&area=16_1315_1316_59175&geo=%5Bobject%20Object%5D` - console.log('需等待30秒') + // https://h5.m.jd.com/babelDiy/Zeus/2fDwtAwAQX1PJh51f3UXzLhKiD86/index.html + console.log('需等待30秒'); + functionId = 'reportSinkTask'; + body = `&appid=XPMSGC2019&monitorSource=&uuid=16245525345801334814959&body=%7B%22platformType%22%3A%221%22%2C%22taskId%22%3A%22necklace_${id}%22%7D&client=m&clientVersion=4.6.0&area=16_1315_1316_59175&geo=%5Bobject%20Object%5D`; await $.wait(15000); } else { - functionId = 'reportCcTask' - console.log('需等待15秒') + // https://h5.m.jd.com/babelDiy/Zeus/3TcqzbLKXwyiGDzrn5nKV7sSEC8N/index.html + console.log('需等待15秒'); + functionId = 'reportCcTask'; } - await $.wait(15500); + await $.wait(1600); await getCcTaskList(functionId, body, type); } function getCcTaskList(functionId, body, type = '3') { let url = `https://api.m.jd.com/client.action?functionId=${functionId}`; - if (functionId === 'reportSinkTask') { - url += body - body = '' - } - return new Promise(resolve => { + return new Promise((resolve) => { + if (functionId === 'getCcTaskList') { + } + if (functionId === 'reportCcTask') { + } + if (functionId === 'reportSinkTask') { + url += body; + body = ''; + } + // if (type === '4' && functionId === 'reportCcTask'){ + // url = `https://api.m.jd.com/client.action?functionId=${functionId}&body=${escape(JSON.stringify(body))}&uuid=8888888&client=apple&clientVersion=9.4.1&st=1622193986049&sign=f5abd9fd7b9b8abaa25b34088f9e8a54&sv=102` + // body = `body=${escape(JSON.stringify(body))}` + // } const options = { url, body, headers: { - "Accept": "application/json, text/plain, */*", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Content-Length": "63", - "Content-Type": "application/x-www-form-urlencoded", - "Host": "api.m.jd.com", - "Origin": "https://h5.m.jd.com", - "Cookie": cookie, - "Referer": "https://h5.m.jd.com/babelDiy/Zeus/4ZK4ZpvoSreRB92RRo8bpJAQNoTq/index.html", - "User-Agent": UA, - } - } - $.post((options), async (err, resp, data) => { + Accept: 'application/json, text/plain, */*', + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-cn', + Connection: 'keep-alive', + 'Content-Length': '63', + 'Content-Type': 'application/x-www-form-urlencoded', + Host: 'api.m.jd.com', + Origin: 'https://h5.m.jd.com', + Cookie: cookie + `joyytoken=${'50082' + $.joyytoken};`, + Referer: 'https://h5.m.jd.com/babelDiy/Zeus/4ZK4ZpvoSreRB92RRo8bpJAQNoTq/index.html', + 'User-Agent': $.UA, + }, + }; + $.post(options, async (err, resp, data) => { try { if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); } else { - if (safeGet(data)) { - if (type === '3' && functionId === 'reportCcTask') console.log(`点击首页领券图标(进入领券中心浏览15s)任务:${data}`) - if (type === '4' && functionId === 'reportSinkTask') console.log(`点击“券后9.9”任务:${data}`) - data = JSON.parse(data); - //异常情况:{"code":"600","echo":"signature verification failed"} - if (data['code'] === '600' && !hasSend) { - hasSend = true; - $.msg( - $.name, - '', - `${type === '3' ? '点击首页领券图标(进入领券中心浏览15s)任务' : '点击“券后9.9”任务'}ID已变更\n请联系作者等待更新` - ) - if ($.isNode()) await notify.sendNotify( - $.name, - `${type === '3' ? '点击首页领券图标(进入领券中心浏览15s)任务' : '点击“券后9.9”任务'}ID已变更\n请联系作者等待更新` - ) - } + if (jd_helpers.safeGet(data)) { + if (type === '3' && functionId === 'reportCcTask') console.log(`点击首页领券图标(进入领券中心浏览15s)任务:${data}`); + if (type === '4' && functionId === 'reportSinkTask') console.log(`点击“券后9.9”任务:${data}`); + // data = JSON.parse(data); } } } catch (e) { - $.logErr(e, resp) + $.logErr(e, resp); } finally { resolve(); } - }) - }) + }); + }); } function taskPostUrl(function_id, body = {}) { - const time = new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000; + const time = new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000; return { - url: `${JD_API_HOST}?functionId=${function_id}&appid=coupon-necklace&loginType=2&client=coupon-necklace&t=${time}&body=${escape(JSON.stringify(body))}&uuid=${uuid}`, - // url: `${JD_API_HOST}?functionId=${function_id}&appid=jd_mp_h5&loginType=2&client=jd_mp_h5&t=${time}&body=${escape(JSON.stringify(body))}`, + url: `${JD_API_HOST}?functionId=${function_id}&appid=coupon-necklace&loginType=2&client=coupon-necklace&t=${Date.now()}`, + body: `body=${escape(JSON.stringify(body))}`, headers: { - "accept": "*/*", - "accept-encoding": "gzip, deflate, br", - "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", - "content-length": "0", - "cookie": cookie, - "origin": "https://h5.m.jd.com", - "referer": "https://h5.m.jd.com/", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-site", - "user-agent": UA - } - } + Host: 'api.m.jd.com', + accept: 'application/json, text/plain, */*', + 'content-type': 'application/x-www-form-urlencoded', + origin: 'https://h5.m.jd.com', + 'accept-language': 'zh-cn', + 'User-Agent': $.UA, + referer: 'https://h5.m.jd.com/', + cookie: cookie + `joyytoken=${'50082' + $.joyytoken};`, + }, + }; } -function randomString() { - return Math.random().toString(16).slice(2, 10) + - Math.random().toString(16).slice(2, 10) + - Math.random().toString(16).slice(2, 10) + - Math.random().toString(16).slice(2, 10) + - Math.random().toString(16).slice(2, 10) + +function getUA() { + $.UA = `jdapp;iPhone;10.0.10;14.3;${randomString( + 40 + )};network/wifi;model/iPhone12,1;addressid/4199175193;appBuild/167741;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`; + $.UUID = ($.UA.split(';') && $.UA.split(';')[4]) || ''; + $.joyytoken = ''; } -function getToken(timeout = 0){ - return new Promise((resolve) => { - setTimeout( ()=>{ - let url = { - url : `https://bh.m.jd.com/gettoken`, - headers : { - 'Content-Type' : `text/plain;charset=UTF-8` - }, - body : `content={"appname":"50082","whwswswws":"","jdkey":"","body":{"platform":"1"}}` - } - $.post(url, async (err, resp, data) => { - try { - data = JSON.parse(data); - joyToken = data.joyytoken; - } catch (e) { - $.logErr(e, resp); - } finally { - resolve() - } - }) - },timeout) - }) -} -function TotalBean() { - return new Promise(async resolve => { - const options = { - "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": cookie, - "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") - } - } - $.post(options, (err, resp, data) => { - try { - if (err) { - console.log(`${JSON.stringify(err)}`) - console.log(`${$.name} API请求失败,请检查网路重试`) - } else { - if (data) { - data = JSON.parse(data); - if (data['retcode'] === 13) { - $.isLogin = false; //cookie过期 - return - } - if (data['retcode'] === 0) { - $.nickName = (data['base'] && data['base'].nickname) || $.UserName; - } else { - $.nickName = $.UserName - } - } else { - console.log(`京东服务器返回空数据`) - } - } - } catch (e) { - $.logErr(e, resp) - } finally { - resolve(); - } - }) - }) -} -function safeGet(data) { - try { - if (typeof JSON.parse(data) == "object") { - return true; - } - } catch (e) { - console.log(e); - console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); - return false; - } -} -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') - return []; - } - } -} -// prettier-ignore -function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file +function randomString(e) { + e = e || 32; + let t = 'abcdef0123456789', + a = t.length, + n = ''; + for (i = 0; i < e; i++) n += t.charAt(Math.floor(Math.random() * a)); + return n; +} \ No newline at end of file diff --git a/jd_shop_sign.js b/jd_shop_sign.js new file mode 100755 index 0000000..108ab7c --- /dev/null +++ b/jd_shop_sign.js @@ -0,0 +1,339 @@ +/* +店铺签到,各类店铺签到,有新的店铺直接添加token即可 +*/ +const jd_helpers = require('./utils/JDHelpers.js'); +const jd_env = require('./utils/JDEnv.js'); +const $ = jd_env.env('店铺签到'); + +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = '', + message; +const JD_API_HOST = 'https://api.m.jd.com/api?appid=interCenter_shopSign'; + +let activityId = ''; +let vender = ''; +let num = 0; +let shopname = ''; +const token = [ + '020E4A5B75AE493CDF3020628CA72FDE', // 3天,10豆;5天,20豆;7天,35豆; + 'ACD7EB42FB65AF1A447AEB329235DE04', // 每日,3豆;15天,100豆; + '5BB2C6C6332AD842011240152F7550EB', // 每日,6豆;7天,100豆; + '6C6B2702DDAAEDEBE5E68E41B6264CF6', // 每日,5豆;7天,200积分; + 'CDC56C42F64CA34677E5894F28AF4871', // 每日,100分;1天,200分、2豆;2天,1000分、25-3券; + '2075567CC6ED0F30EAFFCF901F6C486D', // 每日,2豆;10天,100豆; + 'CAF5BA5BF6B8317E282FCBF9F5C00B0E', // 每日,2豆;5天,10豆;10天,20豆;15天,25豆; + 'A133DE5D8D1A5A612F49CBE1D9BCE7AA', // 每日,2豆;20天,5元e卡; + 'E9E4861F0B12E5E483C949C818E3EAB8', // 每日,1豆;10天,20豆;20天,50豆; + '83E9B38C310EB5D26657977EF8FECA0F', // 7天,20积分;15天,30豆; + '7DE1E4B12326576BF7C5D347CC909451', // 每日,10豆;7天,100豆; + '513B43DB672C8C7B0D975DB75328A131', // 每日,5豆;26天,88豆; + '9BABD41E5674FD5791963D5366BEC634', // 每日,1豆;5天,10豆;21天,100豆; + 'EFFD0BF4069A8B6882A55FB07ACDA60F', // 10天,30豆;20天,60豆;30天,100豆; +]; +//IOS等用户直接用NobyDa的jd cookie + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]); + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + let cookiesData = $.getdata('CookiesJD') || '[]'; + cookiesData = jd_helpers.jsonParse(cookiesData); + cookiesArr = cookiesData.map((item) => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter((item) => item !== '' && item !== null && item !== undefined); +} + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { 'open-url': 'https://bean.m.jd.com/bean/signIndex.action' }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + 'open-url': 'https://bean.m.jd.com/bean/signIndex.action', + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue; + } + await dpqd(); + if (i < 1) { + await showMsg(); + } + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, ''); + }) + .finally(() => { + $.done(); + }); + +//开始店铺签到 +async function dpqd() { + for (var j = 0; j < token.length; j++) { + num = j + 1; + if (token[j] == '') { + continue; + } + await getvenderId(token[j]); + if (vender == '') { + continue; + } + await getvenderName(vender); + await getActivityInfo(token[j], vender); + await signCollectGift(token[j], vender, activityId); + await taskUrl(token[j], vender); + } +} + +//获取店铺ID +function getvenderId(token) { + return new Promise((resolve) => { + const options = { + url: `https://api.m.jd.com/api?appid=interCenter_shopSign&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_getActivityInfo&body={%22token%22:%22${token}%22,%22venderId%22:%22%22}&jsonp=jsonp1000`, + headers: { + accept: '*/*', + 'accept-encoding': 'gzip, deflate, br', + 'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', + cookie: cookie, + referer: 'https://h5.m.jd.com/', + 'User-Agent': `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40`, + }, + }; + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`); + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(/{(.*)}/g.exec(data)[0]); + if (data.code == 402) { + vender = ''; + console.log(`第` + num + `个店铺签到活动已失效`); + message += `第` + num + `个店铺签到活动已失效\n`; + } else { + vender = data.data.venderId; + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} + +//获取店铺名称 +function getvenderName(venderId) { + return new Promise((resolve) => { + const options = { + url: `https://wq.jd.com/mshop/QueryShopMemberInfoJson?venderId=${venderId}`, + headers: { + accept: '*/*', + 'accept-encoding': 'gzip, deflate, br', + 'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', + cookie: cookie, + 'User-Agent': `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40`, + }, + }; + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`); + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(data); + shopName = data.shopName; + console.log(`【` + shopName + `】`); + message += `【` + shopName + `】`; + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} + +//获取店铺活动信息 +function getActivityInfo(token, venderId) { + return new Promise((resolve) => { + const options = { + url: `${JD_API_HOST}&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_getActivityInfo&body={%22token%22:%22${token}%22,%22venderId%22:${venderId}}&jsonp=jsonp1005`, + headers: { + accept: 'accept', + 'accept-encoding': 'gzip, deflate', + 'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', + cookie: cookie, + referer: `https://h5.m.jd.com/babelDiy/Zeus/2PAAf74aG3D61qvfKUM5dxUssJQ9/index.html?token=${token}&sceneval=2&jxsid=16178634353215523301&cu=true&utm_source=kong&utm_medium=jingfen&utm_campaign=t_2009753434_&utm_term=fa3f8f38c56f44e2b4bfc2f37bce9713`, + 'User-Agent': `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40`, + }, + }; + $.get(options, (err, resp, data) => { + try { + if (err) { + // console.log(data) + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`); + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(/{(.*)}/g.exec(data)[0]); + activityId = data.data.id; + //console.log(data) + let mes = ''; + for (let i = 0; i < data.data.continuePrizeRuleList.length; i++) { + const level = data.data.continuePrizeRuleList[i].level; + const discount = data.data.continuePrizeRuleList[i].prizeList[0].discount; + mes += '签到' + level + '天,获得' + discount + '豆'; + } + //console.log(message+mes+'\n') + //message += mes+'\n' + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} + +//店铺签到 +function signCollectGift(token, venderId, activitytemp) { + return new Promise((resolve) => { + const options = { + url: `${JD_API_HOST}&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_signCollectGift&body={%22token%22:%22${token}%22,%22venderId%22:688200,%22activityId%22:${activitytemp},%22type%22:56,%22actionType%22:7}&jsonp=jsonp1004`, + headers: { + accept: 'accept', + 'accept-encoding': 'gzip, deflate', + 'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', + cookie: cookie, + referer: `https://h5.m.jd.com/babelDiy/Zeus/2PAAf74aG3D61qvfKUM5dxUssJQ9/index.html?token=${token}&sceneval=2&jxsid=16178634353215523301&cu=true&utm_source=kong&utm_medium=jingfen&utm_campaign=t_2009753434_&utm_term=fa3f8f38c56f44e2b4bfc2f37bce9713`, + 'User-Agent': `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40`, + }, + }; + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`); + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(/{(.*)}/g.exec(data)[0]); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} + +//店铺获取签到信息 +function taskUrl(token, venderId) { + return new Promise((resolve) => { + const options = { + url: `${JD_API_HOST}&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_getSignRecord&body={%22token%22:%22${token}%22,%22venderId%22:${venderId},%22activityId%22:${activityId},%22type%22:56}&jsonp=jsonp1006`, + headers: { + accept: 'application/json', + 'accept-encoding': 'gzip, deflate, br', + 'accept-language': 'zh-CN,zh;q=0.9', + cookie: cookie, + referer: `https://h5.m.jd.com/`, + 'user-agent': `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40`, + }, + }; + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`); + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(/{(.*)}/g.exec(data)[0]); + console.log(`已签到:` + data.data.days + `天`); + message += `已签到:` + data.data.days + `天\n`; + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} + +async function showMsg() { + if ($.isNode() && !process.env.SHOP_SIGN_NOTIFY_CONTROL) { + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName}\n${message}`); + } +} + +function TotalBean() { + return new Promise(async (resolve) => { + const options = { + url: `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + headers: { + Accept: 'application/json,text/plain, */*', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-cn', + Connection: 'keep-alive', + Cookie: cookie, + Referer: 'https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2', + 'User-Agent': `jdapp;android;9.3.5;10;3353234393134326-3673735303632613;network/wifi;model/MI 8;addressid/138719729;aid/3524914bc77506b1;oaid/274aeb3d01b03a22;osVer/29;appBuild/86390;psn/Mp0dlaZf4czQtfPNMEfpcYU9S/f2Vv4y|2255;psq/1;adk/;ads/;pap/JA2015_311210|9.3.5|ANDROID 10;osv/10;pv/2039.1;jdv/0|androidapp|t_335139774|appshare|QQfriends|1611211482018|1611211495;ref/com.jingdong.app.mall.home.JDHomeFragment;partner/jingdong;apprpd/Home_Main;eufv/1;jdSupportDarkMode/0;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36`, + }, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return; + } + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + console.log(`京东服务器返回空数据`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} \ No newline at end of file diff --git a/jd_sign.js b/jd_sign.js index 62e4e37..3a675d9 100755 --- a/jd_sign.js +++ b/jd_sign.js @@ -1,8 +1,7 @@ -// @grant require -/* +/* cron 14 10 * * * https://raw.githubusercontent.com/smiek2221/scripts/master/jd_sign_graphics.js 只支持nodejs环境 -需要安装依赖 +需要安装依赖 npm i png-js 或者 npm i png-js -S 如果 read ECONNRESET 错误 可以试试 @@ -10,69 +9,115 @@ npm i png-js 或者 npm i png-js -S 修改域名 https://jdjoy.jd.com 可以改成ip https://49.7.27.236 */ -const validator = require('./JDJRValidator_Smiek.js'); -const Faker=require('./sign_graphics_validate.js') - -const $ = new Env('京东签到图形验证'); -const notify = $.isNode() ? require('./sendNotify') : ''; +const jd_env = require("./utils/JDEnv.js"); +const $ = jd_env.env("京东签到图形验证"); +const validator = require("./utils/JDJRValidator_Pure.js"); +const Faker = require("./utils/sign_graphics_validate.js"); +const notify = $.isNode() ? require("./sendNotify") : ""; //Node.js用户请在jdCookie.js处填写京东ck; -const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; -let cookiesArr = [], cookie = ''; +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +let cookiesArr = [], + cookie = ""; if ($.isNode()) { Object.keys(jdCookieNode).forEach((item) => { - cookiesArr.push(jdCookieNode[item]) - }) - if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + cookiesArr.push(jdCookieNode[item]); + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; } else { - cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...jsonParse($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); } -let message = '', subTitle = '', beanNum = 0; -let fp = '' -let eid = '' -let UA = "" -let signFlag = false -let successNum = 0 -let errorNum = 0 -let JD_API_HOST = 'https://jdjoy.jd.com' -if(process.env.JOY_HOST){ - JD_API_HOST = process.env.JOY_HOST +let message = "", + subTitle = "", + beanNum = 0; +let fp = ""; +let eid = ""; +let UA = ""; +let signFlag = false; +let successNum = 0; +let errorNum = 0; +let JD_API_HOST = "https://jdjoy.jd.com"; +$.invokeKey = "ztmFUCxcPMNyUq0P" +if (process.env.JOY_HOST) { + JD_API_HOST = process.env.JOY_HOST; } const turnTableId = [ - { "name": "京东商城-内衣", "id": 1071, "url": "https://prodev.m.jd.com/mall/active/4PgpL1xqPSW1sVXCJ3xopDbB1f69/index.html" }, - { "name": "京东商城-健康", "id": 527, "url": "https://prodev.m.jd.com/mall/active/w2oeK5yLdHqHvwef7SMMy4PL8LF/index.html" }, - { "name": "京东商城-清洁", "id": 446, "url": "https://prodev.m.jd.com/mall/active/2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6/index.html" }, - { "name": "京东商城-个护", "id": 336, "url": "https://prodev.m.jd.com/mall/active/2tZssTgnQsiUqhmg5ooLSHY9XSeN/index.html" }, - { "name": "京东商城-童装", "id": 511, "url": "https://prodev.m.jd.com/mall/active/3Af6mZNcf5m795T8dtDVfDwWVNhJ/index.html" }, - { "name": "京东商城-母婴", "id": 458, "url": "https://prodev.m.jd.com/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html" }, - { "name": "京东商城-数码", "id": 347, "url": "https://prodev.m.jd.com/mall/active/4SWjnZSCTHPYjE5T7j35rxxuMTb6/index.html" }, - { "name": "京东超市", "id": 1204, "url": "https://pro.m.jd.com/mall/active/QPwDgLSops2bcsYqQ57hENGrjgj/index.html" }, -] -$.UA = $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "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") -$.get = validator.injectToRequest($.get.bind($), 'channelSign', $.UA) -$.post = validator.injectToRequest($.post.bind($), 'channelSign', $.UA) + { + name: "京东商城-内衣", + id: 1071, + url: "https://prodev.m.jd.com/mall/active/4PgpL1xqPSW1sVXCJ3xopDbB1f69/index.html", + }, + { + name: "京东商城-健康", + id: 527, + url: "https://prodev.m.jd.com/mall/active/w2oeK5yLdHqHvwef7SMMy4PL8LF/index.html", + }, + { + name: "京东商城-清洁", + id: 446, + url: "https://prodev.m.jd.com/mall/active/2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6/index.html", + }, + { + name: "京东商城-个护", + id: 336, + url: "https://prodev.m.jd.com/mall/active/2tZssTgnQsiUqhmg5ooLSHY9XSeN/index.html", + }, + { + name: "京东商城-童装", + id: 511, + url: "https://prodev.m.jd.com/mall/active/3Af6mZNcf5m795T8dtDVfDwWVNhJ/index.html", + }, + { + name: "京东商城-母婴", + id: 458, + url: "https://prodev.m.jd.com/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html", + }, + { + name: "京东商城-数码", + id: 347, + url: "https://prodev.m.jd.com/mall/active/4SWjnZSCTHPYjE5T7j35rxxuMTb6/index.html", + }, + { + name: "京东超市", + id: 1204, + url: "https://pro.m.jd.com/mall/active/QPwDgLSops2bcsYqQ57hENGrjgj/index.html", + }, +]; +$.UA = $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : require("./USER_AGENTS").USER_AGENT + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "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"; +$.get = validator.injectToRequest2($.get.bind($), "channelSign", $.UA); +$.post = validator.injectToRequest2($.post.bind($), "channelSign", $.UA); !(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" }); + $.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/bean/signIndex.action", { + "open-url": "https://bean.m.jd.com/bean/signIndex.action", + }); return; } for (let i = 0; i < cookiesArr.length; i++) { if (cookiesArr[i]) { cookie = cookiesArr[i]; - $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]); $.index = i + 1; - $.nickName = ''; + $.nickName = ""; console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); - beanNum = 0 - successNum = 0 - errorNum = 0 - subTitle = ''; - await signRun() - const UTC8 = new Date().getTime() + new Date().getTimezoneOffset()*60000 + 28800000; - $.beanSignTime = new Date(UTC8).toLocaleString('zh', {hour12: false}); - let msg = `【京东账号${$.index}】${$.nickName || $.UserName}\n【签到时间】: ${$.beanSignTime}\n【签到概览】: 成功${successNum}个, 失败${errorNum}个\n【签到奖励】: ${beanNum}京豆\n` - message += msg + '\n' + beanNum = 0; + successNum = 0; + errorNum = 0; + subTitle = ""; + await signRun(); + const UTC8 = new Date().getTime() + new Date().getTimezoneOffset() * 60000 + 28800000; + $.beanSignTime = new Date(UTC8).toLocaleString("zh", { + hour12: false, + }); + let msg = `【京东账号${$.index}】${$.nickName || $.UserName}\n【签到时间】: ${$.beanSignTime}\n【签到概览】: 成功${successNum}个, 失败${errorNum}个\n【签到奖励】: ${beanNum}京豆\n`; + message += msg + "\n"; $.msg($.name, msg); // break } @@ -80,11 +125,11 @@ $.post = validator.injectToRequest($.post.bind($), 'channelSign', $.UA) await showMsg(); })() .catch((e) => { - $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); }) .finally(() => { $.done(); - }) + }); async function showMsg() { $.msg($.name, `【签到数量】: ${turnTableId.length}个\n` + subTitle + message); @@ -92,44 +137,44 @@ async function showMsg() { } async function signRun() { for (let i in turnTableId) { - signFlag = false - await Login(i) - if(signFlag){ + signFlag = false; + await Login(i); + if (signFlag) { successNum++; - }else{ + } else { errorNum++; } } } function Sign(i) { - return new Promise(resolve => { + return new Promise((resolve) => { $.post(tasPostkUrl(turnTableId[i].id), (err, resp, data) => { try { if (err) { - console.log(`\n${turnTableId[i].name} 签到: API查询请求失败 ‼️‼️`) + console.log(`\n${turnTableId[i].name} 签到: API查询请求失败 ‼️‼️`); throw new Error(err); } else { if (data) { // console.log(data) data = JSON.parse(data); if (data.success && data.data) { - data = data.data - if (Number(data.jdBeanQuantity) > 0) beanNum += Number(data.jdBeanQuantity) + data = data.data; + if (Number(data.jdBeanQuantity) > 0) beanNum += Number(data.jdBeanQuantity); signFlag = true; - console.log(`${turnTableId[i].name} 签到成功:获得 ${Number(data.jdBeanQuantity)}京豆`) + console.log(`${turnTableId[i].name} 签到成功:获得 ${Number(data.jdBeanQuantity)}京豆`); } else { if (data.errorMessage) { - if(data.errorMessage.indexOf('已签到') > -1 || data.errorMessage.indexOf('今天已经签到') > -1){ + if (data.errorMessage.indexOf("已签到") > -1 || data.errorMessage.indexOf("今天已经签到") > -1) { signFlag = true; } - console.log(`${turnTableId[i].name} ${data.errorMessage}`) + console.log(`${turnTableId[i].name} ${data.errorMessage}`); } else { - console.log(`${turnTableId[i].name} ${JSON.stringify(data)}`) + console.log(`${turnTableId[i].name} ${JSON.stringify(data)}`); } } } else { - console.log(`京豆api返回数据为空,请检查自身原因`) + console.log(`京豆api返回数据为空,请检查自身原因`); } } } catch (e) { @@ -137,53 +182,54 @@ function Sign(i) { } finally { resolve(data); } - }) - }) + }); + }); } + function Login(i) { - return new Promise(resolve => { + return new Promise((resolve) => { $.get(taskUrl(turnTableId[i].id), async (err, resp, data) => { try { if (err) { - console.log(`\n${turnTableId[i].name} 登录: API查询请求失败 ‼️‼️`) - console.log(`${JSON.stringify(err)}`) + console.log(`\n${turnTableId[i].name} 登录: API查询请求失败 ‼️‼️`); + console.log(`${JSON.stringify(err)}`); } else { if (data) { // console.log(data) data = JSON.parse(data); if (data.success && data.data) { - data = data.data + data = data.data; if (!data.hasSign) { - let arr = await Faker.getBody(UA,turnTableId[i].url) - fp = arr.fp - await getEid(arr) - await Sign(i) + let arr = await Faker.getBody(UA, turnTableId[i].url); + fp = arr.fp; + await getEid(arr); + await Sign(i); } else { - if(data.records && data.records[0]){ - for(let i in data.records){ - let item = data.records[i] - if((item.hasSign == false && item.index != 1) || i == data.records.length-1){ - if(item.hasSign == false) i = i-1 - beanNum += Number(data.records[i].beanQuantity) + if (data.records && data.records[0]) { + for (let i in data.records) { + let item = data.records[i]; + if ((item.hasSign == false && item.index != 1) || i == data.records.length - 1) { + if (item.hasSign == false) i = i - 1; + beanNum += Number(data.records[i].beanQuantity); break; } } } signFlag = true; - console.log(`${turnTableId[i].name} 已签到`) + console.log(`${turnTableId[i].name} 已签到`); } } else { if (data.errorMessage) { - if(data.errorMessage.indexOf('已签到') > -1 || data.errorMessage.indexOf('今天已经签到') > -1){ + if (data.errorMessage.indexOf("已签到") > -1 || data.errorMessage.indexOf("今天已经签到") > -1) { signFlag = true; } - console.log(`${turnTableId[i].name} ${data.errorMessage}`) + console.log(`${turnTableId[i].name} ${data.errorMessage}`); } else { - console.log(`${turnTableId[i].name} ${JSON.stringify(data)}`) + console.log(`${turnTableId[i].name} ${JSON.stringify(data)}`); } } } else { - console.log(`京豆api返回数据为空,请检查自身原因`) + console.log(`京豆api返回数据为空,请检查自身原因`); } } } catch (e) { @@ -191,32 +237,32 @@ function Login(i) { } finally { resolve(data); } - }) - }) + }); + }); } function getEid(arr) { - return new Promise(resolve => { + return new Promise((resolve) => { const options = { url: `https://gia.jd.com/fcf.html?a=${arr.a}`, body: `d=${arr.d}`, headers: { "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", - "User-Agent": $.UA - } - } + "User-Agent": $.UA, + }, + }; $.post(options, async (err, resp, data) => { try { if (err) { - console.log(`\n${turnTableId[i].name} 登录: API查询请求失败 ‼️‼️`) + console.log(`\n${turnTableId[i].name} 登录: API查询请求失败 ‼️‼️`); throw new Error(err); } else { if (data.indexOf("*_*") > 0) { data = data.split("*_*", 2); data = JSON.parse(data[1]); - eid = data.eid + eid = data.eid; } else { - console.log(`京豆api返回数据为空,请检查自身原因`) + console.log(`京豆api返回数据为空,请检查自身原因`); } } } catch (e) { @@ -224,59 +270,43 @@ function getEid(arr) { } finally { resolve(data); } - }) - }) + }); + }); } function taskUrl(turnTableId) { - const url = `${JD_API_HOST}/api/turncard/channel/detail?turnTableId=${turnTableId}&invokeKey=qRKHmL4sna8ZOP9F` + const url = `${JD_API_HOST}/api/turncard/channel/detail?turnTableId=${turnTableId}&invokeKey=${$.invokeKey}`; return { url, headers: { - "Accept": "application/json, text/plain, */*", + Accept: "application/json, text/plain, */*", "Accept-Encoding": "gzip, deflate, br", "Accept-Language": "zh-cn", - "Connection": "keep-alive", - 'Cookie': cookie, - 'Host': `jdjoy.jd.com`, - "Origin": "https://prodev.m.jd.com", - "Referer": "https://prodev.m.jd.com/", + Connection: "keep-alive", + Cookie: cookie, + Host: `jdjoy.jd.com`, + Origin: "https://prodev.m.jd.com", + Referer: "https://prodev.m.jd.com/", "User-Agent": $.UA, - } - } + }, + }; } function tasPostkUrl(turnTableId) { - const url = `${JD_API_HOST}/api/turncard/channel/sign?turnTableId=${turnTableId}&fp=${fp}&eid=${eid}&invokeKey=qRKHmL4sna8ZOP9F` + const url = `${JD_API_HOST}/api/turncard/channel/sign?turnTableId=${turnTableId}&fp=${fp}&eid=${eid}&invokeKey=${$.invokeKey}`; return { url, headers: { - "Accept": "application/json, text/plain, */*", + Accept: "application/json, text/plain, */*", "Accept-Encoding": "gzip, deflate, br", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", - "Connection": "keep-alive", + Connection: "keep-alive", "Content-Type": "application/x-www-form-urlencoded", - 'Cookie': cookie, - 'Host': `jdjoy.jd.com`, - "Origin": "https://prodev.m.jd.com", - "Referer": "https://prodev.m.jd.com/", + Cookie: cookie, + Host: `jdjoy.jd.com`, + Origin: "https://prodev.m.jd.com", + Referer: "https://prodev.m.jd.com/", "User-Agent": $.UA, - } - } -} - -function jsonParse(str) { - if (typeof str == "string") { - try { - return JSON.parse(str); - } catch (e) { - console.log(e); - $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') - return []; - } - } -} - - - -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 + }, + }; +} \ No newline at end of file