2022-03-21 12:12:44 +08:00
/ *
2022-03-21 12:51:16 +08:00
精致宅家 春尚焕新
2022-03-21 12:12:44 +08:00
* /
2022-03-21 12:51:16 +08:00
const $ = new Env ( "精致宅家 春尚焕新" ) ;
const jdCookieNode = $ . isNode ( ) ? require ( "./jdCookie.js" ) : "" ;
const notify = $ . isNode ( ) ? require ( "./sendNotify" ) : "" ;
let cookiesArr = [ ] , cookie = "" , message = "" ;
let ownCode = null ;
let authorCodeList = [ ] ;
2022-03-21 12:12:44 +08:00
if ( $ . isNode ( ) ) {
Object . keys ( jdCookieNode ) . forEach ( ( item ) => {
2022-03-21 12:51:16 +08:00
cookiesArr . push ( jdCookieNode [ item ] ) ;
} ) ;
if ( process . env . JD _DEBUG && process . env . JD _DEBUG === "false" ) console . log = ( ) => { } ;
2022-03-21 12:12:44 +08:00
} else {
2022-03-21 12:51:16 +08:00
let cookiesData = $ . getdata ( "CookiesJD" ) || "[]" ;
cookiesData = JSON . parse ( cookiesData ) ;
cookiesArr = cookiesData . map ( ( item ) => item . cookie ) ;
cookiesArr . reverse ( ) ;
cookiesArr . push ( ... [ $ . getdata ( "CookieJD2" ) , $ . getdata ( "CookieJD" ) ] ) ;
cookiesArr . reverse ( ) ;
cookiesArr = cookiesArr . filter ( ( item ) => ! ! item ) ;
2022-03-21 12:12:44 +08:00
}
! ( async ( ) => {
2022-03-21 12:51:16 +08:00
$ . getAuthorCodeListerr = false ;
2022-03-21 12:12:44 +08:00
if ( ! cookiesArr [ 0 ] ) {
2022-03-21 12:51:16 +08:00
$ . msg ( $ . name , "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取" , "https://bean.m.jd.com/bean/signIndex.action" , { "open-url" : "https://bean.m.jd.com/bean/signIndex.action" } ) ;
2022-03-21 12:12:44 +08:00
return ;
}
for ( let i = 0 ; i < cookiesArr . length ; i ++ ) {
2022-03-21 12:51:16 +08:00
if ( cookiesArr [ i ] ) {
cookie = cookiesArr [ i ] ;
originCookie = cookiesArr [ i ] ;
newCookie = "" ;
$ . UserName = decodeURIComponent ( cookie . match ( /pt_pin=(.+?);/ ) && cookie . match ( /pt_pin=(.+?);/ ) [ 1 ] ) ;
2022-03-21 12:12:44 +08:00
$ . index = i + 1 ;
2022-03-21 12:51:16 +08:00
$ . isLogin = true ;
$ . nickName = "" ;
await checkCookie ( ) ;
console . log ( ` \n ******开始【京东账号 ${ $ . index } 】 ${ $ . nickName || $ . UserName } ********* \n ` ) ;
if ( ! $ . isLogin ) {
$ . msg ( $ . name , ` 【提示】cookie已失效 ` , ` 京东账号 ${ $ . index } ${ $ . nickName || $ . UserName } \n 请重新登录获取 \n https://bean.m.jd.com/bean/signIndex.action ` , { "open-url" : "https://bean.m.jd.com/bean/signIndex.action" } ) ;
// if ($.isNode()) {
// await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`);
// }
continue ;
}
$ . bean = 0 ;
$ . ADID = getUUID ( "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" , 1 ) ;
$ . UUID = getUUID ( "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ) ;
// authorCodeList = [
// "3f8b04988ff24da59980aa1efb1a4d25",
// ];
// $.authorCode = authorCodeList[random(0, authorCodeList.length)];
$ . authorCode = ownCode ? ownCode : '62bedbad01d345dfbfb4904a53a147a2'
$ . authorNum = ` ${ random ( 1000000 , 9999999 ) } ` ;
$ . randomCode = random ( 1000000 , 9999999 ) ;
$ . activityId = "dz6054741f4dfaa17788a046da6c1c" ;
$ . activityShopId = "1000351442" ;
$ . activityUrl = ` https://lzdz1-isv.isvjcloud.com/dingzhi/womenWear/union/activity/ ${ $ . authorNum } ?activityId= ${ $ . activityId } &shareUuid= ${ encodeURIComponent ( $ . authorCode ) } &adsource=null&shareuserid4minipg= ${ encodeURIComponent ( $ . secretPin ) } &shopid= ${ $ . activityShopId } &sid=&un_area= ` ;
await member ( ) ;
await $ . wait ( 1000 ) ;
if ( $ . bean > 0 ) {
message += ` \n 【京东账号 ${ $ . index } 】 ${ $ . nickName || $ . UserName } \n └ 获得 ${ $ . bean } 京豆。 ` ;
}
2022-03-21 12:12:44 +08:00
}
}
2022-03-21 12:51:16 +08:00
if ( message !== "" ) {
if ( $ . isNode ( ) ) {
await notify . sendNotify ( $ . name , message , "" , ` \n ` ) ;
} else {
$ . msg ( $ . name , "有点儿收获" , message ) ;
}
2022-03-21 12:12:44 +08:00
}
} ) ( )
2022-03-21 12:51:16 +08:00
. catch ( ( e ) => {
$ . log ( "" , ` ❌ ${ $ . name } , 失败! 原因: ${ e } ! ` , "" ) ;
} )
. finally ( ( ) => {
$ . done ( ) ;
} ) ;
2022-03-21 12:12:44 +08:00
2022-03-21 12:51:16 +08:00
async function member ( ) {
$ . token = null ;
$ . secretPin = null ;
$ . openCardActivityId = null ;
lz _cookie = { } ;
await getFirstLZCK ( ) ;
await getToken ( ) ;
await task ( "dz/common/getSimpleActInfoVo" , ` activityId= ${ $ . activityId } ` , 1 ) ;
if ( $ . token ) {
await getMyPing ( ) ;
if ( $ . secretPin ) {
console . log ( "去助力 -> " + $ . authorCode ) ;
await taskaccessLog ( "common/accessLogWithAD" , ` venderId= ${ $ . activityShopId } &code=99&pin= ${ encodeURIComponent ( $ . secretPin ) } &activityId= ${ $ . activityId } &pageUrl= ${ $ . activityUrl } &subType=app&adSource=null ` , 1 ) ;
await task ( "wxActionCommon/getUserInfo" , ` pin= ${ encodeURIComponent ( $ . secretPin ) } ` , 1 ) ;
if ( $ . index === 1 ) {
await task ( "/womenWear/union/activityContent" , ` activityId= ${ $ . activityId } &pin= ${ encodeURIComponent ( $ . secretPin ) } &pinImg=&nick= ${ encodeURIComponent ( $ . pin ) } &shareUuid= ${ encodeURIComponent ( $ . authorCode ) } ` , 0 , 1 ) ;
} else {
await task ( "/womenWear/union/activityContent" , ` activityId= ${ $ . activityId } &pin= ${ encodeURIComponent ( $ . secretPin ) } &pinImg=&nick= ${ encodeURIComponent ( $ . pin ) } &shareUuid= ${ encodeURIComponent ( $ . authorCode ) } ` ) ;
2022-03-21 12:12:44 +08:00
}
2022-03-21 12:51:16 +08:00
$ . log ( "关注店铺" ) ;
await task ( "womenWear/union/saveTask" , ` activityId= ${ $ . activityId } &actorUuid= ${ $ . actorUuid } &pin= ${ encodeURIComponent ( $ . secretPin ) } &taskType=23&taskValue=1&shareUuid= ${ encodeURIComponent ( $ . authorCode ) } ` ) ;
await task ( "womenWear/union/saveTask" , ` activityId= ${ $ . activityId } &actorUuid= ${ $ . actorUuid } &pin= ${ encodeURIComponent ( $ . secretPin ) } &taskType=21&taskValue=&shareUuid= ${ encodeURIComponent ( $ . authorCode ) } ` ) ;
await task ( "taskact/common/drawContent" , ` activityId= ${ $ . activityId } &pin= ${ encodeURIComponent ( $ . secretPin ) } ` ) ;
await task ( "womenWear/union/initOpenCard" , ` pin= ${ encodeURIComponent ( $ . secretPin ) } &activityId= ${ $ . activityId } &shareUuid= ${ encodeURIComponent ( $ . authorCode ) } ` ) ;
$ . log ( "加入店铺会员" ) ;
if ( $ . openCardList ) {
for ( const vo of $ . openCardList ) {
// console.log(vo)
$ . log ( ` >>> 去加入 ${ vo . name } ${ vo . venderId } ` ) ;
if ( vo . openStatus == 0 ) {
await getShopOpenCardInfo ( { venderId : ` ${ vo . venderId } ` , channel : "401" } , vo . venderId ) ;
await bindWithVender ( { venderId : ` ${ vo . venderId } ` , bindByVerifyCodeFlag : 1 , registerExtend : { } , writeChildFlag : 0 , activityId : $ . openCardActivityId , channel : 401 } , vo . venderId ) ;
await $ . wait ( 1000 ) ;
} else {
$ . log ( ` >>> 已经是会员 ` ) ;
}
2022-03-21 12:12:44 +08:00
}
2022-03-21 12:51:16 +08:00
} else {
$ . log ( "没有获取到对应的任务。\n" ) ;
2022-03-21 12:12:44 +08:00
}
2022-03-21 12:51:16 +08:00
await task ( "womenWear/union/initOpenCard" , ` pin= ${ encodeURIComponent ( $ . secretPin ) } &activityId= ${ $ . activityId } &shareUuid= ${ encodeURIComponent ( $ . authorCode ) } ` ) ;
console . log ( "去助力 -> " + $ . authorCode ) ;
await task ( "linkgame/assist/status" , ` activityId= ${ $ . activityId } &pin= ${ encodeURIComponent ( $ . secretPin ) } &shareUuid= ${ $ . authorCode } ` ) ;
await task ( "linkgame/assist" , ` activityId= ${ $ . activityId } &pin= ${ encodeURIComponent ( $ . secretPin ) } &shareUuid= ${ $ . authorCode } ` ) ;
await task ( "womenWear/union/draw" , ` pin= ${ encodeURIComponent ( $ . secretPin ) } &activityId= ${ $ . activityId } ` ) ;
// await task('linkgame/help/list', `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`)
// await task('linkgame/task/info', `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`)
// console.log('任务 -> ')
// await $.wait(2000)
// await task('opencard/addCart', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`);
// await $.wait(2000)
// await task('linkgame/sendAllCoupon', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`);
// await getFirstLZCK()
// await getToken();
// console.log('抽奖 -> ')
// await $.wait(2000)
// await task('linkgame/draw', `activityId=${$.activityId}&actorUuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}`);
// console.log('100 -> ')
// await getFirstLZCK()
// await getToken();
// await $.wait(2000)
// await task('linkgame/draw/record', `activityId=${$.activityId}&actorUuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}`);
2022-03-21 12:12:44 +08:00
}
}
}
2022-03-21 12:51:16 +08:00
function task ( function _id , body , isCommon = 0 , own = 0 ) {
return new Promise ( ( resolve ) => {
$ . post ( taskUrl ( function _id , body , isCommon ) , async ( err , resp , data ) => {
try {
if ( err ) {
$ . log ( err ) ;
} else {
if ( data ) {
data = JSON . parse ( data ) ;
if ( data . result ) {
switch ( function _id ) {
case "dz/common/getSimpleActInfoVo" :
$ . jdActivityId = data . data . jdActivityId ;
$ . venderId = data . data . venderId ;
$ . activityType = data . data . activityType ;
// console.log($.venderId)
break ;
case "wxActionCommon/getUserInfo" :
break ;
case "/womenWear/union/activityContent" :
if ( ! data . data . hasEnd ) {
$ . log ( ` 开启【 ${ data . data . activityName } 】活动 ` ) ;
$ . log ( "-------------------" ) ;
if ( $ . index === 1 ) {
ownCode = data . data . actorUuid ;
console . log ( ownCode ) ;
}
$ . actorUuid = data . data . actorUuid ;
} else {
$ . log ( "活动已经结束" ) ;
}
break ;
case "womenWear/union/initOpenCard" :
$ . openCardList = data . data . openInfo ;
$ . openCardStatus = data . data . allOpenCard ;
// console.log(data)
break ;
case "womenWear/union/saveTask" :
console . log ( data ) ;
break ;
case "womenWear/union/draw" :
console . log ( data ) ;
break ;
case "opencard/addCart" :
if ( data . data ) {
console . log ( data . data ) ;
}
break ;
case "linkgame/sendAllCoupon" :
if ( data . data ) {
console . log ( data . data ) ;
}
break ;
case "interaction/write/writePersonInfo" :
console . log ( data ) ;
break ;
case "linkgame/draw" :
console . log ( data ) ;
break ;
case "linkgame/draw/record" :
console . log ( data . data ) ;
break ;
case "linkgame/assist/status" :
$ . log ( JSON . stringify ( data ) ) ;
break ;
case "linkgame/assist" :
$ . log ( JSON . stringify ( data ) ) ;
break ;
case "opencard/help/list" :
$ . log ( JSON . stringify ( data ) ) ;
break ;
default :
// $.log(JSON.stringify(data))
break ;
2022-03-21 12:12:44 +08:00
}
2022-03-21 12:51:16 +08:00
} else {
// $.log(JSON.stringify(data))
2022-03-21 12:12:44 +08:00
}
} else {
2022-03-21 12:51:16 +08:00
// $.log("京东没有返回数据")
2022-03-21 12:12:44 +08:00
}
}
2022-03-21 12:51:16 +08:00
} catch ( error ) {
$ . log ( error ) ;
} finally {
resolve ( ) ;
2022-03-21 12:12:44 +08:00
}
2022-03-21 12:51:16 +08:00
} ) ;
} ) ;
}
function taskaccessLog ( function _id , body , isCommon = 0 ) {
return new Promise ( ( resolve ) => {
$ . post ( taskUrl ( function _id , body , isCommon ) , async ( err , resp , data ) => {
try {
if ( err ) {
$ . log ( err ) ;
} else {
// console.log(resp);
if ( resp [ "headers" ] [ "set-cookie" ] ) {
cookie = ` ${ originCookie } ; ` ;
for ( let sk of resp [ "headers" ] [ "set-cookie" ] ) {
lz _cookie [ sk . split ( ";" ) [ 0 ] . substr ( 0 , sk . split ( ";" ) [ 0 ] . indexOf ( "=" ) ) ] = sk . split ( ";" ) [ 0 ] . substr ( sk . split ( ";" ) [ 0 ] . indexOf ( "=" ) + 1 ) ;
2022-03-21 12:12:44 +08:00
}
2022-03-21 12:51:16 +08:00
for ( const vo of Object . keys ( lz _cookie ) ) {
cookie += vo + "=" + lz _cookie [ vo ] + ";" ;
2022-03-21 12:12:44 +08:00
}
}
}
2022-03-21 12:51:16 +08:00
} catch ( error ) {
console . log ( error ) ;
} finally {
resolve ( ) ;
2022-03-21 12:12:44 +08:00
}
2022-03-21 12:51:16 +08:00
} ) ;
} ) ;
2022-03-21 12:12:44 +08:00
}
2022-03-21 12:51:16 +08:00
function taskUrl ( function _id , body , isCommon ) {
return {
url : isCommon ? ` https://lzdz1-isv.isvjcloud.com/ ${ function _id } ` : ` https://lzdz1-isv.isvjcloud.com/dingzhi/ ${ function _id } ` ,
headers : {
Host : "lzdz1-isv.isvjcloud.com" ,
Accept : "application/json" ,
"X-Requested-With" : "XMLHttpRequest" ,
"Accept-Language" : "zh-cn" ,
"Accept-Encoding" : "gzip, deflate, br" ,
"Content-Type" : "application/x-www-form-urlencoded" ,
Origin : "https://lzdz1-isv.isvjcloud.com" ,
"User-Agent" : ` jdapp;iPhone;9.5.4;13.6; ${ $ . UUID } ;network/wifi;ADID/ ${ $ . ADID } ;model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1 ` ,
Connection : "keep-alive" ,
Referer : $ . activityUrl ,
Cookie : cookie ,
} ,
body : body ,
} ;
2022-03-21 12:12:44 +08:00
}
2022-03-21 12:51:16 +08:00
function getMyPing ( ) {
let opt = {
url : ` https://lzdz1-isv.isvjcloud.com/customer/getMyPing ` ,
headers : {
Host : "lzdz1-isv.isvjcloud.com" ,
Accept : "application/json" ,
"X-Requested-With" : "XMLHttpRequest" ,
"Accept-Language" : "zh-cn" ,
"Accept-Encoding" : "gzip, deflate, br" ,
"Content-Type" : "application/x-www-form-urlencoded" ,
Origin : "https://lzdz1-isv.isvjcloud.com" ,
"User-Agent" : ` jdapp;iPhone;9.5.4;13.6; ${ $ . UUID } ;network/wifi;ADID/ ${ $ . ADID } ;model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1 ` ,
Connection : "keep-alive" ,
Referer : $ . activityUrl ,
Cookie : cookie ,
} ,
body : ` userId= ${ $ . activityShopId } &token= ${ $ . token } &fromType=APP&riskType=1 ` ,
} ;
return new Promise ( ( resolve ) => {
$ . post ( opt , ( err , resp , data ) => {
2022-03-21 12:12:44 +08:00
try {
if ( err ) {
2022-03-21 12:51:16 +08:00
$ . log ( err ) ;
} else {
if ( resp [ "headers" ] [ "set-cookie" ] ) {
cookie = ` ${ originCookie } ` ;
if ( $ . isNode ( ) ) {
for ( let sk of resp [ "headers" ] [ "set-cookie" ] ) {
cookie = ` ${ cookie } ${ sk . split ( ";" ) [ 0 ] } ; ` ;
}
} else {
for ( let ck of resp [ "headers" ] [ "Set-Cookie" ] . split ( "," ) ) {
cookie = ` ${ cookie } ${ ck . split ( ";" ) [ 0 ] } ; ` ;
}
2022-03-21 12:12:44 +08:00
}
}
2022-03-21 12:51:16 +08:00
if ( resp [ "headers" ] [ "Set-Cookie" ] ) {
cookie = ` ${ originCookie } ` ;
if ( $ . isNode ( ) ) {
for ( let sk of resp [ "headers" ] [ "set-cookie" ] ) {
cookie = ` ${ cookie } ${ sk . split ( ";" ) [ 0 ] } ; ` ;
}
} else {
for ( let ck of resp [ "headers" ] [ "Set-Cookie" ] . split ( "," ) ) {
cookie = ` ${ cookie } ${ ck . split ( ";" ) [ 0 ] } ; ` ;
}
}
}
if ( data ) {
data = JSON . parse ( data ) ;
if ( data . result ) {
$ . log ( ` 你好: ${ data . data . nickname } ` ) ;
$ . pin = data . data . nickname ;
$ . secretPin = data . data . secretPin ;
cookie = ` ${ cookie } ;AUTH_C_USER= ${ data . data . secretPin } ` ;
} else {
$ . log ( data . errorMessage ) ;
}
} else {
$ . log ( "京东返回了空数据" ) ;
2022-03-21 12:12:44 +08:00
}
}
2022-03-21 12:51:16 +08:00
} catch ( error ) {
$ . log ( error ) ;
2022-03-21 12:12:44 +08:00
} finally {
resolve ( ) ;
}
2022-03-21 12:51:16 +08:00
} ) ;
} ) ;
2022-03-21 12:12:44 +08:00
}
2022-03-21 12:51:16 +08:00
function getFirstLZCK ( ) {
return new Promise ( ( resolve ) => {
$ . get (
{
url : $ . activityUrl ,
headers : {
"user-agent" : $ . isNode ( ) ? process . env . JD _USER _AGENT ? process . env . JD _USER _AGENT : require ( "./USER_AGENTS" ) . USER _AGENT : $ . getdata ( "JDUA" ) ? $ . getdata ( "JDUA" ) : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1" ,
} ,
} ,
( err , resp , data ) => {
try {
if ( err ) {
console . log ( err ) ;
} else {
if ( resp [ "headers" ] [ "set-cookie" ] ) {
cookie = ` ${ originCookie } ` ;
if ( $ . isNode ( ) ) {
for ( let sk of resp [ "headers" ] [ "set-cookie" ] ) {
cookie = ` ${ cookie } ${ sk . split ( ";" ) [ 0 ] } ; ` ;
}
} else {
for ( let ck of resp [ "headers" ] [ "Set-Cookie" ] . split ( "," ) ) {
cookie = ` ${ cookie } ${ ck . split ( ";" ) [ 0 ] } ; ` ;
}
}
}
if ( resp [ "headers" ] [ "Set-Cookie" ] ) {
cookie = ` ${ originCookie } ` ;
if ( $ . isNode ( ) ) {
for ( let sk of resp [ "headers" ] [ "set-cookie" ] ) {
cookie = ` ${ cookie } ${ sk . split ( ";" ) [ 0 ] } ; ` ;
}
} else {
for ( let ck of resp [ "headers" ] [ "Set-Cookie" ] . split ( "," ) ) {
cookie = ` ${ cookie } ${ ck . split ( ";" ) [ 0 ] } ; ` ;
}
}
}
}
} catch ( error ) {
console . log ( error ) ;
} finally {
resolve ( ) ;
}
2022-03-21 12:12:44 +08:00
}
2022-03-21 12:51:16 +08:00
) ;
} ) ;
2022-03-21 12:12:44 +08:00
}
2022-03-21 12:51:16 +08:00
function getToken ( ) {
let opt = {
url : ` https://api.m.jd.com/client.action?functionId=isvObfuscator ` ,
headers : {
Host : "api.m.jd.com" ,
"Content-Type" : "application/x-www-form-urlencoded" ,
Accept : "*/*" ,
Connection : "keep-alive" ,
Cookie : cookie ,
"User-Agent" : "JD4iPhone/167650 (iPhone; iOS 13.7; Scale/3.00)" ,
"Accept-Language" : "zh-Hans-CN;q=1" ,
"Accept-Encoding" : "gzip, deflate, br" ,
} ,
body : ` body=%7B%22url%22%3A%20%22https%3A//lzkj-isv.isvjcloud.com%22%2C%20%22id%22%3A%20%22%22%7D&uuid=hjudwgohxzVu96krv&client=apple&clientVersion=9.4.0&st=1620476162000&sv=111&sign=f9d1b7e3b943b6a136d54fe4f892af05 ` ,
} ;
return new Promise ( ( resolve ) => {
$ . post ( opt , ( err , resp , data ) => {
2022-03-21 12:12:44 +08:00
try {
2022-03-21 12:51:16 +08:00
if ( err ) {
$ . log ( err ) ;
} else {
if ( data ) {
data = JSON . parse ( data ) ;
if ( data . code === "0" ) {
$ . token = data . token ;
2022-03-21 12:12:44 +08:00
}
2022-03-21 12:51:16 +08:00
} else {
$ . log ( "京东返回了空数据" ) ;
2022-03-21 12:12:44 +08:00
}
}
2022-03-21 12:51:16 +08:00
} catch ( error ) {
$ . log ( error ) ;
2022-03-21 12:12:44 +08:00
} finally {
resolve ( ) ;
}
2022-03-21 12:51:16 +08:00
} ) ;
} ) ;
2022-03-21 12:12:44 +08:00
}
2022-03-21 12:51:16 +08:00
function random ( min , max ) {
return Math . floor ( Math . random ( ) * ( max - min ) ) + min ;
}
function getUUID ( format = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" , UpperCase = 0 ) {
return format . replace ( /[xy]/g , function ( c ) {
var r = ( Math . random ( ) * 16 ) | 0 ,
v = c == "x" ? r : ( r & 0x3 ) | 0x8 ;
if ( UpperCase ) {
uuid = v . toString ( 36 ) . toUpperCase ( ) ;
} else {
uuid = v . toString ( 36 ) ;
2022-03-21 12:12:44 +08:00
}
2022-03-21 12:51:16 +08:00
return uuid ;
} ) ;
}
function checkCookie ( ) {
const options = {
url : "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion" ,
headers : {
Host : "me-api.jd.com" ,
Accept : "*/*" ,
Connection : "keep-alive" ,
Cookie : cookie ,
"User-Agent" : "Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1" ,
"Accept-Language" : "zh-cn" ,
Referer : "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&" ,
"Accept-Encoding" : "gzip, deflate, br" ,
} ,
} ;
return new Promise ( ( resolve ) => {
$ . get ( options , ( err , resp , data ) => {
2022-03-21 12:12:44 +08:00
try {
2022-03-21 12:51:16 +08:00
if ( err ) {
$ . logErr ( err ) ;
} else {
if ( data ) {
data = JSON . parse ( data ) ;
if ( data . retcode === "1001" ) {
$ . isLogin = false ; //cookie过期
return ;
}
if ( data . retcode === "0" && data . data . hasOwnProperty ( "userInfo" ) ) {
$ . nickName = data . data . userInfo . baseInfo . nickname ;
}
} else {
$ . log ( "京东返回了空数据" ) ;
2022-03-21 12:12:44 +08:00
}
}
} catch ( e ) {
2022-03-21 12:51:16 +08:00
$ . logErr ( e ) ;
2022-03-21 12:12:44 +08:00
} finally {
resolve ( ) ;
}
2022-03-21 12:51:16 +08:00
} ) ;
} ) ;
2022-03-21 12:12:44 +08:00
}
// prettier-ignore
2022-03-21 12:51:16 +08:00
var _0xode = 'jsjiami.com.v6' , _0xode _ = [ ' _0xode' ] , _0x5bce = [ _0xode , '\x53\x45\x70\x6a\x54\x6b\x73\x3d' , '\x61\x6d\x4e\x52\x54\x33\x45\x3d' , '\x59\x6b\x5a\x7a\x53\x6b\x73\x3d' , '\x61\x30\x52\x55\x54\x47\x49\x3d' , '\x5a\x6d\x78\x76\x62\x33\x49\x3d' , '\x54\x6e\x70\x71\x64\x47\x30\x3d' , '\x63\x6d\x46\x75\x5a\x47\x39\x74' , '\x62\x47\x56\x75\x5a\x33\x52\x6f' , '\x59\x6d\x6c\x75\x5a\x46\x64\x70\x64\x47\x68\x57\x5a\x57\x35\x6b\x5a\x58\x4a\x74\x5a\x58\x4e\x7a\x59\x57\x64\x6c' , '\x62\x57\x56\x7a\x63\x32\x46\x6e\x5a\x51\x3d\x3d' , '\x65\x6d\x31\x51\x56\x45\x34\x3d' , '\x52\x57\x5a\x6a\x65\x6c\x4d\x3d' , '\x64\x33\x70\x49\x65\x47\x49\x3d' , '\x52\x30\x4a\x44\x65\x55\x30\x3d' , '\x4f\x47\x46\x6b\x5a\x6d\x49\x3d' , '\x61\x6d\x52\x66\x63\x32\x68\x76\x63\x46\x39\x74\x5a\x57\x31\x69\x5a\x58\x49\x3d' , '\x4f\x53\x34\x79\x4c\x6a\x41\x3d' , '\x61\x6d\x52\x7a\x61\x57\x64\x75\x4c\x6d\x4e\x6d' , '\x59\x58\x42\x77\x62\x47\x6c\x6a\x59\x58\x52\x70\x62\x32\x34\x76\x61\x6e\x4e\x76\x62\x67\x3d\x3d' , '\x61\x55\x4a\x43\x62\x30\x6f\x3d' , '\x63\x48\x64\x68\x59\x6d\x30\x3d' , '\x53\x57\x46\x44\x62\x46\x6b\x3d' , '\x5a\x47\x78\x6e\x55\x6d\x59\x3d' , '\x62\x32\x46\x4a\x55\x31\x59\x3d' , '\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x6a\x5a\x47\x34\x75\x62\x6e\x6f\x75\x62\x48\x55\x76\x5a\x32\x56\x30\x61\x44\x56\x7a\x64\x41\x3d\x3d' , '\x54\x6b\x64\x30\x59\x6b\x59\x3d' , '\x63\x47\x39\x7a\x64\x41\x3d\x3d' , '\x59\x58\x42\x77\x62\x48\x6b\x3d' , '\x64\x45\x6c\x78\x65\x45\x77\x3d' , '\x65\x6b\x46\x35\x65\x58\x55\x3d' , '\x5a\x56\x70\x42\x64\x55\x73\x3d' , '\x62\x45\x5a\x45\x62\x46\x59\x3d' , '\x5a\x30\x74\x56\x65\x6e\x49\x3d' , '\x59\x58\x42\x70\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74' , '\x4b\x69\x38\x71' , '\x61\x32\x56\x6c\x63\x43\x31\x68\x62\x47\x6c\x32\x5a\x51\x3d\x3d' , '\x65\x6d\x67\x74\x59\x32\x34\x3d' , '\x5a\x33\x70\x70\x63\x43\x77\x67\x5a\x47\x56\x6d\x62\x47\x46\x30\x5a\x53\x77\x67\x59\x6e\x49\x3d' , '\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x39\x68\x63\x48\x42\x70\x5a\x44\x31\x71\x5a\x46\x39\x7a\x61\x47\x39\x77\x58\x32\x31\x6c\x62\x57\x4a\x6c\x63\x69\x5a\x6d\x64\x57\x35\x6a\x64\x47\x6c\x76\x62\x6b\x6c\x6b\x50\x57\x64\x6c\x64\x46\x4e\x6f\x62\x33\x42\x50\x63\x47\x56\x75\x51\x32\x46\x79\x5a\x45\x6c\x75\x5a\x6d\x38\x6d\x59\x6d\x39\x6b\x65\x54\x30\x3d' , '\x52\x6c\x68\x70\x52\x48\x6b\x3d' , '\x63\x33\x52\x79\x61\x57\x35\x6e\x61\x57\x5a\x35' , '\x4a\x6d\x4e\x73\x61\x57\x56\x75\x64\x44\x31\x49\x4e\x53\x5a\x6a\x62\x47\x6c\x6c\x62\x6e\x52\x57\x5a\x58\x4a\x7a\x61\x57\x39\x75\x50\x54\x6b\x75\x4d\x69\x34\x77\x4a\x6e\x56\x31\x61\x57\x51\x39\x4f\x44\x67\x34\x4f\x44\x67\x3d' , '\x62\x57\x74\x4f\x59\x57\x4d\x3d' , '\x52\x32\x4e\x78\x61\x56\x63\x3d' , '\x54\x47\x70\x55\x63\x33\x41\x3d' , '\x61\x6d\x52\x68\x63\x48\x41\x37\x61\x56\x42\x6f\x62\x32\x35\x6c\x4f\x7a\x6b\x75\x4e\x53\x34\x30\x4f\x7a\x45\x7a\x4c\x6a\x59\x37' , '\x56\x56\x56\x4a\x52\x41\x3d\x3d' , '\x4f\x32\x35\x6c\x64\x48\x64\x76\x63\x6d\x73\x76\x64\x32\x6c\x6d\x61\x54\x74\x42\x52\x45\x6c\x45\x4c\x77\x3d\x3d' , '\x51\x55\x52\x4a\x52\x41\x3d\x3d' , ' \ x4f \ x32 \ x31 \ x76 \ x5a \ x47 \ x56 \ x73 \ x4c \ x32 \ x6c \ x51 \ x61 \ x47 \ x39 \ x75 \ x5a \ x54 \ x45 \ x77 \ x4c \ x44 \ x4d \ x37 \ x59 \ x57 \ x52 \ x6b \ x63 \ x6d \ x56 \ x7a \ x63 \ x32 \ x6c \ x6b \ x4c \ x7a \ x41 \ x37 \ x59 \ x58 \ x42 \ x77 \ x51 \ x6e \ x56 \ x70 \ x62 \ x47 \ x51 \ x76 \ x4d \ x54 \ x59 \ x33 \ x4e \ x6a \ x59 \ x34 \ x4f \ x32 \ x70 \ x6b \ x55 \ x33 \ x56 \ x77 \ x63 \ x47 \ x39 \ x79 \ x64 \ x45 \ x52 \ x68 \ x63 \ x6d \ x74 \ x4e \ x62 \ x32 \ x52 \ x6c \ x4c \ x7a \ x41 \ x37 \ x54 \ x57 \ x39 \ x36 \ x61 \ x57 \ x78 \ x73 \ x59 \ x53 \ x38 \ x31 \ x4c \ x6a \ x41 \ x67 \ x4b \ x47 \ x6c \ x51 \ x61 \ x47 \ x39 \ x75 \ x5a \ x54 \ x73 \ x67 \ x51 \ x31 \ x42 \ x56 \ x49 \ x47 \ x6c \ x51 \ x61 \ x47 \ x39 \ x75 \ x5a \ x53 \ x42 \ x50 \ x55 \ x79 \ x41 \ x78 \ x4d \ x31 \ x38 \ x32 \ x49 \ x47 \ x78 \ x70 \ x61 \ x32 \ x55 \ x67 \ x54 \ x57 \ x46 \ x6a \ x49 \ x45 \ x39 \ x54 \ x49 \ x46 \ x67 \ x70 \ x49 \ x45 \ x46 \ x77 \ x63 \ x47 \ x78 \ x6c \ x56 \ x32 \ x56 \ x69 \ x53 \ x32 \ x6c \ x30 \ x4c \ x7a \ x59 \ x77 \ x4e \ x53 \ x34 \ x78 \ x4c \ x6a \ x45 \ x31 \ x49 \ x43 \ x68 \ x4c \ x53 \ x46 \ x52 \ x4e \ x54 \ x43 \ x77 \ x67 \ x62 \ x47 \ x6c \ x72 \ x5a \ x53 \ x42 \ x48 \ x5a \ x57 \ x4e \ x72 \ x62 \ x79 \ x6b \ x67 \ x54 \ x57 \ x39 \ x69 \ x61 \ x57 \ x78 \ x6c \ x4c \ x7a \ x45 \ x31 \ x52 \ x54 \ x45 \ x30 \ x4f \ x44 \ x74 \ x7a \ x64 \ x58 \ x42 \ x77 \ x62 \ x33 \ x4a \ x30 \ x53 \ x6b \ x52 \ x54 \ x53 \ x46 \ x64 \ x4c \ x4c \ x7a \
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" ] )