/* 默认脚本不执行 如需执行脚本请设置环境变量 guaopencard119="true" 每个账号之间延迟 100=延迟100秒 0=延迟0秒会使用每3个账号延迟60秒 guaopenwait_All 所有 guaopenwait119="0" All变量适用 ———————————————— 入口:[ 3.17~3.25 大牌联合 好物焕新季 (https://lzdz1-isv.isvjcloud.com/dingzhi/customized/common/activity?activityId=dzlhkk068d4d0ab8a6609723002f50&shareUuid=3720d1ba86dd405fa87463dc5dd966ff)] 请求太频繁会被黑ip 过10分钟再执行 cron:0 ============Quantumultx=============== [task_local] #开卡 0 https://raw.githubusercontent.com/smiek2121/scripts/master/gua_opencard119.js, tag=开卡, enabled=true */ let guaopencard_addSku = "true"; let guaopencard = "true"; let guaopenwait = "2"; let guaopencard_draw = "0"; let token = process.env.h5token ? process.env.h5token : ""; //h5token const $ = new Env("开卡"); const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; const notify = $.isNode() ? require("./sendNotify") : ""; //IOS等用户直接用NobyDa的jd cookie $.CryptoJS = $.isNode() ? require("crypto-js") : CryptoJS; //let cleanCart = '' //if($.isNode()){ //try{ //const fs = require('fs'); //if (fs.existsSync('./cleancart_activity.js')) { //cleanCart = require('./cleancart_activity'); //} //}catch(e){ //} //} 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 = () => {}; } else { cookiesArr = [ $.getdata("CookieJD"), $.getdata("CookieJD2"), ...jsonParse($.getdata("CookiesJD") || "[]").map((item) => item.cookie), ].filter((item) => !!item); } allMessage = ""; message = ""; $.hotFlag = false; $.outFlag = false; $.activityEnd = false; let lz_jdpin_token_cookie = ""; let activityCookie = ""; !(async () => { if ($.isNode()) { if (guaopencard + "" != "true") { console.log('如需执行脚本请设置环境变量[guaopencard119]为"true"'); } if (guaopencard + "" != "true") { return; } if (!token) { console.log("请填写h5token"); return; } } if (!cookiesArr[0]) { $.msg( $.name, "【提示】请先获取cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/", { "open-url": "https://bean.m.jd.com/", } ); return; } $.activityId = "dzlhkkde5c0b4e3c90bdb208688e7c"; $.shareUuid = "ea82da02daf34d669ac8a2594b10de02"; console.log( `入口:\nhttps://lzdz1-isv.isvjcloud.com/dingzhi/customized/common/activity?activityId=${$.activityId}&shareUuid=${$.shareUuid}` ); let shareUuidArr = [$.shareUuid, ""]; let s = Math.floor(Math.random() * 10); let n = 0; if (s >= 1 && s <= 4) n = Math.floor(Math.random() * shareUuidArr.length); if ($.time("dd") == "18") $.shareUuid = shareUuidArr[n] ? shareUuidArr[n] : $.shareUuid; for (let i = 0; i < cookiesArr.length; i++) { cookie = cookiesArr[i]; if (cookie) { $.UserName = decodeURIComponent( cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1] ); $.index = i + 1; message = ""; $.bean = 0; $.hotFlag = false; $.nickName = ""; console.log( `\n\n******开始【京东账号${$.index}】${ $.nickName || $.UserName }*********\n` ); await getUA(); await run(); if (i == 0 && !$.actorUuid) break; if ($.outFlag || $.activityEnd) break; } } if ($.outFlag) { let msg = "此ip已被限制,请过10分钟后再执行脚本"; $.msg($.name, ``, `${msg}`); if ($.isNode()) await notify.sendNotify(`${$.name}`, `${msg}`); } if (allMessage) { $.msg($.name, ``, `${allMessage}`); // if ($.isNode()) await notify.sendNotify(`${$.name}`, `${allMessage}`); } })() .catch((e) => $.logErr(e)) .finally(() => $.done()); async function run() { try { $.joinShopStatus = true; $.hasEnd = true; $.endTime = 0; lz_jdpin_token_cookie = ""; $.Token = ""; $.Pin = ""; let flag = false; await takePostRequest("isvObfuscator"); if ($.Token == "") { console.log("获取[token]失败!"); return; } await getCk(); if (activityCookie == "") { console.log(`获取cookie失败`); return; } if ($.activityEnd === true) { console.log("活动结束"); return; } if ($.outFlag) { console.log("此ip已被限制,请过10分钟后再执行脚本\n"); return; } await takePostRequest("getSimpleActInfoVo"); await takePostRequest("getMyPing"); if (!$.Pin) { console.log("获取[Pin]失败!"); return; } await takePostRequest("accessLogWithAD"); await takePostRequest("getUserInfo"); await takePostRequest("activityContent"); if ($.hotFlag) return; if (!$.actorUuid) { console.log("获取不到[actorUuid]退出执行,请重新执行"); return; } if ($.hasEnd === true || Date.now() > $.endTime) { $.activityEnd = true; console.log("活动结束"); return; } await takePostRequest("drawContent"); await $.wait(500); $.openList = []; $.allOpenCard = false; await takePostRequest("info"); await takePostRequest("checkOpenCard"); console.log($.actorUuid); // return if ($.allOpenCard == false) { console.log("开卡任务"); for (o of $.openList) { $.openCard = false; if (o.status == 0) { flag = true; $.joinVenderId = o.venderId; $.errorJoinShop = ""; await joinShop(); if ($.errorJoinShop.indexOf("活动太火爆,请稍后再试") > -1) { console.log("第1次 重新开卡"); await $.wait(parseInt(Math.random() * 2000 + 3000, 10)); await joinShop(); } if ($.errorJoinShop.indexOf("活动太火爆,请稍后再试") > -1) { console.log("第2次 重新开卡"); await $.wait(parseInt(Math.random() * 2000 + 4000, 10)); await joinShop(); } if ($.errorJoinShop.indexOf("活动太火爆,请稍后再试") > -1) { console.log("第3次 重新开卡"); await $.wait(parseInt(Math.random() * 2000 + 4000, 10)); await joinShop(); } if ($.errorJoinShop.indexOf("活动太火爆,请稍后再试") > -1) { console.log("第4次 重新开卡"); await $.wait(parseInt(Math.random() * 2000 + 4000, 10)); await joinShop(); } if ($.errorJoinShop.indexOf("活动太火爆,请稍后再试") > -1) { console.log("第5次 重新开卡"); await $.wait(parseInt(Math.random() * 2000 + 4000, 10)); await joinShop(); } if ($.errorJoinShop.indexOf("活动太火爆,请稍后再试") > -1) { console.log("开卡失败❌ ,重新执行脚本"); allMessage += `【账号${$.index}】开卡失败❌ ,重新执行脚本\n`; $.joinShopStatus = false; } await $.wait(parseInt(Math.random() * 2000 + 3000, 10)); await takePostRequest("activityContent"); await takePostRequest("drawContent"); await takePostRequest("checkOpenCard"); await $.wait(parseInt(Math.random() * 3000 + 2000, 10)); } } } else { console.log("已全部开卡"); } $.log("关注: " + $.followShop); if (!$.followShop && !$.outFlag) { flag = true; await takePostRequest("followShop"); await $.wait(parseInt(Math.random() * 2000 + 1000, 10)); } $.yaoqing = false; await takePostRequest("邀请"); if ($.yaoqing) { await takePostRequest("助力"); } $.log("加购: " + $.addCart); if (!$.addCart && !$.outFlag) { if (guaopencard_addSku + "" == "true") { flag = true; //let goodsArr = [] //if(cleanCart){ //goodsArr = await cleanCart.clean(cookie,'https://jd.smiek.tk/jdcleancatr_21102717','') //await $.wait(parseInt(Math.random() * 1000 + 4000, 10)) //} await takePostRequest("addCart"); await $.wait(parseInt(Math.random() * 2000 + 1000, 10)); //if(cleanCart && goodsArr !== false){ // await $.wait(parseInt(Math.random() * 1000 + 4000, 10)) //await cleanCart.clean(cookie,'https://jd.smiek.tk/jdcleancatr_21102717',goodsArr || [ ]) ///} //}////else{ /// console.log('如需加购请设置环境变量[guaopencard_addSku119]为"true"'); } } if (flag) { await takePostRequest("activityContent"); } console.log(`${$.score}值`); if (guaopencard_draw + "" !== "0" && $.joinShopStatus) { $.runFalag = true; let count = parseInt($.score / 100); guaopencard_draw = parseInt(guaopencard_draw, 10); if (count > guaopencard_draw) count = guaopencard_draw; console.log(`抽奖次数为:${count}`); for (m = 1; count--; m++) { console.log(`第${m}次抽奖`); await takePostRequest("抽奖"); if ($.runFalag == false) break; if (Number(count) <= 0) break; if (m >= 10) { console.log("抽奖太多次,多余的次数请再执行脚本"); break; } await $.wait(parseInt(Math.random() * 2000 + 500, 10)); } } else console.log('如需抽奖请设置环境变量[guaopencard_draw119]为"3" 3为次数'); await $.wait(parseInt(Math.random() * 1000 + 1500, 10)); await takePostRequest("getDrawRecordHasCoupon"); await takePostRequest("getShareRecord"); if ($.outFlag) { console.log("此ip已被限制,请过10分钟后再执行脚本\n"); return; } console.log($.actorUuid); console.log(`当前助力:${$.shareUuid}`); if ($.index == 1) { $.shareUuid = $.actorUuid; console.log(`后面的号都会助力:${$.shareUuid}`); } await $.wait(parseInt(Math.random() * 1000 + 3000, 10)); if (flag) await $.wait(parseInt(Math.random() * 1000 + 3000, 10)); if (guaopenwait) { if ($.index != cookiesArr.length) { console.log(`等待${guaopenwait}秒`); await $.wait(parseInt(guaopenwait, 10) * 1000); } } else { if ($.index % 3 == 0) console.log("休息1分钟,别被黑ip了\n可持续发展"); if ($.index % 3 == 0) await $.wait(parseInt(Math.random() * 5000 + 60000, 10)); } } catch (e) { console.log(e); } } async function takePostRequest(type) { if ($.outFlag) return; let domain = "https://lzdz1-isv.isvjcloud.com"; let body = ``; let method = "POST"; let admJson = ""; switch (type) { case "isvObfuscator": url = `https://api.m.jd.com/client.action?functionId=isvObfuscator`; body = `body=%7B%22url%22%3A%22https%3A//lzdz1-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&uuid=9bedc1528ce297b982ce8bb0a8785ae48c18500e&client=apple&clientVersion=10.1.4&st=1646363852923&sv=111&sign=24a34053625f61226d89fd9402c42f6a`; break; case "getSimpleActInfoVo": url = `${domain}/dz/common/getSimpleActInfoVo`; body = `activityId=${$.activityId}`; break; case "getMyPing": url = `${domain}/customer/getMyPing`; body = `userId=${$.shopId || $.venderId || ""}&token=${ $.Token }&fromType=APP`; break; case "accessLogWithAD": url = `${domain}/common/accessLogWithAD`; let pageurl = `${domain}/drawCenter/activity?activityId=${$.activityId}&shareUuid=${$.shareUuid}`; body = `venderId=${ $.shopId || $.venderId || "" }&code=99&pin=${encodeURIComponent($.Pin)}&activityId=${ $.activityId }&pageUrl=${encodeURIComponent(pageurl)}&subType=app&adSource=`; break; case "getUserInfo": url = `${domain}/wxActionCommon/getUserInfo`; body = `pin=${encodeURIComponent($.Pin)}`; break; case "activityContent": url = `${domain}/dingzhi/linkgame/activity/content`; body = `activityId=${$.activityId}&pin=${encodeURIComponent( $.Pin )}&pinImg=${encodeURIComponent($.attrTouXiang)}&nick=${encodeURIComponent( $.nickname )}&cjyxPin=&cjhyPin=&shareUuid=${$.shareUuid}`; break; case "drawContent": url = `${domain}/dingzhi/taskact/common/drawContent`; body = `activityId=${$.activityId}&pin=${encodeURIComponent($.Pin)}`; break; case "checkOpenCard": url = `${domain}/dingzhi/linkgame/checkOpenCard`; body = `activityId=${$.activityId}&pin=${encodeURIComponent( $.Pin )}&shareUuid=${$.shareUuid}`; break; case "info": url = `${domain}/dingzhi/linkgame/task/opencard/info`; body = `activityId=${$.activityId}&pin=${encodeURIComponent( $.Pin )}&actorUuid=${$.actorUuid}`; break; case "startDraw": url = `${domain}/joint/order/draw`; body = `activityId=${$.activityId}&pin=${encodeURIComponent( $.Pin )}&actorUuid=${$.actorUuid}&drawType=1`; break; case "followShop": url = `${domain}/dingzhi/opencard/follow/shop`; // url = `${domain}/dingzhi/dz/openCard/saveTask`; body = `activityId=${$.activityId}&pin=${encodeURIComponent($.Pin)}`; break; case "sign": case "addCart": case "browseGoods": url = `${domain}/dingzhi/opencard/${type}`; body = `activityId=${$.activityId}&pin=${encodeURIComponent($.Pin)}`; if (type == "browseGoods") body += `&value=${$.visitSkuValue}`; break; case "邀请": case "助力": if (type == "助力") { url = `${domain}/dingzhi/linkgame/assist`; } else { url = `${domain}/dingzhi/linkgame/assist/status`; } body = `activityId=${$.activityId}&pin=${encodeURIComponent( $.Pin )}&shareUuid=${$.shareUuid}`; break; case "viewVideo": case "visitSku": case "toShop": case "addSku": url = `${domain}/dingzhi/opencard/${type}`; let taskType = ""; let taskValue = ""; if (type == "viewVideo") { taskType = 31; taskValue = 31; } else if (type == "visitSku") { taskType = 5; taskValue = $.visitSkuValue || 5; } else if (type == "toShop") { taskType = 14; taskValue = $.toShopValue || 14; } else if (type == "addSku") { taskType = 2; taskValue = $.addSkuValue || 2; } body = `activityId=${$.activityId}&pin=${encodeURIComponent( $.Pin )}&actorUuid=${$.actorUuid}&taskType=${taskType}&taskValue=${taskValue}`; break; case "getDrawRecordHasCoupon": url = `${domain}/dingzhi/linkgame/draw/record`; body = `activityId=${$.activityId}&pin=${encodeURIComponent( $.Pin )}&actorUuid=${$.actorUuid}`; break; case "getShareRecord": url = `${domain}/dingzhi/linkgame/help/list`; body = `activityId=${$.activityId}&pin=${encodeURIComponent($.Pin)}`; break; case "抽奖": url = `${domain}/dingzhi/opencard/draw`; body = `activityId=${$.activityId}&actorUuid=${ $.actorUuid }&pin=${encodeURIComponent($.Pin)}`; break; default: console.log(`错误${type}`); } let myRequest = getPostRequest(url, body, method); // console.log(myRequest) return new Promise(async (resolve) => { $.post(myRequest, (err, resp, data) => { try { setActivityCookie(resp); if (err) { if (resp && typeof resp.statusCode != "undefined") { if (resp.statusCode == 493) { console.log("此ip已被限制,请过10分钟后再执行脚本\n"); $.outFlag = true; } } console.log(`${$.toStr(err, err)}`); console.log(`${type} API请求失败,请检查网路重试`); } else { dealReturn(type, data); } } catch (e) { // console.log(data); console.log(e, resp); } finally { resolve(); } }); }); } async function dealReturn(type, data) { let res = ""; try { if (type != "accessLogWithAD" || type != "drawContent") { if (data) { res = JSON.parse(data); } } } catch (e) { console.log(`${type} 执行任务异常`); console.log(data); $.runFalag = false; } try { switch (type) { case "isvObfuscator": if (typeof res == "object") { if (res.errcode == 0) { if (typeof res.token != "undefined") $.Token = res.token; } else if (res.message) { console.log(`isvObfuscator ${res.message || ""}`); } else { console.log(data); } } else { console.log(data); } break; case "getSimpleActInfoVo": if (typeof res == "object") { if (res.result && res.result === true) { if (typeof res.data.shopId != "undefined") $.shopId = res.data.shopId; if (typeof res.data.venderId != "undefined") $.venderId = res.data.venderId; } else if (res.errorMessage) { console.log(`${type} ${res.errorMessage || ""}`); } else { console.log(`${type} ${data}`); } } else { console.log(`${type} ${data}`); } break; case "getMyPing": if (typeof res == "object") { if (res.result && res.result === true) { if (res.data && typeof res.data.secretPin != "undefined") $.Pin = res.data.secretPin; if (res.data && typeof res.data.nickname != "undefined") $.nickname = res.data.nickname; } else if (res.errorMessage) { console.log(`${type} ${res.errorMessage || ""}`); } else { console.log(`${type} ${data}`); } } else { console.log(`${type} ${data}`); } break; case "getUserInfo": if (typeof res == "object") { if (res.result && res.result === true) { if (res.data && typeof res.data.yunMidImageUrl != "undefined") $.attrTouXiang = res.data.yunMidImageUrl || "https://img10.360buyimg.com/imgzone/jfs/t1/7020/27/13511/6142/5c5138d8E4df2e764/5a1216a3a5043c5d.png"; } else if (res.errorMessage) { console.log(`${type} ${res.errorMessage || ""}`); } else { console.log(`${type} ${data}`); } } else { console.log(`${type} ${data}`); } break; case "activityContent": if (typeof res == "object") { if (res.result && res.result === true) { $.endTime = res.data.endTime || (res.data.activityVo && res.data.activityVo.endTime) || res.data.activity.endTime || 0; $.hasEnd = res.data.isEnd || false; $.drawCount = res.data.actor.drawCount || 0; $.point = res.data.actor.point || 0; $.score = res.data.actor.score || 0; $.actorUuid = res.data.actor.actorUuid || ""; $.followShop = res.data.actor.followShopStatus || ""; } else if (res.errorMessage) { console.log(`${type} ${res.errorMessage || ""}`); } else { console.log(`${type} ${data}`); } } else { console.log(`${type} ${data}`); } break; case "info": if (typeof res == "object") { if (res.result && res.result === true) { // $.drawCount = res.data.drawCount || 0 $.addCart = res.data.addCart || false; // $.followShop = res.data.followShop || false // $.sign = res.data.isSignStatus || false // $.visitSku = res.data.visitSku || false // $.visitSkuList = res.data.visitSkuList || [] } else if (res.errorMessage) { console.log(`${type} ${res.errorMessage || ""}`); } else { console.log(`${type} ${data}`); } } else { console.log(`${type} ${data}`); } break; case "checkOpenCard": if (typeof res == "object") { if (res.result && res.result === true) { let cardList1 = res.data.cardList1 || []; let cardList2 = res.data.cardList2 || []; let cardList = res.data.cardList || []; let openCardList = res.data.openCardList || []; $.openList = [ ...cardList, ...cardList1, ...cardList2, ...openCardList, ]; $.allOpenCard = res.data.allOpenCard || res.data.isOpenCardStatus || false; $.openCardScore1 = res.data.score1 || 0; $.openCardScore2 = res.data.score2 || 0; $.drawScore = res.data.drawScore || 0; if (res.data.beans || res.data.addBeanNum) console.log( `开卡获得:${res.data.beans || res.data.addBeanNum}豆` ); } else if (res.errorMessage) { console.log(`${type} ${res.errorMessage || ""}`); } else { console.log(`${type} ${data}`); } } else { console.log(`${type} ${data}`); } break; case "startDraw": case "followShop": case "viewVideo": case "visitSku": case "toShop": case "addSku": case "sign": case "addCart": case "browseGoods": case "抽奖": if (typeof res == "object") { if (res.result && res.result === true) { if (typeof res.data == "object") { let msg = ""; let title = "抽奖"; if (res.data.addBeanNum) { msg = `${res.data.addBeanNum}京豆`; } if (res.data.addPoint) { msg += ` ${res.data.addPoint}游戏机会`; } if (type == "followShop") { title = "关注"; if (res.data.beanNumMember && res.data.assistSendStatus) { msg += ` 额外获得:${res.data.beanNumMember}京豆`; } } else if (type == "addSku" || type == "addCart") { title = "加购"; } else if (type == "viewVideo") { title = "热门文章"; } else if (type == "toShop") { title = "浏览店铺"; } else if (type == "visitSku" || type == "browseGoods") { title = "浏览商品"; } else if (type == "sign") { title = "签到"; } else { msg = (res.data.drawOk == true && ((res.data.drawInfoType == 6 && res.data.name) || "")) || "空气💨"; } if (!msg) { msg = "空气💨"; } console.log(`${title}获得:${msg || data}`); } else { console.log(`${type} ${data}`); } } else if (res.errorMessage) { $.runFalag = false; console.log(`${type} ${res.errorMessage || ""}`); } else { console.log(`${type} ${data}`); } } else { console.log(`${type} ${data}`); } break; case "getDrawRecordHasCoupon": if (typeof res == "object") { if (res.result && res.result === true) { console.log(`我的奖品:`); let num = 0; let value = 0; for (let i in res.data.recordList) { let item = res.data.recordList[i]; if (item.infoName == "20京豆" && item.drawStatus == 0) { num++; value = item.infoName.replace("京豆", ""); } else { console.log( `${ (item.infoType != 10 && item.value && item.value + ":") || "" }${item.infoName}` ); } } if (num > 0) console.log( `邀请好友(${num}):${num * parseInt(value, 10) || 30}京豆` ); } else if (res.errorMessage) { console.log(`${type} ${res.errorMessage || ""}`); } else { console.log(`${type} ${data}`); } } else { console.log(`${type} ${data}`); } break; case "getShareRecord": if (typeof res == "object") { if (res.result && res.result === true && res.data) { $.ShareCount = res.data.shareList.length; $.log( `=========== 你邀请了:${res.data.shareList.length}个\n由于接口数据只有30个 故邀请大于30个的需要自行判断\n` ); } else if (res.errorMessage) { console.log(`${type} ${res.errorMessage || ""}`); } else { console.log(`${type} ${data}`); } } else { console.log(`${type} ${data}`); } break; case "邀请": case "助力": // console.log(data) if (typeof res == "object") { if (res.data.status == 200) { if (type == "助力") { console.log("助力成功"); } else { $.yaoqing = true; } } else if (res.data.status == 105) { console.log("已经助力过"); } else if (res.data.status == 104) { console.log("已经助力其他人"); } else if (res.data.status == 101) { // console.log('已经助力过') } else { console.log(data); } } else { console.log(`${type} ${data}`); } case "accessLogWithAD": case "drawContent": break; default: console.log(`${type}-> ${data}`); } if (typeof res == "object") { if (res.errorMessage) { if (res.errorMessage.indexOf("火爆") > -1) { $.hotFlag = true; } } } } catch (e) { console.log(e); } } function getPostRequest(url, body, method = "POST") { let headers = { Accept: "application/json", "Accept-Encoding": "gzip, deflate, br", "Accept-Language": "zh-cn", Connection: "keep-alive", "Content-Type": "application/x-www-form-urlencoded", Cookie: cookie, "User-Agent": $.UA, "X-Requested-With": "XMLHttpRequest", }; if (url.indexOf("https://lzdz1-isv.isvjcloud.com") > -1) { headers[ "Referer" ] = `https://lzdz1-isv.isvjcloud.com/dingzhi/customized/common/activity?activityId=${$.activityId}&shareUuid=${$.shareUuid}`; headers["Cookie"] = `${ (lz_jdpin_token_cookie && lz_jdpin_token_cookie) || "" }${($.Pin && "AUTH_C_USER=" + $.Pin + ";") || ""}${activityCookie}`; } // console.log(headers) // console.log(headers.Cookie) return { url: url, method: method, headers: headers, body: body, timeout: 30000, }; } function getCk() { return new Promise((resolve) => { let get = { url: `https://lzdz1-isv.isvjcloud.com/dingzhi/customized/common/activity?activityId=${$.activityId}&shareUuid=${$.shareUuid}`, followRedirect: false, headers: { "User-Agent": $.UA, }, timeout: 30000, }; $.get(get, async (err, resp, data) => { try { if (err) { if (resp && typeof resp.statusCode != "undefined") { if (resp.statusCode == 493) { console.log("此ip已被限制,请过10分钟后再执行脚本\n"); $.outFlag = true; } } console.log(`${$.toStr(err)}`); console.log(`${$.name} cookie API请求失败,请检查网路重试`); } else { let end = (data.match(/(活动已经结束)/) && data.match(/(活动已经结束)/)[1]) || ""; if (end) { $.activityEnd = true; console.log("活动已结束"); } setActivityCookie(resp); } } catch (e) { $.logErr(e, resp); } finally { resolve(); } }); }); } function setActivityCookie(resp) { let LZ_TOKEN_KEY = ""; let LZ_TOKEN_VALUE = ""; let lz_jdpin_token = ""; let setcookies = (resp && resp["headers"] && (resp["headers"]["set-cookie"] || resp["headers"]["Set-Cookie"] || "")) || ""; let setcookie = ""; if (setcookies) { if (typeof setcookies != "object") { setcookie = setcookies.split(","); } else setcookie = setcookies; for (let ck of setcookie) { let name = ck.split(";")[0].trim(); if (name.split("=")[1]) { // console.log(name.replace(/ /g,'')) if (name.indexOf("LZ_TOKEN_KEY=") > -1) LZ_TOKEN_KEY = name.replace(/ /g, "") + ";"; if (name.indexOf("LZ_TOKEN_VALUE=") > -1) LZ_TOKEN_VALUE = name.replace(/ /g, "") + ";"; if (name.indexOf("lz_jdpin_token=") > -1) lz_jdpin_token = "" + name.replace(/ /g, "") + ";"; } } } if (LZ_TOKEN_KEY && LZ_TOKEN_VALUE) activityCookie = `${LZ_TOKEN_KEY} ${LZ_TOKEN_VALUE}`; if (lz_jdpin_token) lz_jdpin_token_cookie = lz_jdpin_token; } async function getUA() { $.UA = `jdapp;iPhone;10.1.4;13.1.2;${randomString( 40 )};network/wifi;model/iPhone8,1;addressid/2308460611;appBuild/167814;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_1_2 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; } function joinShop() { if (!$.joinVenderId) return; return new Promise(async (resolve) => { $.shopactivityId = ""; $.errorJoinShop = ""; await $.wait(1000); await getshopactivityId(); let activityId = ``; if ($.shopactivityId) activityId = `,"activityId":${$.shopactivityId}`; let body = `{"venderId":"${$.joinVenderId}","shopId":"${$.joinVenderId}","bindByVerifyCodeFlag":1,"registerExtend":{},"writeChildFlag":0${activityId},"channel":401}`; let params = { functionId: "bindWithVender", body, }; console.log(body); let h5stData = (await h5stSign(params)) || "undefined"; const options = { url: `https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=bindWithVender&body=${body}&clientVersion=9.2.0&client=H5&uuid=88888&h5st=${h5stData.h5st}`, headers: { "Content-Type": "text/plain; Charset=UTF-8", Origin: "https://api.m.jd.com", Host: "api.m.jd.com", accept: "*/*", "User-Agent": $.UA, "content-type": "application/x-www-form-urlencoded", Cookie: cookie, }, }; $.get(options, async (err, resp, data) => { try { // console.log(data) let res = $.toObj(data, data); if (typeof res == "object") { if (res.success === true) { console.log(res.message); $.errorJoinShop = res.message; if (res.result && res.result.giftInfo) { for (let i of res.result.giftInfo.giftList) { console.log( `入会获得:${i.discountString}${i.prizeName}${i.secondLineDesc}` ); } } } else if (typeof res == "object" && res.message) { $.errorJoinShop = res.message; console.log(`${res.message || ""}`); } else { console.log(data); } } else { console.log(data); } } catch (e) { $.logErr(e, resp); } finally { resolve(); } }); }); } function getshopactivityId() { return new Promise((resolve) => { const options = { url: `https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=getShopOpenCardInfo&body=%7B%22venderId%22%3A%22${$.joinVenderId}%22%2C%22channel%22%3A401%7D&client=H5&clientVersion=9.2.0&uuid=88888`, headers: { "Content-Type": "text/plain; Charset=UTF-8", Origin: "https://api.m.jd.com", Host: "api.m.jd.com", accept: "*/*", "User-Agent": $.UA, "content-type": "application/x-www-form-urlencoded", Cookie: cookie, }, }; $.get(options, async (err, resp, data) => { try { let res = $.toObj(data, data); if (typeof res == "object") { if (res.success == true) { // console.log($.toStr(res.result)) console.log( `入会:${res.result.shopMemberCardInfo.venderCardName || ""}` ); $.shopactivityId = (res.result.interestsRuleList && res.result.interestsRuleList[0] && res.result.interestsRuleList[0].interestsInfo && res.result.interestsRuleList[0].interestsInfo.activityId) || ""; } } else { console.log(data); } } catch (e) { $.logErr(e, resp); } finally { resolve(); } }); }); } function jsonParse(str) { if (typeof str == "string") { try { return JSON.parse(str); } catch (e) { console.log(e); $.msg( $.name, "", "请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie" ); return []; } } } var _0xodn = "jsjiami.com.v6", _0xodn_ = ["‮_0xodn"], _0x136d = [ _0xodn, "bG9n", "YldLQlU=", "d0ZacXo=", "cGFyc2U=", "ZGF0YQ==", "ZnNvcEk=", "ckRWamY=", "U3JmZks=", "bG9nRXJy", "WWJFeG8=", "V2pkaHU=", "aGxremw=", "Y3NkRFU=", "VUNqcms=", "dXhRVkw=", "b2lVTmM=", "ZHpLUEU=", "WU1oTUk=", "c3RyaW5naWZ5", "cG9zdA==", "bmFtZQ==", "IEFQSeivt+axguWksei0pe+8jOivt+ajgOafpee9kei3r+mHjeivlQ==", "YkFFcVI=", "WURDdXg=", "jsjHliAMVamtFiI.cbXgomgT.vn6==", ]; if ( ((function (_0x2203ac, _0x56d7ff, _0x270642) { function _0x5bbf5b( _0x446d46, _0x557cb4, _0x297dfa, _0x1a88c1, _0x2dc8dd, _0x1d6823 ) { (_0x557cb4 = _0x557cb4 >> 0x8), (_0x2dc8dd = "po"); var _0x32ffad = "shift", _0x4888d1 = "push", _0x1d6823 = "‮"; if (_0x557cb4 < _0x446d46) { while (--_0x446d46) { _0x1a88c1 = _0x2203ac[_0x32ffad](); if ( _0x557cb4 === _0x446d46 && _0x1d6823 === "‮" && _0x1d6823["length"] === 0x1 ) { (_0x557cb4 = _0x1a88c1), (_0x297dfa = _0x2203ac[_0x2dc8dd + "p"]()); } else if ( _0x557cb4 && _0x297dfa["replace"](/[HlAMVtFIbXggTn=]/g, "") === _0x557cb4 ) { _0x2203ac[_0x4888d1](_0x1a88c1); } } _0x2203ac[_0x4888d1](_0x2203ac[_0x32ffad]()); } return 0xdf7c0; } return (_0x5bbf5b(++_0x56d7ff, _0x270642) >> _0x56d7ff) ^ _0x270642; })(_0x136d, 0x142, 0x14200), _0x136d) ) { _0xodn_ = _0x136d["length"] ^ 0x142; } function _0x530e(_0x2f663d, _0x4c18b1) { _0x2f663d = ~~"0x"["concat"](_0x2f663d["slice"](0x1)); var _0x48b429 = _0x136d[_0x2f663d]; if (_0x530e["aGalCW"] === undefined && "‮"["length"] === 0x1) { (function () { var _0x475c60 = typeof window !== "undefined" ? window : typeof process === "object" && typeof require === "function" && typeof global === "object" ? global : this; var _0x52a119 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; _0x475c60["atob"] || (_0x475c60["atob"] = function (_0x388038) { var _0xe99e2f = String(_0x388038)["replace"](/=+$/, ""); for ( var _0x2b6c1d = 0x0, _0x5217d5, _0x2888d3, _0x5f51bd = 0x0, _0x3ae6e6 = ""; (_0x2888d3 = _0xe99e2f["charAt"](_0x5f51bd++)); ~_0x2888d3 && ((_0x5217d5 = _0x2b6c1d % 0x4 ? _0x5217d5 * 0x40 + _0x2888d3 : _0x2888d3), _0x2b6c1d++ % 0x4) ? (_0x3ae6e6 += String["fromCharCode"]( 0xff & (_0x5217d5 >> ((-0x2 * _0x2b6c1d) & 0x6)) )) : 0x0 ) { _0x2888d3 = _0x52a119["indexOf"](_0x2888d3); } return _0x3ae6e6; }); })(); _0x530e["JvZhoh"] = function (_0x41c098) { var _0x125072 = atob(_0x41c098); var _0x3e363f = []; for ( var _0x418c87 = 0x0, _0x3b3efd = _0x125072["length"]; _0x418c87 < _0x3b3efd; _0x418c87++ ) { _0x3e363f += "%" + ("00" + _0x125072["charCodeAt"](_0x418c87)["toString"](0x10))[ "slice" ](-0x2); } return decodeURIComponent(_0x3e363f); }; _0x530e["VQEymK"] = {}; _0x530e["aGalCW"] = !![]; } var _0x208070 = _0x530e["VQEymK"][_0x2f663d]; if (_0x208070 === undefined) { _0x48b429 = _0x530e["JvZhoh"](_0x48b429); _0x530e["VQEymK"][_0x2f663d] = _0x48b429; } else { _0x48b429 = _0x208070; } return _0x48b429; } function h5stSign(_0x578d59) { var _0x461d1a = { zATST: _0x530e("‫0"), hdkYf: _0x530e("‫1"), bAEqR: _0x530e("‮2"), bWKBU: function (_0x41644f, _0x36fe6f) { return _0x41644f !== _0x36fe6f; }, wFZqz: _0x530e("‫3"), fsopI: function (_0x287452, _0x39962f) { return _0x287452 === _0x39962f; }, rDVjf: _0x530e("‮4"), SrffK: _0x530e("‫5"), dlwSO: _0x530e("‮6"), ATuCp: function (_0x300ea4, _0x577f47) { return _0x300ea4(_0x577f47); }, YMhMI: "application/json", }; return new Promise(async (_0x4e112e) => { var _0x885a3a = { YDCux: function (_0x4f2fe6, _0x4a46db) { return _0x4f2fe6(_0x4a46db); }, }; const _0x57348c = { url: "http://api.liunians.cn/tool/h5st", headers: { "Content-Type": _0x461d1a[_0x530e("‫7")], token: token }, body: JSON[_0x530e("‫8")](_0x578d59), }; $[_0x530e("‫9")](_0x57348c, (_0x5343a1, _0x5181d7, _0x5925b7) => { try { if (_0x461d1a["zATST"] === _0x461d1a["hdkYf"]) { console["log"]("" + JSON["stringify"](_0x5343a1)); console["log"]($[_0x530e("‫a")] + _0x530e("‫b")); } else { if (_0x5343a1) { if (_0x461d1a[_0x530e("‫c")] === "JSoNh") { _0x885a3a[_0x530e("‫d")](_0x4e112e, _0x5925b7); } else { console[_0x530e("‮e")]("" + JSON[_0x530e("‫8")](_0x5343a1)); console[_0x530e("‮e")]($[_0x530e("‫a")] + _0x530e("‫b")); } } else { if (_0x5925b7) { if ( _0x461d1a[_0x530e("‮f")]( _0x461d1a[_0x530e("‮10")], _0x530e("‫3") ) ) { _0x5925b7 = JSON[_0x530e("‮11")](_0x5925b7)[_0x530e("‫12")]; } else { _0x5925b7 = JSON[_0x530e("‮11")](_0x5925b7)[_0x530e("‫12")]; } } } } } catch (_0x4cbd28) { if ( _0x461d1a[_0x530e("‮13")]( _0x461d1a[_0x530e("‫14")], _0x461d1a[_0x530e("‫15")] ) ) { if (_0x5925b7) { _0x5925b7 = JSON["parse"](_0x5925b7)[_0x530e("‫12")]; } } else { $[_0x530e("‫16")](_0x4cbd28); } } finally { if (_0x461d1a["dlwSO"] !== _0x530e("‮17")) { _0x461d1a["ATuCp"](_0x4e112e, _0x5925b7); } else { $[_0x530e("‫16")](e); } } }); }); } _0xodn = "jsjiami.com.v6"; // prettier-ignore function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)}