open_card/jd_card523.js

908 lines
43 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
默认脚本不执行
如需执行脚本请设置环境变量
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 = "false"
let guaopencard = "true"
let guaopenwait = "1"
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){
//}
//}
if (!token) {
console.log('请填写h5token');
return;
}
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 (!cookiesArr[0]) {
$.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {
"open-url": "https://bean.m.jd.com/"
});
return;
}
$.activityId = "dzlhkk855a1b041832408dadaf77b8"
$.shareUuid = "0b77cc9f19974d8199f5fe211b940b3f"
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,
}
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)}