2022-02-11 16:56:14 +08:00
/ *
财富岛珍珠兑换
cron 59 0 - 23 / 1 * * * jd _cfd _pearl _ex . js
更新时间 : 2021 - 9 - 11
活动入口 : 京喜APP - 我的 - 京喜财富岛 - 最左侧建筑
* /
const $ = new Env ( "财富岛珍珠兑换" ) ;
const JD _API _HOST = "https://m.jingxi.com/" ;
const notify = require ( './sendNotify' )
const jdCookieNode = require ( "./jdCookie.js" )
let cookiesArr = [ ] , cookie = '' , token = '' ;
const UA = process . env . JX _USER _AGENT || ` jdpingou;iPhone;4.13.0;14.4.2; ${ randomString ( 40 ) } ;network/wifi;model/iPhone10,2;appBuild/100609;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/ ${ Math . random * 98 + 1 } ;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 `
if ( $ . isNode ( ) ) {
Object . keys ( jdCookieNode ) . forEach ( ( item ) => {
cookiesArr . push ( jdCookieNode [ item ] )
} )
if ( process . env . JD _DEBUG && process . env . JD _DEBUG === 'false' ) console . log = ( ) => { } ;
if ( JSON . stringify ( process . env ) . indexOf ( 'GITHUB' ) > - 1 ) process . exit ( 0 ) ;
} else {
cookiesArr = [ $ . getdata ( 'CookieJD' ) , $ . getdata ( 'CookieJD2' ) , ... jsonParse ( $ . getdata ( 'CookiesJD' ) || "[]" ) . map ( item => item . cookie ) ] . filter ( item => ! ! item ) ;
}
2022-02-11 20:42:38 +08:00
$ . appId = "92a36" ;
2022-02-11 16:56:14 +08:00
! ( async ( ) => {
console . log ( ` \n 兑换红包环境变量: export ddwVirHb='1' 请自行设置兑换金额 \n ` ) ;
console . log ( ` 默认红包余额大于0.2元就参与兑换 \n ` ) ;
if ( ! cookiesArr [ 0 ] ) {
$ . msg ( $ . name , '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取' , 'https://bean.m.jd.com/bean/signIndex.action' , { "open-url" : "https://bean.m.jd.com/bean/signIndex.action" } ) ;
return ;
}
$ . CryptoJS = $ . isNode ( ) ? require ( 'crypto-js' ) : CryptoJS ;
await requestAlgo ( ) ;
await $ . wait ( 1000 )
for ( let i = 0 ; i < cookiesArr . length ; i ++ ) {
if ( cookiesArr [ i ] ) {
cookie = cookiesArr [ i ] ;
$ . UserName = decodeURIComponent ( cookie . match ( /pt_pin=([^; ]+)(?=;?)/ ) && cookie . match ( /pt_pin=([^; ]+)(?=;?)/ ) [ 1 ] ) ;
$ . index = i + 1 ;
$ . nickName = '' ;
$ . isLogin = true ;
console . log ( ` \n ******开始【京东账号 ${ $ . index } 】 ${ $ . nickName || $ . UserName } ********* \n ` ) ;
$ . info = { }
await perl _auto ( )
console . log ( ` 请求兑换API后时间 ${ ( new Date ( ) ) . Format ( "yyyy-MM-dd hh:mm:ss | S" ) } ` )
}
}
} ) ( )
. catch ( ( e ) => $ . logErr ( e ) )
. finally ( ( ) => $ . done ( ) ) ;
async function wait ( starttime = process . env . pearl _wait || 60 ) {
const nowtime = new Date ( ) . Format ( "s.S" )
if ( $ . index == 1 && nowtime < starttime ) {
const sleeptime = ( starttime - nowtime ) * 1000 ;
console . log ( ` 等待时间 ${ sleeptime / 1000 } ` ) ;
await $ . wait ( sleeptime )
}
}
async function perl _auto ( ) {
try {
await refresh _perl ( )
if ( ! $ . perl _data ) {
console . error ( '$.perl_data not found' )
return
}
const ddwVirHb = $ . perl _data . ddwVirHb
console . log ( '当前余额:' , ddwVirHb / 100 )
let prizes = [ ... $ . perl _data . exchangeInfo . prizeInfo , $ . perl _data . exchangeInfo . randHbPrizeInfo ] . filter ( prize => {
const strPrizeName = prize . strPrizeName || '随机红包'
let flag = ! prize . Condition . some ( condition => {
const flag = condition . reach != 1
if ( flag ) {
console . log ( strPrizeName , ': ' , condition . descr , ' 未达到' )
}
return flag
} )
if ( flag ) {
if ( prize . dwState == 3 ) {
flag = false
console . log ( strPrizeName , '已兑换过' )
} else if ( ! prize . strPrizeName || prize . ddwVirHb <= ( process . env . ddwVirHb || 0.2 ) * 100 ) {
flag = false
console . log ( strPrizeName , '不大于' , ( process . env . ddwVirHb || 0.2 ) , '元 过滤' )
} else if ( prize . dwState == 1 ) {
console . log ( strPrizeName , '当前缺货,但依然兑换.' )
} else {
console . log ( strPrizeName , '有货,一会兑换' )
}
}
return flag
} )
if ( ! prizes . length ) {
console . log ( '无红包满足条件,结束' )
return
}
if ( prizes . length > 1 ) {
prizes . sort ( ( x , y ) => {
ddwVirHb _x = x . ddwVirHb || 0
ddwVirHb _y = y . ddwVirHb || 0
if ( ddwVirHb _x > ddwVirHb _y ) {
return - 1
}
if ( ddwVirHb _x < ddwVirHb _y ) {
return 1 ;
}
return 0
} )
}
// console.debug('prizes:',prizes)
2022-02-11 20:42:38 +08:00
await wait ( )
2022-02-11 16:56:14 +08:00
for ( let i = 0 ; i < prizes . length ; i ++ ) {
const prize = prizes [ i ]
console . log ( '兑换面额:' , prize . strPrizeName || '随机红包' )
await perl _rp ( prize . dwLvl , prize . ddwVirHb ? 0 : 1 , prize . ddwVirHb , prize . strPool )
await $ . wait ( 3000 )
}
} catch ( e ) {
$ . logErr ( e )
}
}
async function perl _rp ( dwLvl , dwIsRandHb , ddwVirHb , strPoolName ) {
return new Promise ( async ( resolve ) => {
$ . get ( taskUrl _perl ( 'user/ExchangePearlHb' , dwLvl , dwIsRandHb , ddwVirHb , strPoolName ) , async ( err , resp , data ) => {
try {
if ( err ) {
console . error ( ` ${ JSON . stringify ( err ) } ` )
console . error ( ` ${ $ . name } perl_rp API请求失败, 请检查网路重试 ` )
} else {
console . debug ( 'perl_rp:' , data )
data = JSON . parse ( data ) ;
}
} catch ( e ) {
$ . logErr ( e , resp ) ;
} finally {
resolve ( ) ;
}
} )
} )
}
async function refresh _perl ( ) {
return new Promise ( async ( resolve ) => {
const timestamp = Date . now ( )
let url = ` ${ JD _API _HOST } jxbfd/user/ExchangePearlState?__t= ${ timestamp + 2 } &strZone=jxbfd&dwExchangeType=undefined&_ste=1 ` ;
url += ` &h5st= ${ decrypt ( timestamp , '' , '' , url ) } &_= ${ timestamp + 2 } &sceneval=2&g_login_type=1 ` ;
// console.debug('taskUrl_perl:',url)
$ . get ( {
url ,
headers : {
Cookie : cookie ,
Accept : "*/*" ,
Connection : "keep-alive" ,
Referer : "https://st.jingxi.com/" ,
"Accept-Encoding" : "gzip, deflate, br" ,
Host : "m.jingxi.com" ,
"User-Agent" : UA ,
"Accept-Language" : "zh-cn" ,
} ,
timeout : 10000
} , async ( err , resp , data ) => {
try {
if ( err ) {
console . error ( ` ${ JSON . stringify ( err ) } ` )
console . error ( ` ${ $ . name } refresh_rp API请求失败, 请检查网路重试 ` )
} else {
console . debug ( 'refresh_perl:' , data )
$ . perl _data = JSON . parse ( data )
$ . dwExchangeType = $ . perl _data . dwExchangeType
}
} catch ( e ) {
$ . logErr ( e , resp ) ;
} finally {
resolve ( ) ;
}
} )
} )
}
function taskUrl _perl ( function _path , dwLvl , dwIsRandHb , ddwVirHb , strPoolName ) {
const timestamp = Date . now ( )
let url = ` ${ JD _API _HOST } jxbfd/ ${ function _path } ?__t= ${ timestamp + 2 } &strZone=jxbfd&dwLvl= ${ dwLvl } &dwIsRandHb= ${ dwIsRandHb } &ddwVirHb= ${ ddwVirHb } &strPoolName= ${ strPoolName } &dwExchangeType= ${ $ . dwExchangeType } &_stk=__t%2CddwVirHb%2CdwExchangeType%2CdwIsRandHb%2CdwLvl%2CstrPoolName%2CstrZone&_ste=1 ` ;
url += ` &h5st= ${ decrypt ( timestamp , '' , '' , url ) } &_= ${ timestamp + 2 } &sceneval=2&g_login_type=1 ` ;
// console.debug('taskUrl_perl:',url)
return {
url ,
headers : {
Cookie : cookie ,
Accept : "*/*" ,
Connection : "keep-alive" ,
Referer : "https://st.jingxi.com/" ,
"Accept-Encoding" : "gzip, deflate, br" ,
Host : "m.jingxi.com" ,
"User-Agent" : UA ,
"Accept-Language" : "zh-cn" ,
} ,
timeout : 10000
}
}
function jsonParse ( str ) {
if ( typeof str == "string" ) {
try {
return JSON . parse ( str ) ;
} catch ( e ) {
console . log ( e ) ;
$ . msg ( $ . name , '' , '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie' )
return [ ] ;
}
}
}
/ *
修改时间戳转换函数 , 京喜工厂原版修改
* /
Date . prototype . Format = function ( fmt ) {
var e ,
n = this , d = fmt , l = {
"M+" : n . getMonth ( ) + 1 ,
"d+" : n . getDate ( ) ,
"D+" : n . getDate ( ) ,
"h+" : n . getHours ( ) ,
"H+" : n . getHours ( ) ,
"m+" : n . getMinutes ( ) ,
"s+" : n . getSeconds ( ) ,
"w+" : n . getDay ( ) ,
"q+" : Math . floor ( ( n . getMonth ( ) + 3 ) / 3 ) ,
"S+" : n . getMilliseconds ( )
} ;
/(y+)/i . test ( d ) && ( d = d . replace ( RegExp . $1 , "" . concat ( n . getFullYear ( ) ) . substr ( 4 - RegExp . $1 . length ) ) ) ;
for ( var k in l ) {
if ( new RegExp ( "(" . concat ( k , ")" ) ) . test ( d ) ) {
var t , a = "S+" === k ? "000" : "00" ;
d = d . replace ( RegExp . $1 , 1 == RegExp . $1 . length ? l [ k ] : ( "" . concat ( a ) + l [ k ] ) . substr ( "" . concat ( l [ k ] ) . length ) )
}
}
return d ;
}
async function requestAlgo ( ) {
2022-02-11 20:42:38 +08:00
$ . fingerprint = await generateFp ( ) ;
const options = {
"url" : ` https://cactus.jd.com/request_algo?g_ty=ajax ` ,
"headers" : {
'Authority' : 'cactus.jd.com' ,
'Pragma' : 'no-cache' ,
'Cache-Control' : 'no-cache' ,
'Accept' : 'application/json' ,
'User-Agent' : 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1' ,
'Content-Type' : 'application/json' ,
'Origin' : 'https://st.jingxi.com' ,
'Sec-Fetch-Site' : 'cross-site' ,
'Sec-Fetch-Mode' : 'cors' ,
'Sec-Fetch-Dest' : 'empty' ,
'Referer' : 'https://st.jingxi.com/' ,
'Accept-Language' : 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7'
} ,
'body' : JSON . stringify ( {
"version" : "3.0" ,
"fp" : $ . fingerprint ,
"appId" : $ . appId . toString ( ) ,
"timestamp" : Date . now ( ) ,
"platform" : "web" ,
"expandParams" : ""
} )
}
return new Promise ( async resolve => {
$ . post ( options , ( err , resp , data ) => {
try {
if ( err ) {
console . log ( ` ${ JSON . stringify ( err ) } ` )
console . log ( ` request_algo 签名参数API请求失败, 请检查网路重试 ` )
} else {
if ( data ) {
// console.log(data);
data = JSON . parse ( data ) ;
if ( data [ 'status' ] === 200 ) {
$ . token = data . data . result . tk ;
let enCryptMethodJDString = data . data . result . algo ;
if ( enCryptMethodJDString ) $ . enCryptMethodJD = new Function ( ` return ${ enCryptMethodJDString } ` ) ( ) ;
console . log ( ` 获取签名参数成功! ` )
console . log ( ` fp: ${ $ . fingerprint } ` )
console . log ( ` token: ${ $ . token } ` )
console . log ( ` enCryptMethodJD: ${ enCryptMethodJDString } ` )
} else {
console . log ( ` fp: ${ $ . fingerprint } ` )
console . log ( 'request_algo 签名参数API请求失败:' )
}
} else {
console . log ( ` 京东服务器返回空数据 ` )
}
}
} catch ( e ) {
$ . logErr ( e , resp )
} finally {
resolve ( ) ;
2022-02-11 16:56:14 +08:00
}
2022-02-11 20:42:38 +08:00
} )
2022-02-11 16:56:14 +08:00
} )
}
function decrypt ( time , stk , type , url ) {
stk = stk || ( url ? getUrlData ( url , '_stk' ) : '' )
if ( stk ) {
const timestamp = new Date ( time ) . Format ( "yyyyMMddhhmmssSSS" ) ;
let hash1 = '' ;
if ( $ . fingerprint && $ . token && $ . enCryptMethodJD ) {
hash1 = $ . enCryptMethodJD ( $ . token , $ . fingerprint . toString ( ) , timestamp . toString ( ) , $ . appId . toString ( ) , $ . CryptoJS ) . toString ( $ . CryptoJS . enc . Hex ) ;
} else {
const random = '5gkjB6SpmC9s' ;
$ . token = ` tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc ` ;
$ . fingerprint = 5287160221454703 ;
const str = ` ${ $ . token } ${ $ . fingerprint } ${ timestamp } ${ $ . appId } ${ random } ` ;
hash1 = $ . CryptoJS . SHA512 ( str , $ . token ) . toString ( $ . CryptoJS . enc . Hex ) ;
}
let st = '' ;
stk . split ( ',' ) . map ( ( item , index ) => {
st += ` ${ item } : ${ getUrlData ( url , item ) } ${ index === stk . split ( ',' ) . length - 1 ? '' : '&' } ` ;
} )
const hash2 = $ . CryptoJS . HmacSHA256 ( st , hash1 . toString ( ) ) . toString ( $ . CryptoJS . enc . Hex ) ;
// console.log(`\nst:${st}`)
// console.log(`h5st:${["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat($.appId.toString()), "".concat(token), "".concat(hash2)].join(";")}\n`)
2022-02-11 20:42:38 +08:00
// return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2)].join(";"))
return encodeURIComponent ( [ "" . concat ( timestamp . toString ( ) ) , "" . concat ( $ . fingerprint . toString ( ) ) , "" . concat ( $ . appId . toString ( ) ) , "" . concat ( $ . token ) , "" . concat ( hash2 ) , "" . concat ( "3.0" ) , "" . concat ( time ) ] . join ( ";" ) )
} else {
return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d'
}
2022-02-11 16:56:14 +08:00
}
/ * *
* 获取url参数值
* @ param url
* @ param name
* @ returns { string }
* /
function getUrlData ( url , name ) {
if ( typeof URL !== "undefined" ) {
let urls = new URL ( url ) ;
let data = urls . searchParams . get ( name ) ;
return data ? data : '' ;
} else {
const query = url . match ( /\?.*/ ) [ 0 ] . substring ( 1 )
const vars = query . split ( '&' )
for ( let i = 0 ; i < vars . length ; i ++ ) {
const pair = vars [ i ] . split ( '=' )
if ( pair [ 0 ] === name ) {
// return pair[1];
return vars [ i ] . substr ( vars [ i ] . indexOf ( '=' ) + 1 ) ;
}
}
return ''
}
}
/ * *
* 模拟生成 fingerprint
* @ returns { string }
* /
function generateFp ( ) {
let e = "0123456789" ;
let a = 13 ;
let i = '' ;
for ( ; a -- ; )
i += e [ Math . random ( ) * e . length | 0 ] ;
return ( i + Date . now ( ) ) . slice ( 0 , 16 )
}
function randomString ( e ) {
e = e || 32 ;
let t = "0123456789abcdef" , a = t . length , n = "" ;
for ( let i = 0 ; i < e ; i ++ )
n += t . charAt ( Math . floor ( Math . random ( ) * a ) ) ;
return n
}
// 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" ] )