open_card/activity/jd_opencardL114.js

716 lines
35 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode 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.

/*
4.13-4.20 京东粉丝联盟福利社 入会赢专享好礼
新增开卡脚本,一次性脚本
第一个账号助力作者 其他依次助力CK1
第一个CK失效会退出脚本
————————————————
入口:[ 4.13-4.20 京东粉丝联盟福利社 入会赢专享好礼 ]
请求太频繁会被黑ip
过10分钟再执行
cron:0
============Quantumultx===============
[task_local]
#4.13-4.20 京东粉丝联盟福利社 入会赢专享好礼
0 jd_opencardL114.js, tag=4.13-4.20 京东粉丝联盟福利社 入会赢专享好礼, enabled=true
*/
const $ = new Env('4.13-4.20 京东粉丝联盟福利社 入会赢专享好礼');
const jdCookieNode = $.isNode() ? require('./jdCookie.js') : '';
//IOS等用户直接用NobyDa的jd cookie
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 =''
let token = process.env.h5token ? process.env.h5token : '' //h5token
!(async () => {
if (!cookiesArr[0]) {
$.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {
"open-url": "https://bean.m.jd.com/"
});
return;
}
$.activityId = "dz39d46a394915bfa150a01f62shop"
$.shareUuid = "4cb25d9539474d708b747315aa7f2ded"
console.log(`入口:\nhttps://lzdz1-isv.isvjcloud.com/dingzhi/shop/league/activity?activityId=${$.activityId}&shareUuid=${$.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}`);
}
})()
.catch((e) => $.logErr(e))
.finally(() => $.done())
async function run() {
try {
$.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(1000)
$.openList = []
$.allOpenCard = false
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.value
$.errorJoinShop = ''
for (let i = 0; i < Array(5).length; i++) {
if (i > 0) console.log(`${i}次 重新开卡`)
await joinShop()
if ($.errorJoinShop.indexOf('活动太火爆,请稍后再试') == -1) break
}
if($.errorJoinShop.indexOf('活动太火爆,请稍后再试') > -1){
console.log("开卡失败❌ ,重新执行脚本")
allMessage += `【账号${$.index}】开卡失败❌ ,重新执行脚本\n`
$.joinShopStatus = false
}
await takePostRequest('drawContent');
await takePostRequest('checkOpenCard');
await $.wait(parseInt(Math.random() * 3000 + 2000, 10))
}
}
await takePostRequest('activityContent');
}else{
console.log('已全部开卡')
}
$.log("关注: " + $.followShop)
if(!$.followShop && !$.outFlag){
flag = true
$.followShopValue = 1
await takePostRequest('followShop');
await $.wait(parseInt(Math.random() * 1000 + 5000, 10))
}
$.log("加购: " + $.addSku)
if(!$.addSku && !$.outFlag){
flag = true
$.followShopValue = 2
await takePostRequest('addSku');
await $.wait(parseInt(Math.random() * 1000 + 5000, 10))
}
$.runFalag = true
if(flag){
await takePostRequest('activityContent');
}
await $.wait(parseInt(Math.random() * 1000 + 2000, 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 + 5000, 10))
if(flag) await $.wait(parseInt(Math.random() * 1000 + 3000, 10))
if($.index % 3 == 0) console.log('休息一下别被黑ip了\n可持续发展')
if($.index % 3 == 0) await $.wait(parseInt(Math.random() * 5000 + 3000, 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=0846724fe8d803b8e84ebd14b3ba7fac6df80e7a&client=apple&clientVersion=10.1.4&st=1634616247215&sv=120&sign=91a16ae2feb0bd0e1ea48d99e7953c58`;
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/shop/league/activityContent`;
body = `activityId=${$.activityId}&pin=${encodeURIComponent($.Pin)}&pinImg=${encodeURIComponent($.attrTouXiang)}&nick=${encodeURIComponent($.nickname)}&cjyxPin=&cjhyPin=&shareUuid=${$.shareUuid}`
break;
case 'drawContent':
url = `${domain}/dingzhi/taskact/openCardcommon/drawContent`;
body = `activityId=${$.activityId}&pin=${encodeURIComponent($.Pin)}`
break;
case 'checkOpenCard':
url = `${domain}/dingzhi/shop/league/checkOpenCard`;
body = `activityId=${$.activityId}&actorUuid=${$.actorUuid}&pin=${encodeURIComponent($.Pin)}&shareUuid=${$.shareUuid}`
break;
case 'startDraw':
url = `${domain}/dingzhi/shop/league/startDraw`;
body = `activityId=${$.activityId}&actorUuid=${$.actorUuid}&pin=${encodeURIComponent($.Pin)}${$.startDraw && '&type='+$.startDraw || ''}`
break;
case 'followShop':
url = `${domain}/dingzhi/shop/league/saveTask`;
// url = `${domain}/dingzhi/dz/openCard/saveTask`;
body = `activityId=${$.activityId}&pin=${encodeURIComponent($.Pin)}&actorUuid=${$.actorUuid}&shareUuid=${$.shareUuid}&taskType=1&taskValue=${$.followShopValue}`
break;
case 'viewVideo':
case 'visitSku':
case 'toShop':
case 'addSku':
url = `${domain}/dingzhi/shop/league/saveTask`;
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/taskact/common/getDrawRecordHasCoupon`;
body = `activityId=${$.activityId}&pin=${encodeURIComponent($.Pin)}&actorUuid=${$.actorUuid}`
break;
case 'getShareRecord':
url = `${domain}/dingzhi/taskact/common/getShareRecord`;
body = `activityId=${$.activityId}&pin=${encodeURIComponent($.Pin)}&actorUuid=${$.actorUuid}`
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 || 0
$.hasEnd = res.data.hasEnd || false
$.actorUuid = res.data.actorUuid || ''
$.followShop = res.data.followShop.allStatus || false
$.addSku = res.data.addSku.allStatus || false
if(res.data.followShop && res.data.followShop.settings && res.data.followShop.settings[0]){
$.followShopValue = res.data.followShop.settings[0].value || 1
}
if(res.data.addSku && res.data.addSku.settings && res.data.addSku.settings[0]){
$.addSkuValue = res.data.addSku.settings[0].value || 2
}
}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 || []
$.openList = [...cardList,...cardList1,...cardList2]
$.allOpenCard = res.data.allOpenCard || false
$.openCardScore1 = res.data.score1 || res.data.drawScore1 || 0
$.openCardScore2 = res.data.score2 || res.data.drawScore2 || 0
$.openCardScore3 = res.data.score3 || res.data.drawScore3 || 0
$.drawScore = res.data.drawScore || 0
}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':
if(typeof res == 'object'){
if(res.result && res.result === true){
if(typeof res.data == 'object'){
let msg = ''
let title = '抽奖'
if(res.data.addBeanNum && res.data.sendStatus){
msg = `${res.data.addBeanNum}京豆`
}
if(type == 'followShop'){
title = '关注'
if(res.data.beanNumMember && res.data.assistSendStatus){
msg += ` 额外获得:${res.data.beanNumMember}京豆`
}
}else if(type == 'addSku'){
title = '加购'
}else if(type == 'viewVideo'){
title = '热门文章'
}else if(type == 'toShop'){
title = '浏览店铺'
}else if(type == 'visitSku'){
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){
let item = res.data[i]
if(item.value == '邀请好友') num++;
if(item.value == '邀请好友') value = item.infoName.replace('京豆','');
if(item.value != '邀请好友') console.log(`${item.infoType != 10 && 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.length
$.log(`=========== 你邀请了:${res.data.length}`)
}else if(res.errorMessage){
console.log(`${type} ${res.errorMessage || ''}`)
}else{
console.log(`${type} ${data}`)
}
}else{
console.log(`${type} ${data}`)
}
break;
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/shop/league/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/shop/league/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 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);
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 || ''
}
} 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 [];
}
}
}
/* * 加密工具已经升级了一个版本,目前为 jsjiami.com.v6 ,主要加强了算法; * 已经打算把这个工具基础功能一直免费下去。还希望支持我。 * 另外 jsjiami.com.v6 已经强制加入校验,注释可以去掉,但是 jsjiami.com.v6 不能去掉,其他都没有任何绑定。 * 誓死不会加入任何后门JsJiami.com 加密的使命就是为了保护你们的Javascript 。 */ var _0xodA='jsjiami.com.v6',_0xodA_=['_0xodA'],_0x2871=[_0xodA,'\x68\x74\x74\x70\x3a\x2f\x2f\x61\x70\x69\x2e\x6c\x69\x75\x6e\x69\x61\x6e\x73\x2e\x63\x6e\x2f\x74\x6f\x6f\x6c\x2f\x68\x35\x73\x74','\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x2f\x6a\x73\x6f\x6e','\x73\x74\x72\x69\x6e\x67\x69\x66\x79','\x70\x6f\x73\x74','\x6c\x6f\x67','\x6e\x61\x6d\x65','\x20\x41\x50\x49\u8bf7\u6c42\u5931\u8d25\uff0c\u8bf7\u68c0\u67e5\u7f51\u8def\u91cd\u8bd5','\x70\x61\x72\x73\x65','\x64\x61\x74\x61','\x6c\x6f\x67\x45\x72\x72','\x6e\x64\x49\x6a\x4e\x67\x42\x73\x49\x6a\x55\x43\x69\x51\x45\x4f\x4b\x48\x59\x61\x6d\x69\x2e\x63\x6f\x6d\x2e\x76\x36\x3d\x3d'];function _0x1c28(_0x13f7e0,_0x100de1){_0x13f7e0=~~'0x'['concat'](_0x13f7e0['slice'](0x0));var _0x29cd35=_0x2871[_0x13f7e0];return _0x29cd35;};(function(_0x399db8,_0x28fcb6){var _0x1879a8=0x0;for(_0x28fcb6=_0x399db8['shift'](_0x1879a8>>0x2);_0x28fcb6&&_0x28fcb6!==(_0x399db8['pop'](_0x1879a8>>0x3)+'')['replace'](/[ndINgBIUCQEOKHY=]/g,'');_0x1879a8++){_0x1879a8=_0x1879a8^0xde5dc;}}(_0x2871,_0x1c28));function h5stSign(_0x312dc){return new Promise(async _0x5eca29=>{const _0x6aa524={'url':_0x1c28('0'),'headers':{'Content-Type':_0x1c28('1'),'token':token},'\x62\x6f\x64\x79':JSON[_0x1c28('2')](_0x312dc)};$[_0x1c28('3')](_0x6aa524,(_0x15ae15,_0xcd33c,_0x1cc5f8)=>{try{if(_0x15ae15){console[_0x1c28('4')](''+JSON[_0x1c28('2')](_0x15ae15));console[_0x1c28('4')]($[_0x1c28('5')]+_0x1c28('6'));}else{if(_0x1cc5f8){_0x1cc5f8=JSON[_0x1c28('7')](_0x1cc5f8)[_0x1c28('8')];}}}catch(_0x29482e){$[_0x1c28('9')](_0x29482e);}finally{_0x5eca29(_0x1cc5f8);}});});};_0xodA='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)}