mirror of https://github.com/KingRan/KR.git
3241 lines
116 KiB
JavaScript
3241 lines
116 KiB
JavaScript
/*
|
||
|
||
————————————————
|
||
如需开卡请设置环境变量[guaunknownTask_card5]为"true"
|
||
|
||
如需加购请设置环境变量[guaunknownTask_addSku5]为"true"
|
||
|
||
即时任务,无需cron,短期或者长期请参考活动规则设置cron
|
||
|
||
运动户外盲盒活动
|
||
============Quantumultx===============
|
||
[task_local]
|
||
#运动户外盲盒活动
|
||
31 5 * * * https://raw.githubusercontent.com/KingRan/JDJB/main/jd_hwmh.js, tag=运动户外盲盒活动, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true
|
||
*/
|
||
let guaopencard = "false"
|
||
let guaunknownTask_addSku = "false"
|
||
|
||
const $ = new Env('运动户外盲盒活动');
|
||
const jdCookieNode = $.isNode() ? require('./jdCookie.js') : '';
|
||
const notify = $.isNode() ? require('./sendNotify') : '';
|
||
//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);
|
||
}
|
||
guaopencard = $.isNode() ? (process.env.guaunknownTask_card5 ? process.env.guaunknownTask_card5 : `${guaopencard}`) : ($.getdata('guaunknownTask_card5') ? $.getdata('guaunknownTask_card5') : `${guaopencard}`);
|
||
guaopencard = $.isNode() ? (process.env.guaunknownTask_card_All ? process.env.guaunknownTask_card_All : `${guaopencard}`) : ($.getdata('guaunknownTask_card_All') ? $.getdata('guaunknownTask_card_All') : `${guaopencard}`);
|
||
guaunknownTask_addSku = $.isNode() ? (process.env.guaunknownTask_addSku5 ? process.env.guaunknownTask_addSku5 : `${guaunknownTask_addSku}`) : ($.getdata('guaunknownTask_addSku5') ? $.getdata('guaunknownTask_addSku5') : `${guaunknownTask_addSku}`);
|
||
guaunknownTask_addSku = $.isNode() ? (process.env.guaunknownTask_addSku_All ? process.env.guaunknownTask_addSku_All : `${guaunknownTask_addSku}`) : ($.getdata('guaunknownTask_addSku_All') ? $.getdata('guaunknownTask_addSku_All') : `${guaunknownTask_addSku}`);
|
||
allMessage = ""
|
||
message = ""
|
||
let UA = ''
|
||
let configCode = 'e71eadcf410d4fe5b79ea7b227488a2b'
|
||
let friendPin = 'mQfn3znPfj1+BNfpwBntyw=='
|
||
let toFriend = 0
|
||
$.temp = [];
|
||
|
||
const activeEndTime = '2022/01/06 00:00:00+08:00';//活动结束时间
|
||
let nowTime = new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000;
|
||
!(async () => {
|
||
if (!cookiesArr[0]) {
|
||
$.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {
|
||
"open-url": "https://bean.m.jd.com/"
|
||
});
|
||
return;
|
||
}
|
||
if (nowTime > new Date(activeEndTime).getTime()) {
|
||
//活动结束后弹窗提醒
|
||
$.msg($.name, '活动已结束', `请删除此脚本\n咱江湖再见`);
|
||
return
|
||
}
|
||
$.shareArr = []
|
||
console.log(`入口:\nhttps://3.cn/103-VBNoE`)
|
||
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
|
||
await getUA()
|
||
$.nickName = '';
|
||
console.log(`\n\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`);
|
||
await run();
|
||
if($.index == 1 && !$.pin) break
|
||
if($.outFlag) break
|
||
}
|
||
}
|
||
if(allMessage){
|
||
$.msg($.name, ``, `${allMessage}`);
|
||
if ($.isNode()){
|
||
await notify.sendNotify(`${$.name}`, `${allMessage}`);
|
||
}
|
||
}
|
||
})()
|
||
.catch((e) => $.logErr(e))
|
||
.finally(() => $.done())
|
||
|
||
|
||
async function run() {
|
||
try {
|
||
let arr = getBody($.UA,`https://h5.m.jd.com/babelDiy/Zeus/42CC2AdvzUnXheP1CmTXrm7vHYSp/index.html?code=${configCode}`)
|
||
$.fp = arr.fp
|
||
await getEid(arr)
|
||
toFriend = 0
|
||
$.bean = 0
|
||
if(!$.fp || !$.eid){
|
||
message += `获取活动信息失败!\n`
|
||
return
|
||
}
|
||
await getActivity()
|
||
$.taskList = []
|
||
$.pin = ''
|
||
await getMyTask(1)
|
||
let friendCount = 0
|
||
for(let i in $.taskList || []){
|
||
$.oneTask = $.taskList[i]
|
||
let title = ''
|
||
switch ($.oneTask.taskType) {
|
||
case 2:
|
||
title = '关注'
|
||
break;
|
||
case 3:
|
||
title = '浏览'
|
||
break;
|
||
case 4:
|
||
title = '加购'
|
||
break;
|
||
case 8:
|
||
title = '邀请'
|
||
break;
|
||
case 11:
|
||
title = '开通会员'
|
||
break;
|
||
}
|
||
console.log(`${title} ${$.oneTask.finishCount}/${$.oneTask.itemCount}`)
|
||
let num = $.oneTask.itemCount - $.oneTask.finishCount
|
||
if($.oneTask.taskType == 8){
|
||
friendCount = $.oneTask.finishCount
|
||
continue
|
||
}
|
||
if(num <= 0) continue
|
||
if($.oneTask.taskType == 4 && guaunknownTask_addSku+"" != "true") console.log('如需加购请设置环境变量[guaunknownTask_addSku5]为"true"')
|
||
if($.oneTask.taskType == 4 && guaunknownTask_addSku+"" != "true") continue
|
||
if($.oneTask.taskType == 11 && guaopencard+"" != "true") continue
|
||
if($.oneTask.taskType == 11 && guaopencard+"" != "true") console.log('如需开卡请设置环境变量[guaunknownTask_card5]为"true"')
|
||
let taskNum = $.oneTask.itemCount - $.oneTask.finishCount
|
||
let goodsArr = []
|
||
if([2,3,4,11].includes($.oneTask.taskType)){
|
||
$.itemId = $.oneTask.taskItem.itemId
|
||
let task = []
|
||
let onetask = []
|
||
do{
|
||
taskNum--;
|
||
task = []
|
||
if($.oneTask.taskType == 11) await join($.itemId)
|
||
await $.wait(parseInt(Math.random() * 2000 + 2000, 10))
|
||
await takePostRequest('doTask');
|
||
$.itemId = ''
|
||
await $.wait(parseInt(Math.random() * 2000 + 1000 * $.oneTask.viewTime || 2, 10))
|
||
if($.oneTask.taskType != 3){
|
||
task = await getMyTask(2)
|
||
if(task.length > 0){
|
||
onetask = task.filter((x) => x.taskType == $.oneTask.taskType && x.finishCount < x.itemCount && x.taskItem.itemId != $.oneTask.taskItem.itemId)
|
||
if(onetask.length > 0){
|
||
for(let k of onetask || []){
|
||
if(k.taskType == $.oneTask.taskType){
|
||
$.itemId = k.taskItem.itemId
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}while ((($.itemId != '' && $.oneTask.taskType != 3) || ($.itemId == '' && $.oneTask.taskType == 3)) && taskNum > 0)
|
||
}
|
||
}
|
||
$.remainPoints = 0
|
||
await getActivity()
|
||
|
||
let count = parseInt($.remainPoints/100, 10)
|
||
console.log(`心动值:${$.remainPoints} 可抽奖次数:${count}`)
|
||
for(j=1;count-- && true;j++){
|
||
console.log(`第${j}次`)
|
||
await draw()
|
||
await $.wait(parseInt(Math.random() * 2000 + 2000, 10))
|
||
}
|
||
$.totalPoints = 0
|
||
$.totalBeans = 0
|
||
$.rewards = []
|
||
await getMyRewards()
|
||
console.log(`\n当前剩余:${$.totalPoints}能量值 累计获得:${$.totalBeans}京豆`)
|
||
if($.rewards.length > 0){
|
||
console.log('获得的奖品:')
|
||
for(let i of $.rewards || []){
|
||
console.log(`类型:${i.rewardType} ${i.rewardName} ${i.limitStr} ${$.time('yyyy.MM.dd',i.couponBeginTime)}-${$.time('yyyy.MM.dd',i.couponEndTime)}`)
|
||
if(i.rewardType != 2){
|
||
let msg = `【京东账号${$.index}】${$.nickName || $.UserName}\n类型:${i.rewardType} ${i.rewardName} ${i.limitStr}\n活动地址:https://3.cn/103-VBNoE`
|
||
if ($.isNode()){
|
||
await notify.sendNotify(`${$.name}`, `${msg}`);
|
||
}else{
|
||
$.msg($.name, ``, `${msg}`);
|
||
}
|
||
}
|
||
}
|
||
console.log('\n类型2为优惠券\n如有其他类型可能需要到活动页面填写地址\n')
|
||
}
|
||
if($.bean > 0){
|
||
allMessage += `【京东账号${$.index}】${$.nickName || $.UserName}\n本次运行获得${$.bean}京豆\n`
|
||
}
|
||
if(true){
|
||
$.log($.pin)
|
||
$.log("当前助力:"+friendPin)
|
||
if($.pin){
|
||
$.shareArr.push({"friendPin":$.pin,"count":friendCount,'index':$.index})
|
||
}else if($.index === 1){
|
||
console.log('账号1获取不到[friendPin]退出执行,请重新执行')
|
||
return
|
||
}
|
||
if(toFriend == 1 && $.index !== 1) updatefriend(friendPin,1)
|
||
if($.index === 1) updatefriend(friendPin,0)
|
||
}
|
||
await $.wait(parseInt(Math.random() * 2000 + 5000, 10))
|
||
} catch (e) {
|
||
console.log(e)
|
||
}
|
||
}
|
||
|
||
function updatefriend(id,type) {
|
||
let index = 0
|
||
for(let i in $.shareArr){
|
||
if($.shareArr[i] && $.shareArr[i].friendPin == id){
|
||
index = i
|
||
break
|
||
}
|
||
}
|
||
if(type == 1) $.shareArr[index].count++
|
||
if($.shareArr[index].count >= 3 || type == 0){
|
||
console.log(`助力码[${$.shareArr[index].friendPin}] 已邀请${$.shareArr[index].count}`)
|
||
for(let i in $.shareArr){
|
||
if($.shareArr[i] && $.shareArr[i].count < 3){
|
||
friendPin = $.shareArr[i].friendPin
|
||
console.log(`更新助力码[${friendPin}] 账号${$.shareArr[i].index} 已邀请${$.shareArr[i].count}`)
|
||
break
|
||
}
|
||
}
|
||
}
|
||
}
|
||
async function takePostRequest(type) {
|
||
if($.hotFlag) return
|
||
let url = '';
|
||
let body = ``;
|
||
let method = 'POST'
|
||
switch (type) {
|
||
case 'doTask':
|
||
url = `https://jdjoy.jd.com/module/freshgoods/doTask`;
|
||
body = `code=${configCode}&taskType=${$.oneTask.taskType}&taskId=${$.oneTask.taskId}&eid=${$.eid}&fp=${$.fp}${$.itemId && "&itemId="+$.itemId || ""}&friendPin=${encodeURIComponent(friendPin)}`
|
||
break;
|
||
default:
|
||
console.log(`错误${type}`);
|
||
}
|
||
let myRequest = getPostRequest(url, body, method);
|
||
return new Promise(async resolve => {
|
||
$.post(myRequest, (err, resp, data) => {
|
||
try {
|
||
// setActivityCookie(resp)
|
||
if (err) {
|
||
if(resp && resp.statusCode && 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 {
|
||
res = JSON.parse(data);
|
||
} catch (e) {
|
||
console.log(`${type} 执行任务异常`);
|
||
console.log(data);
|
||
$.runFalag = false;
|
||
}
|
||
switch (type) {
|
||
case 'doTask':
|
||
if(typeof res == 'object' && res.success && res.success === true){
|
||
toFriend = 1
|
||
let msg = ''
|
||
if(res.data && res.data.rewardBeans > 0) msg += res.data.rewardBeans+'京豆'
|
||
if(res.data && res.data.rewardPoints > 0) msg += res.data.rewardPoints+'能量值'
|
||
console.log(`获得: ${msg || data}`)
|
||
}else if(typeof res == 'object' && res.errorMessage){
|
||
if(res.errorMessage == '任务已完成') $.runFalag = false
|
||
console.log(`${type} ${res.errorMessage || ''}`)
|
||
}else{
|
||
console.log(`${type} ${data}`)
|
||
}
|
||
break;
|
||
default:
|
||
console.log(`${type}-> ${data}`);
|
||
}
|
||
if(typeof res == 'object' && res.errorMessage){
|
||
if(res.errorMessage.indexOf('火爆') >-1 ){
|
||
$.hotFlag = true
|
||
}
|
||
}
|
||
}
|
||
|
||
function getPostRequest(url, body, method="POST") {
|
||
let ck = cookie
|
||
let host = ''
|
||
let headers = {
|
||
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
|
||
"Accept-Language": "zh-cn",
|
||
"Accept-Encoding": "gzip, deflate, br",
|
||
"Connection": "keep-alive",
|
||
'Cookie': `${ck}`,
|
||
"X-Requested-With": "XMLHttpRequest",
|
||
"User-Agent": `${UA || $.UA}` ,
|
||
}
|
||
if(method == "POST"){
|
||
headers["Content-Type"] = "application/x-www-form-urlencoded"
|
||
headers["Accept"] = "application/json"
|
||
}
|
||
// console.log(headers)
|
||
// console.log(headers.Cookie)
|
||
return {url: url, method: method, headers: headers, body: body, timeout:30000};
|
||
}
|
||
function join(venderId) {
|
||
return new Promise(async resolve => {
|
||
$.shopactivityId = ''
|
||
await $.wait(1000)
|
||
await getshopactivityId(venderId)
|
||
$.get(ruhui(`${venderId}`), async (err, resp, data) => {
|
||
try {
|
||
// console.log(data)
|
||
res = $.toObj(data);
|
||
if(typeof res == 'object'){
|
||
if(res.success === true){
|
||
console.log(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){
|
||
console.log(`${res.message || ''}`)
|
||
}else{
|
||
console.log(data)
|
||
}
|
||
}else{
|
||
console.log(data)
|
||
}
|
||
} catch (e) {
|
||
$.logErr(e, resp)
|
||
} finally {
|
||
resolve();
|
||
}
|
||
})
|
||
})
|
||
}
|
||
function ruhui(functionId) {
|
||
let activityId = ``
|
||
if($.shopactivityId) activityId = `,"activityId":${$.shopactivityId}`
|
||
return {
|
||
url: `https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=bindWithVender&body={"venderId":"${functionId}","shopId":"${functionId}","bindByVerifyCodeFlag":1,"registerExtend":{},"writeChildFlag":0${activityId},"channel":401}&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',
|
||
'Referer': `https://shopmember.m.jd.com/shopcard/?venderId=${functionId}&shopId=${functionId}&venderType=5&channel=401`,
|
||
'Cookie': cookie
|
||
}
|
||
}
|
||
}
|
||
function getshopactivityId(venderId) {
|
||
return new Promise(resolve => {
|
||
$.get(shopactivityId(`${venderId}`), async (err, resp, data) => {
|
||
try {
|
||
data = JSON.parse(data);
|
||
if(data.success == true){
|
||
// console.log($.toStr(data.result))
|
||
console.log(`入会:${data.result.shopMemberCardInfo.venderCardName || ''}`)
|
||
$.shopactivityId = data.result.interestsRuleList && data.result.interestsRuleList[0] && data.result.interestsRuleList[0].interestsInfo && data.result.interestsRuleList[0].interestsInfo.activityId || ''
|
||
}
|
||
} catch (e) {
|
||
$.logErr(e, resp)
|
||
} finally {
|
||
resolve();
|
||
}
|
||
})
|
||
})
|
||
}
|
||
function shopactivityId(functionId) {
|
||
return {
|
||
url: `https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=getShopOpenCardInfo&body=%7B%22venderId%22%3A%22${functionId}%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',
|
||
'Referer': `https://shopmember.m.jd.com/shopcard/?venderId=${functionId}&shopId=${functionId}&venderType=5&channel=401`,
|
||
'Cookie': cookie
|
||
}
|
||
}
|
||
}
|
||
function getMyTask(type) {
|
||
return new Promise(resolve => {
|
||
let get = {
|
||
url:`https://jdjoy.jd.com/module/freshgoods/getMyTask?code=${configCode}`,
|
||
headers: {
|
||
"Cookie": cookie,
|
||
"User-Agent": $.UA,
|
||
},
|
||
timeout:30000
|
||
}
|
||
$.get(get, async(err, resp, data) => {
|
||
try {
|
||
if (err) {
|
||
if(resp.statusCode && resp.statusCode == 493){
|
||
console.log('此ip已被限制,请过10分钟后再执行脚本\n')
|
||
$.outFlag = true
|
||
}
|
||
console.log(`${$.toStr(err)}`)
|
||
console.log(`${$.name} cookie API请求失败,请检查网路重试`)
|
||
} else {
|
||
// console.log(data)
|
||
let res = $.toObj(data,data)
|
||
if(typeof res == 'object' && res.success && res.success === true){
|
||
if(res.data){
|
||
if(type == 1){
|
||
$.pin = res.data.pin || ''
|
||
$.taskList = res.data.myTasks || []
|
||
}else if(type == 2){
|
||
resolve(res.data.myTasks || [])
|
||
}
|
||
}else{
|
||
console.log(data)
|
||
}
|
||
}else{
|
||
console.log(data)
|
||
}
|
||
}
|
||
} catch (e) {
|
||
$.logErr(e, resp)
|
||
} finally {
|
||
resolve([]);
|
||
}
|
||
})
|
||
})
|
||
}
|
||
function getMyRewards() {
|
||
return new Promise(resolve => {
|
||
let get = {
|
||
url:`https://jdjoy.jd.com/module/freshgoods/getMyRewards?code=${configCode}&friendPin=${encodeURIComponent(friendPin)}`,
|
||
headers: {
|
||
"Cookie": cookie,
|
||
"User-Agent": $.UA,
|
||
},
|
||
timeout:30000
|
||
}
|
||
$.get(get, async(err, resp, data) => {
|
||
try {
|
||
if (err) {
|
||
if(resp.statusCode && resp.statusCode == 493){
|
||
console.log('此ip已被限制,请过10分钟后再执行脚本\n')
|
||
$.outFlag = true
|
||
}
|
||
console.log(`${$.toStr(err)}`)
|
||
console.log(`${$.name} cookie API请求失败,请检查网路重试`)
|
||
} else {
|
||
// console.log(data)
|
||
let res = $.toObj(data,data)
|
||
if(typeof res == 'object' && res.success && res.success === true){
|
||
if(res.data){
|
||
$.totalBeans = res.data.totalBeans
|
||
$.totalPoints = res.data.totalPoints
|
||
$.rewards = res.data.rewards
|
||
}else{
|
||
console.log(data)
|
||
}
|
||
}else{
|
||
console.log(data)
|
||
}
|
||
}
|
||
} catch (e) {
|
||
$.logErr(e, resp)
|
||
} finally {
|
||
resolve([]);
|
||
}
|
||
})
|
||
})
|
||
}
|
||
function getActivity() {
|
||
return new Promise(resolve => {
|
||
let get = {
|
||
url:`https://jdjoy.jd.com/module/freshgoods/getActivityPage?code=${configCode}&friendPin=${encodeURIComponent(friendPin)}`,
|
||
headers: {
|
||
"Cookie": cookie,
|
||
"User-Agent": $.UA,
|
||
},
|
||
timeout:30000
|
||
}
|
||
$.get(get, async(err, resp, data) => {
|
||
try {
|
||
if (err) {
|
||
if(resp.statusCode && resp.statusCode == 493){
|
||
console.log('此ip已被限制,请过10分钟后再执行脚本\n')
|
||
$.outFlag = true
|
||
}
|
||
console.log(`${$.toStr(err)}`)
|
||
console.log(`${$.name} cookie API请求失败,请检查网路重试`)
|
||
} else {
|
||
// console.log(data)
|
||
let res = $.toObj(data,data)
|
||
if(typeof res == 'object' && res.success && res.success === true){
|
||
if(res.data){
|
||
$.remainPoints = res.data.remainPoints
|
||
}else{
|
||
console.log(data)
|
||
}
|
||
}else{
|
||
console.log(data)
|
||
}
|
||
}
|
||
} catch (e) {
|
||
$.logErr(e, resp)
|
||
} finally {
|
||
resolve([]);
|
||
}
|
||
})
|
||
})
|
||
}
|
||
function draw() {
|
||
return new Promise(resolve => {
|
||
let get = {
|
||
url:`https://jdjoy.jd.com/module/freshgoods/draw?code=${configCode}&eid=${$.eid}&fp=${$.fp}`,
|
||
headers: {
|
||
"Cookie": cookie,
|
||
"User-Agent": $.UA,
|
||
},
|
||
timeout:30000
|
||
}
|
||
$.get(get, async(err, resp, data) => {
|
||
try {
|
||
if (err) {
|
||
if(resp.statusCode && resp.statusCode == 493){
|
||
console.log('此ip已被限制,请过10分钟后再执行脚本\n')
|
||
$.outFlag = true
|
||
}
|
||
console.log(`${$.toStr(err)}`)
|
||
console.log(`${$.name} cookie API请求失败,请检查网路重试`)
|
||
} else {
|
||
// console.log(data)
|
||
let res = $.toObj(data,data)
|
||
if(typeof res == 'object' && res.success && res.success === true){
|
||
if(res.data){
|
||
let msg = ''
|
||
msg = res.data.rewardNum || ''
|
||
if(res.data.rewardType == 1){
|
||
msg += '京豆'
|
||
$.bean += Number(res.data.rewardNum)
|
||
}else if(res.data.rewardType == 4){
|
||
msg += '心动值'
|
||
}else{
|
||
msg = res.data.rewardName || data
|
||
}
|
||
console.log(`抽奖获得:${msg || '空气💨'}`)
|
||
}else{
|
||
console.log(data)
|
||
}
|
||
}else{
|
||
console.log(data)
|
||
}
|
||
}
|
||
} catch (e) {
|
||
$.logErr(e, resp)
|
||
} finally {
|
||
resolve([]);
|
||
}
|
||
})
|
||
})
|
||
}
|
||
|
||
function getEid(arr) {
|
||
return new Promise(resolve => {
|
||
const options = {
|
||
url: `https://gia.jd.com/fcf.html?a=${arr.a}`,
|
||
body: `d=${arr.d}`,
|
||
headers: {
|
||
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
|
||
"User-Agent": $.UA
|
||
}
|
||
}
|
||
$.post(options, async (err, resp, data) => {
|
||
try {
|
||
if (err) {
|
||
console.log(`\n${turnTableId[i].name} 登录: API查询请求失败 ‼️‼️`)
|
||
throw new Error(err);
|
||
} else {
|
||
if (data.indexOf("*_*") > 0) {
|
||
data = data.split("*_*", 2);
|
||
data = JSON.parse(data[1]);
|
||
$.eid = data.eid
|
||
} else {
|
||
console.log(`京豆api返回数据为空,请检查自身原因`)
|
||
}
|
||
}
|
||
} catch (e) {
|
||
$.logErr(e, resp);
|
||
} finally {
|
||
resolve(data);
|
||
}
|
||
})
|
||
})
|
||
}
|
||
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 jsonParse(str) {
|
||
if (typeof str == "string") {
|
||
try {
|
||
return JSON.parse(str);
|
||
} catch (e) {
|
||
console.log(e);
|
||
$.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie')
|
||
return [];
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
const navigator = {
|
||
userAgent: $.UA || '',
|
||
plugins: { length: 0 },
|
||
language: "zh-CN",
|
||
};
|
||
const screen = {
|
||
availHeight: 812,
|
||
availWidth: 375,
|
||
colorDepth: 24,
|
||
height: 812,
|
||
width: 375,
|
||
pixelDepth: 24,
|
||
};
|
||
const window = {};
|
||
const document = {
|
||
location: {
|
||
ancestorOrigins: {},
|
||
href: "https://prodev.m.jd.com/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html",
|
||
origin: "https://prodev.m.jd.com",
|
||
protocol: "https:",
|
||
host: "prodev.m.jd.com",
|
||
hostname: "prodev.m.jd.com",
|
||
port: "",
|
||
pathname: "/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html",
|
||
search: "",
|
||
hash: "",
|
||
},
|
||
};
|
||
var start_time = new Date().getTime(),
|
||
_jdfp_canvas_md5 = "",
|
||
_jdfp_webgl_md5 = "",
|
||
_fingerprint_step = 1,
|
||
_JdEid = "",
|
||
_eidFlag = !1,
|
||
risk_jd_local_fingerprint = "",
|
||
_jd_e_joint_;
|
||
|
||
function t(a) {
|
||
if (null == a || void 0 == a || "" == a) return "NA";
|
||
if (null == a || void 0 == a || "" == a) var b = "";
|
||
else {
|
||
b = [];
|
||
for (var c = 0; c < 8 * a.length; c += 8)
|
||
b[c >> 5] |= (a.charCodeAt(c / 8) & 255) << c % 32;
|
||
}
|
||
a = 8 * a.length;
|
||
b[a >> 5] |= 128 << a % 32;
|
||
b[(((a + 64) >>> 9) << 4) + 14] = a;
|
||
a = 1732584193;
|
||
c = -271733879;
|
||
for (var l = -1732584194, h = 271733878, q = 0; q < b.length; q += 16) {
|
||
var z = a,
|
||
C = c,
|
||
D = l,
|
||
B = h;
|
||
a = v(a, c, l, h, b[q + 0], 7, -680876936);
|
||
h = v(h, a, c, l, b[q + 1], 12, -389564586);
|
||
l = v(l, h, a, c, b[q + 2], 17, 606105819);
|
||
c = v(c, l, h, a, b[q + 3], 22, -1044525330);
|
||
a = v(a, c, l, h, b[q + 4], 7, -176418897);
|
||
h = v(h, a, c, l, b[q + 5], 12, 1200080426);
|
||
l = v(l, h, a, c, b[q + 6], 17, -1473231341);
|
||
c = v(c, l, h, a, b[q + 7], 22, -45705983);
|
||
a = v(a, c, l, h, b[q + 8], 7, 1770035416);
|
||
h = v(h, a, c, l, b[q + 9], 12, -1958414417);
|
||
l = v(l, h, a, c, b[q + 10], 17, -42063);
|
||
c = v(c, l, h, a, b[q + 11], 22, -1990404162);
|
||
a = v(a, c, l, h, b[q + 12], 7, 1804603682);
|
||
h = v(h, a, c, l, b[q + 13], 12, -40341101);
|
||
l = v(l, h, a, c, b[q + 14], 17, -1502002290);
|
||
c = v(c, l, h, a, b[q + 15], 22, 1236535329);
|
||
a = x(a, c, l, h, b[q + 1], 5, -165796510);
|
||
h = x(h, a, c, l, b[q + 6], 9, -1069501632);
|
||
l = x(l, h, a, c, b[q + 11], 14, 643717713);
|
||
c = x(c, l, h, a, b[q + 0], 20, -373897302);
|
||
a = x(a, c, l, h, b[q + 5], 5, -701558691);
|
||
h = x(h, a, c, l, b[q + 10], 9, 38016083);
|
||
l = x(l, h, a, c, b[q + 15], 14, -660478335);
|
||
c = x(c, l, h, a, b[q + 4], 20, -405537848);
|
||
a = x(a, c, l, h, b[q + 9], 5, 568446438);
|
||
h = x(h, a, c, l, b[q + 14], 9, -1019803690);
|
||
l = x(l, h, a, c, b[q + 3], 14, -187363961);
|
||
c = x(c, l, h, a, b[q + 8], 20, 1163531501);
|
||
a = x(a, c, l, h, b[q + 13], 5, -1444681467);
|
||
h = x(h, a, c, l, b[q + 2], 9, -51403784);
|
||
l = x(l, h, a, c, b[q + 7], 14, 1735328473);
|
||
c = x(c, l, h, a, b[q + 12], 20, -1926607734);
|
||
a = u(c ^ l ^ h, a, c, b[q + 5], 4, -378558);
|
||
h = u(a ^ c ^ l, h, a, b[q + 8], 11, -2022574463);
|
||
l = u(h ^ a ^ c, l, h, b[q + 11], 16, 1839030562);
|
||
c = u(l ^ h ^ a, c, l, b[q + 14], 23, -35309556);
|
||
a = u(c ^ l ^ h, a, c, b[q + 1], 4, -1530992060);
|
||
h = u(a ^ c ^ l, h, a, b[q + 4], 11, 1272893353);
|
||
l = u(h ^ a ^ c, l, h, b[q + 7], 16, -155497632);
|
||
c = u(l ^ h ^ a, c, l, b[q + 10], 23, -1094730640);
|
||
a = u(c ^ l ^ h, a, c, b[q + 13], 4, 681279174);
|
||
h = u(a ^ c ^ l, h, a, b[q + 0], 11, -358537222);
|
||
l = u(h ^ a ^ c, l, h, b[q + 3], 16, -722521979);
|
||
c = u(l ^ h ^ a, c, l, b[q + 6], 23, 76029189);
|
||
a = u(c ^ l ^ h, a, c, b[q + 9], 4, -640364487);
|
||
h = u(a ^ c ^ l, h, a, b[q + 12], 11, -421815835);
|
||
l = u(h ^ a ^ c, l, h, b[q + 15], 16, 530742520);
|
||
c = u(l ^ h ^ a, c, l, b[q + 2], 23, -995338651);
|
||
a = w(a, c, l, h, b[q + 0], 6, -198630844);
|
||
h = w(h, a, c, l, b[q + 7], 10, 1126891415);
|
||
l = w(l, h, a, c, b[q + 14], 15, -1416354905);
|
||
c = w(c, l, h, a, b[q + 5], 21, -57434055);
|
||
a = w(a, c, l, h, b[q + 12], 6, 1700485571);
|
||
h = w(h, a, c, l, b[q + 3], 10, -1894986606);
|
||
l = w(l, h, a, c, b[q + 10], 15, -1051523);
|
||
c = w(c, l, h, a, b[q + 1], 21, -2054922799);
|
||
a = w(a, c, l, h, b[q + 8], 6, 1873313359);
|
||
h = w(h, a, c, l, b[q + 15], 10, -30611744);
|
||
l = w(l, h, a, c, b[q + 6], 15, -1560198380);
|
||
c = w(c, l, h, a, b[q + 13], 21, 1309151649);
|
||
a = w(a, c, l, h, b[q + 4], 6, -145523070);
|
||
h = w(h, a, c, l, b[q + 11], 10, -1120210379);
|
||
l = w(l, h, a, c, b[q + 2], 15, 718787259);
|
||
c = w(c, l, h, a, b[q + 9], 21, -343485551);
|
||
a = A(a, z);
|
||
c = A(c, C);
|
||
l = A(l, D);
|
||
h = A(h, B);
|
||
}
|
||
b = [a, c, l, h];
|
||
a = "";
|
||
for (c = 0; c < 4 * b.length; c++)
|
||
a +=
|
||
"0123456789abcdef".charAt((b[c >> 2] >> ((c % 4) * 8 + 4)) & 15) +
|
||
"0123456789abcdef".charAt((b[c >> 2] >> ((c % 4) * 8)) & 15);
|
||
return a;
|
||
}
|
||
|
||
function u(a, b, c, l, h, q) {
|
||
a = A(A(b, a), A(l, q));
|
||
return A((a << h) | (a >>> (32 - h)), c);
|
||
}
|
||
|
||
function v(a, b, c, l, h, q, z) {
|
||
return u((b & c) | (~b & l), a, b, h, q, z);
|
||
}
|
||
|
||
function x(a, b, c, l, h, q, z) {
|
||
return u((b & l) | (c & ~l), a, b, h, q, z);
|
||
}
|
||
|
||
function w(a, b, c, l, h, q, z) {
|
||
return u(c ^ (b | ~l), a, b, h, q, z);
|
||
}
|
||
|
||
function A(a, b) {
|
||
var c = (a & 65535) + (b & 65535);
|
||
return (((a >> 16) + (b >> 16) + (c >> 16)) << 16) | (c & 65535);
|
||
}
|
||
|
||
_fingerprint_step = 2;
|
||
var y = "",
|
||
n = navigator.userAgent.toLowerCase();
|
||
n.indexOf("jdapp") && (n = n.substring(0, 90));
|
||
var e = navigator.language,
|
||
f = n;
|
||
-1 != f.indexOf("ipad") ||
|
||
-1 != f.indexOf("iphone os") ||
|
||
-1 != f.indexOf("midp") ||
|
||
-1 != f.indexOf("rv:1.2.3.4") ||
|
||
-1 != f.indexOf("ucweb") ||
|
||
-1 != f.indexOf("android") ||
|
||
-1 != f.indexOf("windows ce") ||
|
||
f.indexOf("windows mobile");
|
||
var r = "NA",
|
||
k = "NA";
|
||
try {
|
||
-1 != f.indexOf("win") &&
|
||
-1 != f.indexOf("95") &&
|
||
((r = "windows"), (k = "95")),
|
||
-1 != f.indexOf("win") &&
|
||
-1 != f.indexOf("98") &&
|
||
((r = "windows"), (k = "98")),
|
||
-1 != f.indexOf("win 9x") &&
|
||
-1 != f.indexOf("4.90") &&
|
||
((r = "windows"), (k = "me")),
|
||
-1 != f.indexOf("win") &&
|
||
-1 != f.indexOf("nt 5.0") &&
|
||
((r = "windows"), (k = "2000")),
|
||
-1 != f.indexOf("win") &&
|
||
-1 != f.indexOf("nt") &&
|
||
((r = "windows"), (k = "NT")),
|
||
-1 != f.indexOf("win") &&
|
||
-1 != f.indexOf("nt 5.1") &&
|
||
((r = "windows"), (k = "xp")),
|
||
-1 != f.indexOf("win") &&
|
||
-1 != f.indexOf("32") &&
|
||
((r = "windows"), (k = "32")),
|
||
-1 != f.indexOf("win") &&
|
||
-1 != f.indexOf("nt 5.1") &&
|
||
((r = "windows"), (k = "7")),
|
||
-1 != f.indexOf("win") &&
|
||
-1 != f.indexOf("6.0") &&
|
||
((r = "windows"), (k = "8")),
|
||
-1 == f.indexOf("win") ||
|
||
(-1 == f.indexOf("nt 6.0") && -1 == f.indexOf("nt 6.1")) ||
|
||
((r = "windows"), (k = "9")),
|
||
-1 != f.indexOf("win") &&
|
||
-1 != f.indexOf("nt 6.2") &&
|
||
((r = "windows"), (k = "10")),
|
||
-1 != f.indexOf("linux") && (r = "linux"),
|
||
-1 != f.indexOf("unix") && (r = "unix"),
|
||
-1 != f.indexOf("sun") && -1 != f.indexOf("os") && (r = "sun os"),
|
||
-1 != f.indexOf("ibm") && -1 != f.indexOf("os") && (r = "ibm os/2"),
|
||
-1 != f.indexOf("mac") && -1 != f.indexOf("pc") && (r = "mac"),
|
||
-1 != f.indexOf("aix") && (r = "aix"),
|
||
-1 != f.indexOf("powerpc") && (r = "powerPC"),
|
||
-1 != f.indexOf("hpux") && (r = "hpux"),
|
||
-1 != f.indexOf("netbsd") && (r = "NetBSD"),
|
||
-1 != f.indexOf("bsd") && (r = "BSD"),
|
||
-1 != f.indexOf("osf1") && (r = "OSF1"),
|
||
-1 != f.indexOf("irix") && ((r = "IRIX"), (k = "")),
|
||
-1 != f.indexOf("freebsd") && (r = "FreeBSD"),
|
||
-1 != f.indexOf("symbianos") &&
|
||
((r = "SymbianOS"), (k = f.substring(f.indexOf("SymbianOS/") + 10, 3)));
|
||
} catch (a) {}
|
||
_fingerprint_step = 3;
|
||
var g = "NA",
|
||
m = "NA";
|
||
try {
|
||
-1 != f.indexOf("msie") &&
|
||
((g = "ie"),
|
||
(m = f.substring(f.indexOf("msie ") + 5)),
|
||
m.indexOf(";") && (m = m.substring(0, m.indexOf(";"))));
|
||
-1 != f.indexOf("firefox") &&
|
||
((g = "Firefox"), (m = f.substring(f.indexOf("firefox/") + 8)));
|
||
-1 != f.indexOf("opera") &&
|
||
((g = "Opera"), (m = f.substring(f.indexOf("opera/") + 6, 4)));
|
||
-1 != f.indexOf("safari") &&
|
||
((g = "safari"), (m = f.substring(f.indexOf("safari/") + 7)));
|
||
-1 != f.indexOf("chrome") &&
|
||
((g = "chrome"),
|
||
(m = f.substring(f.indexOf("chrome/") + 7)),
|
||
m.indexOf(" ") && (m = m.substring(0, m.indexOf(" "))));
|
||
-1 != f.indexOf("navigator") &&
|
||
((g = "navigator"), (m = f.substring(f.indexOf("navigator/") + 10)));
|
||
-1 != f.indexOf("applewebkit") &&
|
||
((g = "applewebkit_chrome"),
|
||
(m = f.substring(f.indexOf("applewebkit/") + 12)),
|
||
m.indexOf(" ") && (m = m.substring(0, m.indexOf(" "))));
|
||
-1 != f.indexOf("sogoumobilebrowser") &&
|
||
(g = "\u641c\u72d7\u624b\u673a\u6d4f\u89c8\u5668");
|
||
if (-1 != f.indexOf("ucbrowser") || -1 != f.indexOf("ucweb"))
|
||
g = "UC\u6d4f\u89c8\u5668";
|
||
if (-1 != f.indexOf("qqbrowser") || -1 != f.indexOf("tencenttraveler"))
|
||
g = "QQ\u6d4f\u89c8\u5668";
|
||
-1 != f.indexOf("metasr") && (g = "\u641c\u72d7\u6d4f\u89c8\u5668");
|
||
-1 != f.indexOf("360se") && (g = "360\u6d4f\u89c8\u5668");
|
||
-1 != f.indexOf("the world") &&
|
||
(g = "\u4e16\u754c\u4e4b\u7a97\u6d4f\u89c8\u5668");
|
||
-1 != f.indexOf("maxthon") && (g = "\u9068\u6e38\u6d4f\u89c8\u5668");
|
||
} catch (a) {}
|
||
|
||
class JdJrTdRiskFinger {
|
||
f = {
|
||
options: function () {
|
||
return {};
|
||
},
|
||
nativeForEach: Array.prototype.forEach,
|
||
nativeMap: Array.prototype.map,
|
||
extend: function (a, b) {
|
||
if (null == a) return b;
|
||
for (var c in a) null != a[c] && b[c] !== a[c] && (b[c] = a[c]);
|
||
return b;
|
||
},
|
||
getData: function () {
|
||
return y;
|
||
},
|
||
get: function (a) {
|
||
var b = 1 * m,
|
||
c = [];
|
||
"ie" == g && 7 <= b
|
||
? (c.push(n),
|
||
c.push(e),
|
||
(y = y + ",'userAgent':'" + t(n) + "','language':'" + e + "'"),
|
||
this.browserRedirect(n))
|
||
: ((c = this.userAgentKey(c)), (c = this.languageKey(c)));
|
||
c.push(g);
|
||
c.push(m);
|
||
c.push(r);
|
||
c.push(k);
|
||
y =
|
||
y +
|
||
",'os':'" +
|
||
r +
|
||
"','osVersion':'" +
|
||
k +
|
||
"','browser':'" +
|
||
g +
|
||
"','browserVersion':'" +
|
||
m +
|
||
"'";
|
||
c = this.colorDepthKey(c);
|
||
c = this.screenResolutionKey(c);
|
||
c = this.timezoneOffsetKey(c);
|
||
c = this.sessionStorageKey(c);
|
||
c = this.localStorageKey(c);
|
||
c = this.indexedDbKey(c);
|
||
c = this.addBehaviorKey(c);
|
||
c = this.openDatabaseKey(c);
|
||
c = this.cpuClassKey(c);
|
||
c = this.platformKey(c);
|
||
c = this.hardwareConcurrencyKey(c);
|
||
c = this.doNotTrackKey(c);
|
||
c = this.pluginsKey(c);
|
||
c = this.canvasKey(c);
|
||
c = this.webglKey(c);
|
||
b = this.x64hash128(c.join("~~~"), 31);
|
||
return a(b);
|
||
},
|
||
userAgentKey: function (a) {
|
||
a.push(navigator.userAgent),
|
||
(y = y + ",'userAgent':'" + t(navigator.userAgent) + "'"),
|
||
this.browserRedirect(navigator.userAgent);
|
||
return a;
|
||
},
|
||
replaceAll: function (a, b, c) {
|
||
for (; 0 <= a.indexOf(b); ) a = a.replace(b, c);
|
||
return a;
|
||
},
|
||
browserRedirect: function (a) {
|
||
var b = a.toLowerCase();
|
||
a = "ipad" == b.match(/ipad/i);
|
||
var c = "iphone os" == b.match(/iphone os/i),
|
||
l = "midp" == b.match(/midp/i),
|
||
h = "rv:1.2.3.4" == b.match(/rv:1.2.3.4/i),
|
||
q = "ucweb" == b.match(/ucweb/i),
|
||
z = "android" == b.match(/android/i),
|
||
C = "windows ce" == b.match(/windows ce/i);
|
||
b = "windows mobile" == b.match(/windows mobile/i);
|
||
y =
|
||
a || c || l || h || q || z || C || b
|
||
? y + ",'origin':'mobile'"
|
||
: y + ",'origin':'pc'";
|
||
},
|
||
languageKey: function (a) {
|
||
"" ||
|
||
(a.push(navigator.language),
|
||
(y =
|
||
y +
|
||
",'language':'" +
|
||
this.replaceAll(navigator.language, " ", "_") +
|
||
"'"));
|
||
return a;
|
||
},
|
||
colorDepthKey: function (a) {
|
||
"" ||
|
||
(a.push(screen.colorDepth),
|
||
(y = y + ",'colorDepth':'" + screen.colorDepth + "'"));
|
||
return a;
|
||
},
|
||
screenResolutionKey: function (a) {
|
||
if (!this.options.excludeScreenResolution) {
|
||
var b = this.getScreenResolution();
|
||
"undefined" !== typeof b &&
|
||
(a.push(b.join("x")),
|
||
(y = y + ",'screenResolution':'" + b.join("x") + "'"));
|
||
}
|
||
return a;
|
||
},
|
||
getScreenResolution: function () {
|
||
return this.options.detectScreenOrientation
|
||
? screen.height > screen.width
|
||
? [screen.height, screen.width]
|
||
: [screen.width, screen.height]
|
||
: [screen.height, screen.width];
|
||
},
|
||
timezoneOffsetKey: function (a) {
|
||
this.options.excludeTimezoneOffset ||
|
||
(a.push(new Date().getTimezoneOffset()),
|
||
(y =
|
||
y +
|
||
",'timezoneOffset':'" +
|
||
new Date().getTimezoneOffset() / 60 +
|
||
"'"));
|
||
return a;
|
||
},
|
||
sessionStorageKey: function (a) {
|
||
!this.options.excludeSessionStorage &&
|
||
this.hasSessionStorage() &&
|
||
(a.push("sessionStorageKey"), (y += ",'sessionStorage':true"));
|
||
return a;
|
||
},
|
||
localStorageKey: function (a) {
|
||
!this.options.excludeSessionStorage &&
|
||
this.hasLocalStorage() &&
|
||
(a.push("localStorageKey"), (y += ",'localStorage':true"));
|
||
return a;
|
||
},
|
||
indexedDbKey: function (a) {
|
||
!this.options.excludeIndexedDB &&
|
||
this.hasIndexedDB() &&
|
||
(a.push("indexedDbKey"), (y += ",'indexedDb':true"));
|
||
return a;
|
||
},
|
||
addBehaviorKey: function (a) {
|
||
document.body &&
|
||
!this.options.excludeAddBehavior &&
|
||
document.body.addBehavior
|
||
? (a.push("addBehaviorKey"), (y += ",'addBehavior':true"))
|
||
: (y += ",'addBehavior':false");
|
||
return a;
|
||
},
|
||
openDatabaseKey: function (a) {
|
||
!this.options.excludeOpenDatabase && window.openDatabase
|
||
? (a.push("openDatabase"), (y += ",'openDatabase':true"))
|
||
: (y += ",'openDatabase':false");
|
||
return a;
|
||
},
|
||
cpuClassKey: function (a) {
|
||
this.options.excludeCpuClass ||
|
||
(a.push(this.getNavigatorCpuClass()),
|
||
(y = y + ",'cpu':'" + this.getNavigatorCpuClass() + "'"));
|
||
return a;
|
||
},
|
||
platformKey: function (a) {
|
||
this.options.excludePlatform ||
|
||
(a.push(this.getNavigatorPlatform()),
|
||
(y = y + ",'platform':'" + this.getNavigatorPlatform() + "'"));
|
||
return a;
|
||
},
|
||
hardwareConcurrencyKey: function (a) {
|
||
var b = this.getHardwareConcurrency();
|
||
a.push(b);
|
||
y = y + ",'ccn':'" + b + "'";
|
||
return a;
|
||
},
|
||
doNotTrackKey: function (a) {
|
||
this.options.excludeDoNotTrack ||
|
||
(a.push(this.getDoNotTrack()),
|
||
(y = y + ",'track':'" + this.getDoNotTrack() + "'"));
|
||
return a;
|
||
},
|
||
canvasKey: function (a) {
|
||
if (!this.options.excludeCanvas && this.isCanvasSupported()) {
|
||
var b = this.getCanvasFp();
|
||
a.push(b);
|
||
_jdfp_canvas_md5 = t(b);
|
||
y = y + ",'canvas':'" + _jdfp_canvas_md5 + "'";
|
||
}
|
||
return a;
|
||
},
|
||
webglKey: function (a) {
|
||
if (!this.options.excludeWebGL && this.isCanvasSupported()) {
|
||
var b = this.getWebglFp();
|
||
_jdfp_webgl_md5 = t(b);
|
||
a.push(b);
|
||
y = y + ",'webglFp':'" + _jdfp_webgl_md5 + "'";
|
||
}
|
||
return a;
|
||
},
|
||
pluginsKey: function (a) {
|
||
this.isIE()
|
||
? (a.push(this.getIEPluginsString()),
|
||
(y = y + ",'plugins':'" + t(this.getIEPluginsString()) + "'"))
|
||
: (a.push(this.getRegularPluginsString()),
|
||
(y = y + ",'plugins':'" + t(this.getRegularPluginsString()) + "'"));
|
||
return a;
|
||
},
|
||
getRegularPluginsString: function () {
|
||
return this.map(
|
||
navigator.plugins,
|
||
function (a) {
|
||
var b = this.map(a, function (c) {
|
||
return [c.type, c.suffixes].join("~");
|
||
}).join(",");
|
||
return [a.name, a.description, b].join("::");
|
||
},
|
||
this
|
||
).join(";");
|
||
},
|
||
getIEPluginsString: function () {
|
||
return window.ActiveXObject
|
||
? this.map(
|
||
"AcroPDF.PDF;Adodb.Stream;AgControl.AgControl;DevalVRXCtrl.DevalVRXCtrl.1;MacromediaFlashPaper.MacromediaFlashPaper;Msxml2.DOMDocument;Msxml2.XMLHTTP;PDF.PdfCtrl;QuickTime.QuickTime;QuickTimeCheckObject.QuickTimeCheck.1;RealPlayer;RealPlayer.RealPlayer(tm) ActiveX Control (32-bit);RealVideo.RealVideo(tm) ActiveX Control (32-bit);Scripting.Dictionary;SWCtl.SWCtl;Shell.UIHelper;ShockwaveFlash.ShockwaveFlash;Skype.Detection;TDCCtl.TDCCtl;WMPlayer.OCX;rmocx.RealPlayer G2 Control;rmocx.RealPlayer G2 Control.1".split(
|
||
";"
|
||
),
|
||
function (a) {
|
||
try {
|
||
return new ActiveXObject(a), a;
|
||
} catch (b) {
|
||
return null;
|
||
}
|
||
}
|
||
).join(";")
|
||
: "";
|
||
},
|
||
hasSessionStorage: function () {
|
||
try {
|
||
return !!window.sessionStorage;
|
||
} catch (a) {
|
||
return !0;
|
||
}
|
||
},
|
||
hasLocalStorage: function () {
|
||
try {
|
||
return !!window.localStorage;
|
||
} catch (a) {
|
||
return !0;
|
||
}
|
||
},
|
||
hasIndexedDB: function () {
|
||
return true;
|
||
return !!window.indexedDB;
|
||
},
|
||
getNavigatorCpuClass: function () {
|
||
return navigator.cpuClass ? navigator.cpuClass : "NA";
|
||
},
|
||
getNavigatorPlatform: function () {
|
||
return navigator.platform ? navigator.platform : "NA";
|
||
},
|
||
getHardwareConcurrency: function () {
|
||
return navigator.hardwareConcurrency
|
||
? navigator.hardwareConcurrency
|
||
: "NA";
|
||
},
|
||
getDoNotTrack: function () {
|
||
return navigator.doNotTrack ? navigator.doNotTrack : "NA";
|
||
},
|
||
getCanvasFp: function () {
|
||
return "";
|
||
var a = navigator.userAgent.toLowerCase();
|
||
if (
|
||
(0 < a.indexOf("jdjr-app") || 0 <= a.indexOf("jdapp")) &&
|
||
(0 < a.indexOf("iphone") || 0 < a.indexOf("ipad"))
|
||
)
|
||
return null;
|
||
a = document.createElement("canvas");
|
||
var b = a.getContext("2d");
|
||
b.fillStyle = "red";
|
||
b.fillRect(30, 10, 200, 100);
|
||
b.strokeStyle = "#1a3bc1";
|
||
b.lineWidth = 6;
|
||
b.lineCap = "round";
|
||
b.arc(50, 50, 20, 0, Math.PI, !1);
|
||
b.stroke();
|
||
b.fillStyle = "#42e1a2";
|
||
b.font = "15.4px 'Arial'";
|
||
b.textBaseline = "alphabetic";
|
||
b.fillText("PR flacks quiz gym: TV DJ box when? \u2620", 15, 60);
|
||
b.shadowOffsetX = 1;
|
||
b.shadowOffsetY = 2;
|
||
b.shadowColor = "white";
|
||
b.fillStyle = "rgba(0, 0, 200, 0.5)";
|
||
b.font = "60px 'Not a real font'";
|
||
b.fillText("No\u9a97", 40, 80);
|
||
return a.toDataURL();
|
||
},
|
||
getWebglFp: function () {
|
||
var a = navigator.userAgent;
|
||
a = a.toLowerCase();
|
||
if (
|
||
(0 < a.indexOf("jdjr-app") || 0 <= a.indexOf("jdapp")) &&
|
||
(0 < a.indexOf("iphone") || 0 < a.indexOf("ipad"))
|
||
)
|
||
return null;
|
||
a = function (D) {
|
||
b.clearColor(0, 0, 0, 1);
|
||
b.enable(b.DEPTH_TEST);
|
||
b.depthFunc(b.LEQUAL);
|
||
b.clear(b.COLOR_BUFFER_BIT | b.DEPTH_BUFFER_BIT);
|
||
return "[" + D[0] + ", " + D[1] + "]";
|
||
};
|
||
var b = this.getWebglCanvas();
|
||
if (!b) return null;
|
||
var c = [],
|
||
l = b.createBuffer();
|
||
b.bindBuffer(b.ARRAY_BUFFER, l);
|
||
var h = new Float32Array([
|
||
-0.2, -0.9, 0, 0.4, -0.26, 0, 0, 0.732134444, 0,
|
||
]);
|
||
b.bufferData(b.ARRAY_BUFFER, h, b.STATIC_DRAW);
|
||
l.itemSize = 3;
|
||
l.numItems = 3;
|
||
h = b.createProgram();
|
||
var q = b.createShader(b.VERTEX_SHADER);
|
||
b.shaderSource(
|
||
q,
|
||
"attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}"
|
||
);
|
||
b.compileShader(q);
|
||
var z = b.createShader(b.FRAGMENT_SHADER);
|
||
b.shaderSource(
|
||
z,
|
||
"precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}"
|
||
);
|
||
b.compileShader(z);
|
||
b.attachShader(h, q);
|
||
b.attachShader(h, z);
|
||
b.linkProgram(h);
|
||
b.useProgram(h);
|
||
h.vertexPosAttrib = b.getAttribLocation(h, "attrVertex");
|
||
h.offsetUniform = b.getUniformLocation(h, "uniformOffset");
|
||
b.enableVertexAttribArray(h.vertexPosArray);
|
||
b.vertexAttribPointer(h.vertexPosAttrib, l.itemSize, b.FLOAT, !1, 0, 0);
|
||
b.uniform2f(h.offsetUniform, 1, 1);
|
||
b.drawArrays(b.TRIANGLE_STRIP, 0, l.numItems);
|
||
null != b.canvas && c.push(b.canvas.toDataURL());
|
||
c.push("extensions:" + b.getSupportedExtensions().join(";"));
|
||
c.push("extensions:" + b.getSupportedExtensions().join(";"));
|
||
c.push("w1" + a(b.getParameter(b.ALIASED_LINE_WIDTH_RANGE)));
|
||
c.push("w2" + a(b.getParameter(b.ALIASED_POINT_SIZE_RANGE)));
|
||
c.push("w3" + b.getParameter(b.ALPHA_BITS));
|
||
c.push("w4" + (b.getContextAttributes().antialias ? "yes" : "no"));
|
||
c.push("w5" + b.getParameter(b.BLUE_BITS));
|
||
c.push("w6" + b.getParameter(b.DEPTH_BITS));
|
||
c.push("w7" + b.getParameter(b.GREEN_BITS));
|
||
c.push(
|
||
"w8" +
|
||
(function (D) {
|
||
var B,
|
||
F =
|
||
D.getExtension("EXT_texture_filter_anisotropic") ||
|
||
D.getExtension("WEBKIT_EXT_texture_filter_anisotropic") ||
|
||
D.getExtension("MOZ_EXT_texture_filter_anisotropic");
|
||
return F
|
||
? ((B = D.getParameter(F.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),
|
||
0 === B && (B = 2),
|
||
B)
|
||
: null;
|
||
})(b)
|
||
);
|
||
c.push("w9" + b.getParameter(b.MAX_COMBINED_TEXTURE_IMAGE_UNITS));
|
||
c.push("w10" + b.getParameter(b.MAX_CUBE_MAP_TEXTURE_SIZE));
|
||
c.push("w11" + b.getParameter(b.MAX_FRAGMENT_UNIFORM_VECTORS));
|
||
c.push("w12" + b.getParameter(b.MAX_RENDERBUFFER_SIZE));
|
||
c.push("w13" + b.getParameter(b.MAX_TEXTURE_IMAGE_UNITS));
|
||
c.push("w14" + b.getParameter(b.MAX_TEXTURE_SIZE));
|
||
c.push("w15" + b.getParameter(b.MAX_VARYING_VECTORS));
|
||
c.push("w16" + b.getParameter(b.MAX_VERTEX_ATTRIBS));
|
||
c.push("w17" + b.getParameter(b.MAX_VERTEX_TEXTURE_IMAGE_UNITS));
|
||
c.push("w18" + b.getParameter(b.MAX_VERTEX_UNIFORM_VECTORS));
|
||
c.push("w19" + a(b.getParameter(b.MAX_VIEWPORT_DIMS)));
|
||
c.push("w20" + b.getParameter(b.RED_BITS));
|
||
c.push("w21" + b.getParameter(b.RENDERER));
|
||
c.push("w22" + b.getParameter(b.SHADING_LANGUAGE_VERSION));
|
||
c.push("w23" + b.getParameter(b.STENCIL_BITS));
|
||
c.push("w24" + b.getParameter(b.VENDOR));
|
||
c.push("w25" + b.getParameter(b.VERSION));
|
||
try {
|
||
var C = b.getExtension("WEBGL_debug_renderer_info");
|
||
C &&
|
||
(c.push("wuv:" + b.getParameter(C.UNMASKED_VENDOR_WEBGL)),
|
||
c.push("wur:" + b.getParameter(C.UNMASKED_RENDERER_WEBGL)));
|
||
} catch (D) {}
|
||
return c.join("\u00a7");
|
||
},
|
||
isCanvasSupported: function () {
|
||
return true;
|
||
var a = document.createElement("canvas");
|
||
return !(!a.getContext || !a.getContext("2d"));
|
||
},
|
||
isIE: function () {
|
||
return "Microsoft Internet Explorer" === navigator.appName ||
|
||
("Netscape" === navigator.appName &&
|
||
/Trident/.test(navigator.userAgent))
|
||
? !0
|
||
: !1;
|
||
},
|
||
getWebglCanvas: function () {
|
||
return null;
|
||
var a = document.createElement("canvas"),
|
||
b = null;
|
||
try {
|
||
var c = navigator.userAgent;
|
||
c = c.toLowerCase();
|
||
((0 < c.indexOf("jdjr-app") || 0 <= c.indexOf("jdapp")) &&
|
||
(0 < c.indexOf("iphone") || 0 < c.indexOf("ipad"))) ||
|
||
(b = a.getContext("webgl") || a.getContext("experimental-webgl"));
|
||
} catch (l) {}
|
||
b || (b = null);
|
||
return b;
|
||
},
|
||
each: function (a, b, c) {
|
||
if (null !== a)
|
||
if (this.nativeForEach && a.forEach === this.nativeForEach)
|
||
a.forEach(b, c);
|
||
else if (a.length === +a.length)
|
||
for (
|
||
var l = 0, h = a.length;
|
||
l < h && b.call(c, a[l], l, a) !== {};
|
||
l++
|
||
);
|
||
else
|
||
for (l in a)
|
||
if (a.hasOwnProperty(l) && b.call(c, a[l], l, a) === {}) break;
|
||
},
|
||
map: function (a, b, c) {
|
||
var l = [];
|
||
if (null == a) return l;
|
||
if (this.nativeMap && a.map === this.nativeMap) return a.map(b, c);
|
||
this.each(a, function (h, q, z) {
|
||
l[l.length] = b.call(c, h, q, z);
|
||
});
|
||
return l;
|
||
},
|
||
x64Add: function (a, b) {
|
||
a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535];
|
||
b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535];
|
||
var c = [0, 0, 0, 0];
|
||
c[3] += a[3] + b[3];
|
||
c[2] += c[3] >>> 16;
|
||
c[3] &= 65535;
|
||
c[2] += a[2] + b[2];
|
||
c[1] += c[2] >>> 16;
|
||
c[2] &= 65535;
|
||
c[1] += a[1] + b[1];
|
||
c[0] += c[1] >>> 16;
|
||
c[1] &= 65535;
|
||
c[0] += a[0] + b[0];
|
||
c[0] &= 65535;
|
||
return [(c[0] << 16) | c[1], (c[2] << 16) | c[3]];
|
||
},
|
||
x64Multiply: function (a, b) {
|
||
a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535];
|
||
b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535];
|
||
var c = [0, 0, 0, 0];
|
||
c[3] += a[3] * b[3];
|
||
c[2] += c[3] >>> 16;
|
||
c[3] &= 65535;
|
||
c[2] += a[2] * b[3];
|
||
c[1] += c[2] >>> 16;
|
||
c[2] &= 65535;
|
||
c[2] += a[3] * b[2];
|
||
c[1] += c[2] >>> 16;
|
||
c[2] &= 65535;
|
||
c[1] += a[1] * b[3];
|
||
c[0] += c[1] >>> 16;
|
||
c[1] &= 65535;
|
||
c[1] += a[2] * b[2];
|
||
c[0] += c[1] >>> 16;
|
||
c[1] &= 65535;
|
||
c[1] += a[3] * b[1];
|
||
c[0] += c[1] >>> 16;
|
||
c[1] &= 65535;
|
||
c[0] += a[0] * b[3] + a[1] * b[2] + a[2] * b[1] + a[3] * b[0];
|
||
c[0] &= 65535;
|
||
return [(c[0] << 16) | c[1], (c[2] << 16) | c[3]];
|
||
},
|
||
x64Rotl: function (a, b) {
|
||
b %= 64;
|
||
if (32 === b) return [a[1], a[0]];
|
||
if (32 > b)
|
||
return [
|
||
(a[0] << b) | (a[1] >>> (32 - b)),
|
||
(a[1] << b) | (a[0] >>> (32 - b)),
|
||
];
|
||
b -= 32;
|
||
return [
|
||
(a[1] << b) | (a[0] >>> (32 - b)),
|
||
(a[0] << b) | (a[1] >>> (32 - b)),
|
||
];
|
||
},
|
||
x64LeftShift: function (a, b) {
|
||
b %= 64;
|
||
return 0 === b
|
||
? a
|
||
: 32 > b
|
||
? [(a[0] << b) | (a[1] >>> (32 - b)), a[1] << b]
|
||
: [a[1] << (b - 32), 0];
|
||
},
|
||
x64Xor: function (a, b) {
|
||
return [a[0] ^ b[0], a[1] ^ b[1]];
|
||
},
|
||
x64Fmix: function (a) {
|
||
a = this.x64Xor(a, [0, a[0] >>> 1]);
|
||
a = this.x64Multiply(a, [4283543511, 3981806797]);
|
||
a = this.x64Xor(a, [0, a[0] >>> 1]);
|
||
a = this.x64Multiply(a, [3301882366, 444984403]);
|
||
return (a = this.x64Xor(a, [0, a[0] >>> 1]));
|
||
},
|
||
x64hash128: function (a, b) {
|
||
a = a || "";
|
||
b = b || 0;
|
||
var c = a.length % 16,
|
||
l = a.length - c,
|
||
h = [0, b];
|
||
b = [0, b];
|
||
for (
|
||
var q,
|
||
z,
|
||
C = [2277735313, 289559509],
|
||
D = [1291169091, 658871167],
|
||
B = 0;
|
||
B < l;
|
||
B += 16
|
||
)
|
||
(q = [
|
||
(a.charCodeAt(B + 4) & 255) |
|
||
((a.charCodeAt(B + 5) & 255) << 8) |
|
||
((a.charCodeAt(B + 6) & 255) << 16) |
|
||
((a.charCodeAt(B + 7) & 255) << 24),
|
||
(a.charCodeAt(B) & 255) |
|
||
((a.charCodeAt(B + 1) & 255) << 8) |
|
||
((a.charCodeAt(B + 2) & 255) << 16) |
|
||
((a.charCodeAt(B + 3) & 255) << 24),
|
||
]),
|
||
(z = [
|
||
(a.charCodeAt(B + 12) & 255) |
|
||
((a.charCodeAt(B + 13) & 255) << 8) |
|
||
((a.charCodeAt(B + 14) & 255) << 16) |
|
||
((a.charCodeAt(B + 15) & 255) << 24),
|
||
(a.charCodeAt(B + 8) & 255) |
|
||
((a.charCodeAt(B + 9) & 255) << 8) |
|
||
((a.charCodeAt(B + 10) & 255) << 16) |
|
||
((a.charCodeAt(B + 11) & 255) << 24),
|
||
]),
|
||
(q = this.x64Multiply(q, C)),
|
||
(q = this.x64Rotl(q, 31)),
|
||
(q = this.x64Multiply(q, D)),
|
||
(h = this.x64Xor(h, q)),
|
||
(h = this.x64Rotl(h, 27)),
|
||
(h = this.x64Add(h, b)),
|
||
(h = this.x64Add(this.x64Multiply(h, [0, 5]), [0, 1390208809])),
|
||
(z = this.x64Multiply(z, D)),
|
||
(z = this.x64Rotl(z, 33)),
|
||
(z = this.x64Multiply(z, C)),
|
||
(b = this.x64Xor(b, z)),
|
||
(b = this.x64Rotl(b, 31)),
|
||
(b = this.x64Add(b, h)),
|
||
(b = this.x64Add(this.x64Multiply(b, [0, 5]), [0, 944331445]));
|
||
q = [0, 0];
|
||
z = [0, 0];
|
||
switch (c) {
|
||
case 15:
|
||
z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 14)], 48));
|
||
case 14:
|
||
z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 13)], 40));
|
||
case 13:
|
||
z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 12)], 32));
|
||
case 12:
|
||
z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 11)], 24));
|
||
case 11:
|
||
z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 10)], 16));
|
||
case 10:
|
||
z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 9)], 8));
|
||
case 9:
|
||
(z = this.x64Xor(z, [0, a.charCodeAt(B + 8)])),
|
||
(z = this.x64Multiply(z, D)),
|
||
(z = this.x64Rotl(z, 33)),
|
||
(z = this.x64Multiply(z, C)),
|
||
(b = this.x64Xor(b, z));
|
||
case 8:
|
||
q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 7)], 56));
|
||
case 7:
|
||
q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 6)], 48));
|
||
case 6:
|
||
q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 5)], 40));
|
||
case 5:
|
||
q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 4)], 32));
|
||
case 4:
|
||
q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 3)], 24));
|
||
case 3:
|
||
q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 2)], 16));
|
||
case 2:
|
||
q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 1)], 8));
|
||
case 1:
|
||
(q = this.x64Xor(q, [0, a.charCodeAt(B)])),
|
||
(q = this.x64Multiply(q, C)),
|
||
(q = this.x64Rotl(q, 31)),
|
||
(q = this.x64Multiply(q, D)),
|
||
(h = this.x64Xor(h, q));
|
||
}
|
||
h = this.x64Xor(h, [0, a.length]);
|
||
b = this.x64Xor(b, [0, a.length]);
|
||
h = this.x64Add(h, b);
|
||
b = this.x64Add(b, h);
|
||
h = this.x64Fmix(h);
|
||
b = this.x64Fmix(b);
|
||
h = this.x64Add(h, b);
|
||
b = this.x64Add(b, h);
|
||
return (
|
||
("00000000" + (h[0] >>> 0).toString(16)).slice(-8) +
|
||
("00000000" + (h[1] >>> 0).toString(16)).slice(-8) +
|
||
("00000000" + (b[0] >>> 0).toString(16)).slice(-8) +
|
||
("00000000" + (b[1] >>> 0).toString(16)).slice(-8)
|
||
);
|
||
},
|
||
};
|
||
}
|
||
|
||
var JDDSecCryptoJS =
|
||
JDDSecCryptoJS ||
|
||
(function (t, u) {
|
||
var v = {},
|
||
x = (v.lib = {}),
|
||
w = (x.Base = (function () {
|
||
function g() {}
|
||
|
||
return {
|
||
extend: function (m) {
|
||
g.prototype = this;
|
||
var a = new g();
|
||
m && a.mixIn(m);
|
||
a.hasOwnProperty("init") ||
|
||
(a.init = function () {
|
||
a.$super.init.apply(this, arguments);
|
||
});
|
||
a.init.prototype = a;
|
||
a.$super = this;
|
||
return a;
|
||
},
|
||
create: function () {
|
||
var m = this.extend();
|
||
m.init.apply(m, arguments);
|
||
return m;
|
||
},
|
||
init: function () {},
|
||
mixIn: function (m) {
|
||
for (var a in m) m.hasOwnProperty(a) && (this[a] = m[a]);
|
||
m.hasOwnProperty("toString") && (this.toString = m.toString);
|
||
},
|
||
clone: function () {
|
||
return this.init.prototype.extend(this);
|
||
},
|
||
};
|
||
})()),
|
||
A = (x.WordArray = w.extend({
|
||
init: function (g, m) {
|
||
g = this.words = g || [];
|
||
this.sigBytes = m != u ? m : 4 * g.length;
|
||
},
|
||
toString: function (g) {
|
||
return (g || n).stringify(this);
|
||
},
|
||
concat: function (g) {
|
||
var m = this.words,
|
||
a = g.words,
|
||
b = this.sigBytes;
|
||
g = g.sigBytes;
|
||
this.clamp();
|
||
if (b % 4)
|
||
for (var c = 0; c < g; c++)
|
||
m[(b + c) >>> 2] |=
|
||
((a[c >>> 2] >>> (24 - (c % 4) * 8)) & 255) <<
|
||
(24 - ((b + c) % 4) * 8);
|
||
else if (65535 < a.length)
|
||
for (c = 0; c < g; c += 4) m[(b + c) >>> 2] = a[c >>> 2];
|
||
else m.push.apply(m, a);
|
||
this.sigBytes += g;
|
||
return this;
|
||
},
|
||
clamp: function () {
|
||
var g = this.words,
|
||
m = this.sigBytes;
|
||
g[m >>> 2] &= 4294967295 << (32 - (m % 4) * 8);
|
||
g.length = t.ceil(m / 4);
|
||
},
|
||
clone: function () {
|
||
var g = w.clone.call(this);
|
||
g.words = this.words.slice(0);
|
||
return g;
|
||
},
|
||
random: function (g) {
|
||
for (var m = [], a = 0; a < g; a += 4)
|
||
m.push((4294967296 * t.random()) | 0);
|
||
return new A.init(m, g);
|
||
},
|
||
}));
|
||
x.UUID = w.extend({
|
||
generateUuid: function () {
|
||
for (
|
||
var g = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split(""),
|
||
m = 0,
|
||
a = g.length;
|
||
m < a;
|
||
m++
|
||
)
|
||
switch (g[m]) {
|
||
case "x":
|
||
g[m] = t.floor(16 * t.random()).toString(16);
|
||
break;
|
||
case "y":
|
||
g[m] = (t.floor(4 * t.random()) + 8).toString(16);
|
||
}
|
||
return g.join("");
|
||
},
|
||
});
|
||
var y = (v.enc = {}),
|
||
n = (y.Hex = {
|
||
stringify: function (g) {
|
||
var m = g.words;
|
||
g = g.sigBytes;
|
||
var a = [];
|
||
for (var b = 0; b < g; b++) {
|
||
var c = (m[b >>> 2] >>> (24 - (b % 4) * 8)) & 255;
|
||
a.push((c >>> 4).toString(16));
|
||
a.push((c & 15).toString(16));
|
||
}
|
||
return a.join("");
|
||
},
|
||
parse: function (g) {
|
||
for (var m = g.length, a = [], b = 0; b < m; b += 2)
|
||
a[b >>> 3] |= parseInt(g.substr(b, 2), 16) << (24 - (b % 8) * 4);
|
||
return new A.init(a, m / 2);
|
||
},
|
||
}),
|
||
e = (y.Latin1 = {
|
||
stringify: function (g) {
|
||
var m = g.words;
|
||
g = g.sigBytes;
|
||
for (var a = [], b = 0; b < g; b++)
|
||
a.push(
|
||
String.fromCharCode((m[b >>> 2] >>> (24 - (b % 4) * 8)) & 255)
|
||
);
|
||
return a.join("");
|
||
},
|
||
parse: function (g) {
|
||
for (var m = g.length, a = [], b = 0; b < m; b++)
|
||
a[b >>> 2] |= (g.charCodeAt(b) & 255) << (24 - (b % 4) * 8);
|
||
return new A.init(a, m);
|
||
},
|
||
}),
|
||
f = (y.Utf8 = {
|
||
stringify: function (g) {
|
||
try {
|
||
return decodeURIComponent(escape(e.stringify(g)));
|
||
} catch (m) {
|
||
throw Error("Malformed UTF-8 data");
|
||
}
|
||
},
|
||
parse: function (g) {
|
||
return e.parse(unescape(encodeURIComponent(g)));
|
||
},
|
||
}),
|
||
r = (x.BufferedBlockAlgorithm = w.extend({
|
||
reset: function () {
|
||
this._data = new A.init();
|
||
this._nDataBytes = 0;
|
||
},
|
||
_append: function (g) {
|
||
"string" == typeof g && (g = f.parse(g));
|
||
this._data.concat(g);
|
||
this._nDataBytes += g.sigBytes;
|
||
},
|
||
_process: function (g) {
|
||
var m = this._data,
|
||
a = m.words,
|
||
b = m.sigBytes,
|
||
c = this.blockSize,
|
||
l = b / (4 * c);
|
||
l = g ? t.ceil(l) : t.max((l | 0) - this._minBufferSize, 0);
|
||
g = l * c;
|
||
b = t.min(4 * g, b);
|
||
if (g) {
|
||
for (var h = 0; h < g; h += c) this._doProcessBlock(a, h);
|
||
h = a.splice(0, g);
|
||
m.sigBytes -= b;
|
||
}
|
||
return new A.init(h, b);
|
||
},
|
||
clone: function () {
|
||
var g = w.clone.call(this);
|
||
g._data = this._data.clone();
|
||
return g;
|
||
},
|
||
_minBufferSize: 0,
|
||
}));
|
||
x.Hasher = r.extend({
|
||
cfg: w.extend(),
|
||
init: function (g) {
|
||
this.cfg = this.cfg.extend(g);
|
||
this.reset();
|
||
},
|
||
reset: function () {
|
||
r.reset.call(this);
|
||
this._doReset();
|
||
},
|
||
update: function (g) {
|
||
this._append(g);
|
||
this._process();
|
||
return this;
|
||
},
|
||
finalize: function (g) {
|
||
g && this._append(g);
|
||
return this._doFinalize();
|
||
},
|
||
blockSize: 16,
|
||
_createHelper: function (g) {
|
||
return function (m, a) {
|
||
return new g.init(a).finalize(m);
|
||
};
|
||
},
|
||
_createHmacHelper: function (g) {
|
||
return function (m, a) {
|
||
return new k.HMAC.init(g, a).finalize(m);
|
||
};
|
||
},
|
||
});
|
||
var k = (v.algo = {});
|
||
v.channel = {};
|
||
return v;
|
||
})(Math);
|
||
JDDSecCryptoJS.lib.Cipher ||
|
||
(function (t) {
|
||
var u = JDDSecCryptoJS,
|
||
v = u.lib,
|
||
x = v.Base,
|
||
w = v.WordArray,
|
||
A = v.BufferedBlockAlgorithm,
|
||
y = (v.Cipher = A.extend({
|
||
cfg: x.extend(),
|
||
createEncryptor: function (g, m) {
|
||
return this.create(this._ENC_XFORM_MODE, g, m);
|
||
},
|
||
createDecryptor: function (g, m) {
|
||
return this.create(this._DEC_XFORM_MODE, g, m);
|
||
},
|
||
init: function (g, m, a) {
|
||
this.cfg = this.cfg.extend(a);
|
||
this._xformMode = g;
|
||
this._key = m;
|
||
this.reset();
|
||
},
|
||
reset: function () {
|
||
A.reset.call(this);
|
||
this._doReset();
|
||
},
|
||
process: function (g) {
|
||
this._append(g);
|
||
return this._process();
|
||
},
|
||
finalize: function (g) {
|
||
g && this._append(g);
|
||
return this._doFinalize();
|
||
},
|
||
keySize: 4,
|
||
ivSize: 4,
|
||
_ENC_XFORM_MODE: 1,
|
||
_DEC_XFORM_MODE: 2,
|
||
_createHelper: (function () {
|
||
function g(m) {
|
||
if ("string" != typeof m) return k;
|
||
}
|
||
|
||
return function (m) {
|
||
return {
|
||
encrypt: function (a, b, c) {
|
||
return g(b).encrypt(m, a, b, c);
|
||
},
|
||
decrypt: function (a, b, c) {
|
||
return g(b).decrypt(m, a, b, c);
|
||
},
|
||
};
|
||
};
|
||
})(),
|
||
}));
|
||
v.StreamCipher = y.extend({
|
||
_doFinalize: function () {
|
||
return this._process(!0);
|
||
},
|
||
blockSize: 1,
|
||
});
|
||
var n = (u.mode = {}),
|
||
e = (v.BlockCipherMode = x.extend({
|
||
createEncryptor: function (g, m) {
|
||
return this.Encryptor.create(g, m);
|
||
},
|
||
createDecryptor: function (g, m) {
|
||
return this.Decryptor.create(g, m);
|
||
},
|
||
init: function (g, m) {
|
||
this._cipher = g;
|
||
this._iv = m;
|
||
},
|
||
}));
|
||
n = n.CBC = (function () {
|
||
function g(a, b, c) {
|
||
var l = this._iv;
|
||
l ? (this._iv = t) : (l = this._prevBlock);
|
||
for (var h = 0; h < c; h++) a[b + h] ^= l[h];
|
||
}
|
||
|
||
var m = e.extend();
|
||
m.Encryptor = m.extend({
|
||
processBlock: function (a, b) {
|
||
var c = this._cipher,
|
||
l = c.blockSize;
|
||
g.call(this, a, b, l);
|
||
c.encryptBlock(a, b);
|
||
this._prevBlock = a.slice(b, b + l);
|
||
},
|
||
});
|
||
m.Decryptor = m.extend({
|
||
processBlock: function (a, b) {
|
||
var c = this._cipher,
|
||
l = c.blockSize,
|
||
h = a.slice(b, b + l);
|
||
c.decryptBlock(a, b);
|
||
g.call(this, a, b, l);
|
||
this._prevBlock = h;
|
||
},
|
||
});
|
||
return m;
|
||
})();
|
||
var f = ((u.pad = {}).Pkcs7 = {
|
||
pad: function (g, m) {
|
||
m *= 4;
|
||
m -= g.sigBytes % m;
|
||
for (
|
||
var a = (m << 24) | (m << 16) | (m << 8) | m, b = [], c = 0;
|
||
c < m;
|
||
c += 4
|
||
)
|
||
b.push(a);
|
||
m = w.create(b, m);
|
||
g.concat(m);
|
||
},
|
||
unpad: function (g) {
|
||
g.sigBytes -= g.words[(g.sigBytes - 1) >>> 2] & 255;
|
||
},
|
||
});
|
||
v.BlockCipher = y.extend({
|
||
cfg: y.cfg.extend({
|
||
mode: n,
|
||
padding: f,
|
||
}),
|
||
reset: function () {
|
||
y.reset.call(this);
|
||
var g = this.cfg,
|
||
m = g.iv;
|
||
g = g.mode;
|
||
if (this._xformMode == this._ENC_XFORM_MODE) var a = g.createEncryptor;
|
||
else (a = g.createDecryptor), (this._minBufferSize = 1);
|
||
this._mode = a.call(g, this, m && m.words);
|
||
},
|
||
_doProcessBlock: function (g, m) {
|
||
this._mode.processBlock(g, m);
|
||
},
|
||
_doFinalize: function () {
|
||
var g = this.cfg.padding;
|
||
if (this._xformMode == this._ENC_XFORM_MODE) {
|
||
g.pad(this._data, this.blockSize);
|
||
var m = this._process(!0);
|
||
} else (m = this._process(!0)), g.unpad(m);
|
||
return m;
|
||
},
|
||
blockSize: 4,
|
||
});
|
||
var r = (v.CipherParams = x.extend({
|
||
init: function (g) {
|
||
this.mixIn(g);
|
||
},
|
||
toString: function (g) {
|
||
return (g || this.formatter).stringify(this);
|
||
},
|
||
}));
|
||
u.format = {};
|
||
var k = (v.SerializableCipher = x.extend({
|
||
cfg: x.extend({}),
|
||
encrypt: function (g, m, a, b) {
|
||
b = this.cfg.extend(b);
|
||
var c = g.createEncryptor(a, b);
|
||
m = c.finalize(m);
|
||
c = c.cfg;
|
||
return r.create({
|
||
ciphertext: m,
|
||
key: a,
|
||
iv: c.iv,
|
||
algorithm: g,
|
||
mode: c.mode,
|
||
padding: c.padding,
|
||
blockSize: g.blockSize,
|
||
formatter: b.format,
|
||
});
|
||
},
|
||
decrypt: function (g, m, a, b) {
|
||
b = this.cfg.extend(b);
|
||
m = this._parse(m, b.format);
|
||
return g.createDecryptor(a, b).finalize(m.ciphertext);
|
||
},
|
||
_parse: function (g, m) {
|
||
return "string" == typeof g ? m.parse(g, this) : g;
|
||
},
|
||
}));
|
||
})();
|
||
(function () {
|
||
var t = JDDSecCryptoJS,
|
||
u = t.lib.BlockCipher,
|
||
v = t.algo,
|
||
x = [],
|
||
w = [],
|
||
A = [],
|
||
y = [],
|
||
n = [],
|
||
e = [],
|
||
f = [],
|
||
r = [],
|
||
k = [],
|
||
g = [];
|
||
(function () {
|
||
for (var a = [], b = 0; 256 > b; b++)
|
||
a[b] = 128 > b ? b << 1 : (b << 1) ^ 283;
|
||
var c = 0,
|
||
l = 0;
|
||
for (b = 0; 256 > b; b++) {
|
||
var h = l ^ (l << 1) ^ (l << 2) ^ (l << 3) ^ (l << 4);
|
||
h = (h >>> 8) ^ (h & 255) ^ 99;
|
||
x[c] = h;
|
||
w[h] = c;
|
||
var q = a[c],
|
||
z = a[q],
|
||
C = a[z],
|
||
D = (257 * a[h]) ^ (16843008 * h);
|
||
A[c] = (D << 24) | (D >>> 8);
|
||
y[c] = (D << 16) | (D >>> 16);
|
||
n[c] = (D << 8) | (D >>> 24);
|
||
e[c] = D;
|
||
D = (16843009 * C) ^ (65537 * z) ^ (257 * q) ^ (16843008 * c);
|
||
f[h] = (D << 24) | (D >>> 8);
|
||
r[h] = (D << 16) | (D >>> 16);
|
||
k[h] = (D << 8) | (D >>> 24);
|
||
g[h] = D;
|
||
c ? ((c = q ^ a[a[a[C ^ q]]]), (l ^= a[a[l]])) : (c = l = 1);
|
||
}
|
||
})();
|
||
var m = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54];
|
||
v = v.AES = u.extend({
|
||
_doReset: function () {
|
||
var a = this._key,
|
||
b = a.words,
|
||
c = a.sigBytes / 4;
|
||
a = 4 * ((this._nRounds = c + 6) + 1);
|
||
for (var l = (this._keySchedule = []), h = 0; h < a; h++)
|
||
if (h < c) l[h] = b[h];
|
||
else {
|
||
var q = l[h - 1];
|
||
h % c
|
||
? 6 < c &&
|
||
4 == h % c &&
|
||
(q =
|
||
(x[q >>> 24] << 24) |
|
||
(x[(q >>> 16) & 255] << 16) |
|
||
(x[(q >>> 8) & 255] << 8) |
|
||
x[q & 255])
|
||
: ((q = (q << 8) | (q >>> 24)),
|
||
(q =
|
||
(x[q >>> 24] << 24) |
|
||
(x[(q >>> 16) & 255] << 16) |
|
||
(x[(q >>> 8) & 255] << 8) |
|
||
x[q & 255]),
|
||
(q ^= m[(h / c) | 0] << 24));
|
||
l[h] = l[h - c] ^ q;
|
||
}
|
||
b = this._invKeySchedule = [];
|
||
for (c = 0; c < a; c++)
|
||
(h = a - c),
|
||
(q = c % 4 ? l[h] : l[h - 4]),
|
||
(b[c] =
|
||
4 > c || 4 >= h
|
||
? q
|
||
: f[x[q >>> 24]] ^
|
||
r[x[(q >>> 16) & 255]] ^
|
||
k[x[(q >>> 8) & 255]] ^
|
||
g[x[q & 255]]);
|
||
},
|
||
encryptBlock: function (a, b) {
|
||
this._doCryptBlock(a, b, this._keySchedule, A, y, n, e, x);
|
||
},
|
||
decryptBlock: function (a, b) {
|
||
var c = a[b + 1];
|
||
a[b + 1] = a[b + 3];
|
||
a[b + 3] = c;
|
||
this._doCryptBlock(a, b, this._invKeySchedule, f, r, k, g, w);
|
||
c = a[b + 1];
|
||
a[b + 1] = a[b + 3];
|
||
a[b + 3] = c;
|
||
},
|
||
_doCryptBlock: function (a, b, c, l, h, q, z, C) {
|
||
for (
|
||
var D = this._nRounds,
|
||
B = a[b] ^ c[0],
|
||
F = a[b + 1] ^ c[1],
|
||
H = a[b + 2] ^ c[2],
|
||
G = a[b + 3] ^ c[3],
|
||
I = 4,
|
||
M = 1;
|
||
M < D;
|
||
M++
|
||
) {
|
||
var J =
|
||
l[B >>> 24] ^
|
||
h[(F >>> 16) & 255] ^
|
||
q[(H >>> 8) & 255] ^
|
||
z[G & 255] ^
|
||
c[I++],
|
||
K =
|
||
l[F >>> 24] ^
|
||
h[(H >>> 16) & 255] ^
|
||
q[(G >>> 8) & 255] ^
|
||
z[B & 255] ^
|
||
c[I++],
|
||
L =
|
||
l[H >>> 24] ^
|
||
h[(G >>> 16) & 255] ^
|
||
q[(B >>> 8) & 255] ^
|
||
z[F & 255] ^
|
||
c[I++];
|
||
G =
|
||
l[G >>> 24] ^
|
||
h[(B >>> 16) & 255] ^
|
||
q[(F >>> 8) & 255] ^
|
||
z[H & 255] ^
|
||
c[I++];
|
||
B = J;
|
||
F = K;
|
||
H = L;
|
||
}
|
||
J =
|
||
((C[B >>> 24] << 24) |
|
||
(C[(F >>> 16) & 255] << 16) |
|
||
(C[(H >>> 8) & 255] << 8) |
|
||
C[G & 255]) ^
|
||
c[I++];
|
||
K =
|
||
((C[F >>> 24] << 24) |
|
||
(C[(H >>> 16) & 255] << 16) |
|
||
(C[(G >>> 8) & 255] << 8) |
|
||
C[B & 255]) ^
|
||
c[I++];
|
||
L =
|
||
((C[H >>> 24] << 24) |
|
||
(C[(G >>> 16) & 255] << 16) |
|
||
(C[(B >>> 8) & 255] << 8) |
|
||
C[F & 255]) ^
|
||
c[I++];
|
||
G =
|
||
((C[G >>> 24] << 24) |
|
||
(C[(B >>> 16) & 255] << 16) |
|
||
(C[(F >>> 8) & 255] << 8) |
|
||
C[H & 255]) ^
|
||
c[I++];
|
||
a[b] = J;
|
||
a[b + 1] = K;
|
||
a[b + 2] = L;
|
||
a[b + 3] = G;
|
||
},
|
||
keySize: 8,
|
||
});
|
||
t.AES = u._createHelper(v);
|
||
})();
|
||
|
||
(function () {
|
||
var t = JDDSecCryptoJS,
|
||
u = t.lib,
|
||
v = u.WordArray,
|
||
x = u.Hasher,
|
||
w = [];
|
||
u = t.algo.SHA1 = x.extend({
|
||
_doReset: function () {
|
||
this._hash = new v.init([
|
||
1732584193, 4023233417, 2562383102, 271733878, 3285377520,
|
||
]);
|
||
},
|
||
_doProcessBlock: function (A, y) {
|
||
for (
|
||
var n = this._hash.words,
|
||
e = n[0],
|
||
f = n[1],
|
||
r = n[2],
|
||
k = n[3],
|
||
g = n[4],
|
||
m = 0;
|
||
80 > m;
|
||
m++
|
||
) {
|
||
if (16 > m) w[m] = A[y + m] | 0;
|
||
else {
|
||
var a = w[m - 3] ^ w[m - 8] ^ w[m - 14] ^ w[m - 16];
|
||
w[m] = (a << 1) | (a >>> 31);
|
||
}
|
||
a = ((e << 5) | (e >>> 27)) + g + w[m];
|
||
a =
|
||
20 > m
|
||
? a + (((f & r) | (~f & k)) + 1518500249)
|
||
: 40 > m
|
||
? a + ((f ^ r ^ k) + 1859775393)
|
||
: 60 > m
|
||
? a + (((f & r) | (f & k) | (r & k)) - 1894007588)
|
||
: a + ((f ^ r ^ k) - 899497514);
|
||
g = k;
|
||
k = r;
|
||
r = (f << 30) | (f >>> 2);
|
||
f = e;
|
||
e = a;
|
||
}
|
||
n[0] = (n[0] + e) | 0;
|
||
n[1] = (n[1] + f) | 0;
|
||
n[2] = (n[2] + r) | 0;
|
||
n[3] = (n[3] + k) | 0;
|
||
n[4] = (n[4] + g) | 0;
|
||
},
|
||
_doFinalize: function () {
|
||
var A = this._data,
|
||
y = A.words,
|
||
n = 8 * this._nDataBytes,
|
||
e = 8 * A.sigBytes;
|
||
y[e >>> 5] |= 128 << (24 - (e % 32));
|
||
y[(((e + 64) >>> 9) << 4) + 14] = Math.floor(n / 4294967296);
|
||
y[(((e + 64) >>> 9) << 4) + 15] = n;
|
||
A.sigBytes = 4 * y.length;
|
||
this._process();
|
||
return this._hash;
|
||
},
|
||
clone: function () {
|
||
var A = x.clone.call(this);
|
||
A._hash = this._hash.clone();
|
||
return A;
|
||
},
|
||
});
|
||
t.SHA1 = x._createHelper(u);
|
||
t.HmacSHA1 = x._createHmacHelper(u);
|
||
})();
|
||
|
||
(function () {
|
||
var t = JDDSecCryptoJS,
|
||
u = t.channel;
|
||
u.Downlink = {
|
||
deBase32: function (v) {
|
||
if (void 0 == v || "" == v || null == v) return "";
|
||
var x = t.enc.Hex.parse("30313233343536373839616263646566"),
|
||
w = t.enc.Hex.parse("724e5428476f307361374d3233784a6c");
|
||
return t.AES.decrypt(
|
||
{
|
||
ciphertext: t.enc.Base32.parse(v),
|
||
},
|
||
w,
|
||
{
|
||
mode: t.mode.CBC,
|
||
padding: t.pad.Pkcs7,
|
||
iv: x,
|
||
}
|
||
).toString(t.enc.Utf8);
|
||
},
|
||
deBase64: function (v) {
|
||
return "";
|
||
},
|
||
};
|
||
u.Uplink = {
|
||
enAsBase32: function (v) {
|
||
return "";
|
||
},
|
||
enAsBase64: function (v) {
|
||
return "";
|
||
},
|
||
};
|
||
})();
|
||
|
||
(function () {
|
||
var t = JDDSecCryptoJS,
|
||
u = t.lib.WordArray;
|
||
t.enc.Base32 = {
|
||
stringify: function (v) {
|
||
var x = v.words,
|
||
w = v.sigBytes,
|
||
A = this._map;
|
||
v.clamp();
|
||
v = [];
|
||
for (var y = 0; y < w; y += 5) {
|
||
for (var n = [], e = 0; 5 > e; e++)
|
||
n[e] = (x[(y + e) >>> 2] >>> (24 - ((y + e) % 4) * 8)) & 255;
|
||
n = [
|
||
(n[0] >>> 3) & 31,
|
||
((n[0] & 7) << 2) | ((n[1] >>> 6) & 3),
|
||
(n[1] >>> 1) & 31,
|
||
((n[1] & 1) << 4) | ((n[2] >>> 4) & 15),
|
||
((n[2] & 15) << 1) | ((n[3] >>> 7) & 1),
|
||
(n[3] >>> 2) & 31,
|
||
((n[3] & 3) << 3) | ((n[4] >>> 5) & 7),
|
||
n[4] & 31,
|
||
];
|
||
for (e = 0; 8 > e && y + 0.625 * e < w; e++) v.push(A.charAt(n[e]));
|
||
}
|
||
if ((x = A.charAt(32))) for (; v.length % 8; ) v.push(x);
|
||
return v.join("");
|
||
},
|
||
parse: function (v) {
|
||
var x = v.length,
|
||
w = this._map,
|
||
A = w.charAt(32);
|
||
A && ((A = v.indexOf(A)), -1 != A && (x = A));
|
||
A = [];
|
||
for (var y = 0, n = 0; n < x; n++) {
|
||
var e = n % 8;
|
||
if (0 != e && 2 != e && 5 != e) {
|
||
var f = 255 & (w.indexOf(v.charAt(n - 1)) << (40 - 5 * e) % 8),
|
||
r = 255 & (w.indexOf(v.charAt(n)) >>> (5 * e - 3) % 8);
|
||
e =
|
||
e % 3 ? 0 : 255 & (w.indexOf(v.charAt(n - 2)) << (3 == e ? 6 : 7));
|
||
A[y >>> 2] |= (f | r | e) << (24 - (y % 4) * 8);
|
||
y++;
|
||
}
|
||
}
|
||
return u.create(A, y);
|
||
},
|
||
_map: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",
|
||
};
|
||
})();
|
||
|
||
class JDDMAC {
|
||
static t() {
|
||
return "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"
|
||
.split(" ")
|
||
.map(function (v) {
|
||
return parseInt(v, 16);
|
||
});
|
||
}
|
||
|
||
mac(v) {
|
||
for (var x = -1, w = 0, A = v.length; w < A; w++)
|
||
x = (x >>> 8) ^ t[(x ^ v.charCodeAt(w)) & 255];
|
||
return (x ^ -1) >>> 0;
|
||
}
|
||
}
|
||
|
||
var _CurrentPageProtocol =
|
||
"https:" == document.location.protocol ? "https://" : "http://",
|
||
_JdJrTdRiskDomainName = window.__fp_domain || "gia.jd.com",
|
||
_url_query_str = "",
|
||
_root_domain = "",
|
||
_CurrentPageUrl = (function () {
|
||
var t = document.location.href.toString();
|
||
try {
|
||
_root_domain =
|
||
/^https?:\/\/(?:\w+\.)*?(\w*\.(?:com\.cn|cn|com|net|id))[\\\/]*/.exec(
|
||
t
|
||
)[1];
|
||
} catch (v) {}
|
||
var u = t.indexOf("?");
|
||
0 < u &&
|
||
((_url_query_str = t.substring(u + 1)),
|
||
500 < _url_query_str.length &&
|
||
(_url_query_str = _url_query_str.substring(0, 499)),
|
||
(t = t.substring(0, u)));
|
||
return (t = t.substring(_CurrentPageProtocol.length));
|
||
})(),
|
||
jd_shadow__ = (function () {
|
||
try {
|
||
var t = JDDSecCryptoJS,
|
||
u = [];
|
||
u.push(_CurrentPageUrl);
|
||
var v = t.lib.UUID.generateUuid();
|
||
u.push(v);
|
||
var x = new Date().getTime();
|
||
u.push(x);
|
||
var w = t.SHA1(u.join("")).toString().toUpperCase();
|
||
u = [];
|
||
u.push("JD3");
|
||
u.push(w);
|
||
var A = new JDDMAC().mac(u.join(""));
|
||
u.push(A);
|
||
var y = t.enc.Hex.parse("30313233343536373839616263646566"),
|
||
n = t.enc.Hex.parse("4c5751554935255042304e6458323365"),
|
||
e = u.join("");
|
||
return t.AES.encrypt(t.enc.Utf8.parse(e), n, {
|
||
mode: t.mode.CBC,
|
||
padding: t.pad.Pkcs7,
|
||
iv: y,
|
||
}).ciphertext.toString(t.enc.Base32);
|
||
} catch (f) {
|
||
console.log(f);
|
||
}
|
||
})();
|
||
var td_collect = new (function () {
|
||
function t() {
|
||
var n =
|
||
window.webkitRTCPeerConnection ||
|
||
window.mozRTCPeerConnection ||
|
||
window.RTCPeerConnection;
|
||
if (n) {
|
||
var e = function (k) {
|
||
var g = /([0-9]{1,3}(\.[0-9]{1,3}){3})/,
|
||
m =
|
||
/\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*/;
|
||
try {
|
||
var a = g.exec(k);
|
||
if (null == a || 0 == a.length || void 0 == a) a = m.exec(k);
|
||
var b = a[1];
|
||
void 0 === f[b] && w.push(b);
|
||
f[b] = !0;
|
||
} catch (c) {}
|
||
},
|
||
f = {};
|
||
try {
|
||
var r = new n({
|
||
iceServers: [
|
||
{
|
||
url: "stun:stun.services.mozilla.com",
|
||
},
|
||
],
|
||
});
|
||
} catch (k) {}
|
||
try {
|
||
void 0 === r &&
|
||
(r = new n({
|
||
iceServers: [],
|
||
}));
|
||
} catch (k) {}
|
||
if (r || window.mozRTCPeerConnection)
|
||
try {
|
||
r.createDataChannel("chat", {
|
||
reliable: !1,
|
||
});
|
||
} catch (k) {}
|
||
r &&
|
||
((r.onicecandidate = function (k) {
|
||
k.candidate && e(k.candidate.candidate);
|
||
}),
|
||
r.createOffer(
|
||
function (k) {
|
||
r.setLocalDescription(
|
||
k,
|
||
function () {},
|
||
function () {}
|
||
);
|
||
},
|
||
function () {}
|
||
),
|
||
setTimeout(function () {
|
||
try {
|
||
r.localDescription.sdp.split("\n").forEach(function (k) {
|
||
0 === k.indexOf("a=candidate:") && e(k);
|
||
});
|
||
} catch (k) {}
|
||
}, 800));
|
||
}
|
||
}
|
||
|
||
function u(n) {
|
||
var e;
|
||
return (e = document.cookie.match(
|
||
new RegExp("(^| )" + n + "=([^;]*)(;|$)")
|
||
))
|
||
? e[2]
|
||
: "";
|
||
}
|
||
|
||
function v() {
|
||
function n(g) {
|
||
var m = {};
|
||
r.style.fontFamily = g;
|
||
document.body.appendChild(r);
|
||
m.height = r.offsetHeight;
|
||
m.width = r.offsetWidth;
|
||
document.body.removeChild(r);
|
||
return m;
|
||
}
|
||
|
||
var e = ["monospace", "sans-serif", "serif"],
|
||
f = [],
|
||
r = document.createElement("span");
|
||
r.style.fontSize = "72px";
|
||
r.style.visibility = "hidden";
|
||
r.innerHTML = "mmmmmmmmmmlli";
|
||
for (var k = 0; k < e.length; k++) f[k] = n(e[k]);
|
||
this.checkSupportFont = function (g) {
|
||
for (var m = 0; m < f.length; m++) {
|
||
var a = n(g + "," + e[m]),
|
||
b = f[m];
|
||
if (a.height !== b.height || a.width !== b.width) return !0;
|
||
}
|
||
return !1;
|
||
};
|
||
}
|
||
|
||
function x(n) {
|
||
var e = {};
|
||
e.name = n.name;
|
||
e.filename = n.filename.toLowerCase();
|
||
e.description = n.description;
|
||
void 0 !== n.version && (e.version = n.version);
|
||
e.mimeTypes = [];
|
||
for (var f = 0; f < n.length; f++) {
|
||
var r = n[f],
|
||
k = {};
|
||
k.description = r.description;
|
||
k.suffixes = r.suffixes;
|
||
k.type = r.type;
|
||
e.mimeTypes.push(k);
|
||
}
|
||
return e;
|
||
}
|
||
|
||
this.bizId = "";
|
||
this.bioConfig = {
|
||
type: "42",
|
||
operation: 1,
|
||
duraTime: 2,
|
||
interval: 50,
|
||
};
|
||
this.worder = null;
|
||
this.deviceInfo = {
|
||
userAgent: "",
|
||
isJdApp: !1,
|
||
isJrApp: !1,
|
||
sdkToken: "",
|
||
fp: "",
|
||
eid: "",
|
||
};
|
||
this.isRpTok = !1;
|
||
this.obtainLocal = function (n) {
|
||
n = "undefined" !== typeof n && n ? !0 : !1;
|
||
var e = {};
|
||
try {
|
||
var f = document.cookie.replace(
|
||
/(?:(?:^|.*;\s*)3AB9D23F7A4B3C9B\s*=\s*([^;]*).*$)|^.*$/,
|
||
"$1"
|
||
);
|
||
0 !== f.length && (e.cookie = f);
|
||
} catch (k) {}
|
||
try {
|
||
window.localStorage &&
|
||
null !== window.localStorage &&
|
||
0 !== window.localStorage.length &&
|
||
(e.localStorage = window.localStorage.getItem("3AB9D23F7A4B3C9B"));
|
||
} catch (k) {}
|
||
try {
|
||
window.sessionStorage &&
|
||
null !== window.sessionStorage &&
|
||
(e.sessionStorage = window.sessionStorage["3AB9D23F7A4B3C9B"]);
|
||
} catch (k) {}
|
||
try {
|
||
p.globalStorage &&
|
||
(e.globalStorage =
|
||
window.globalStorage[".localdomain"]["3AB9D23F7A4B3C9B"]);
|
||
} catch (k) {}
|
||
try {
|
||
d &&
|
||
"function" == typeof d.load &&
|
||
"function" == typeof d.getAttribute &&
|
||
(d.load("jdgia_user_data"),
|
||
(e.userData = d.getAttribute("3AB9D23F7A4B3C9B")));
|
||
} catch (k) {}
|
||
try {
|
||
E.indexedDbId && (e.indexedDb = E.indexedDbId);
|
||
} catch (k) {}
|
||
try {
|
||
E.webDbId && (e.webDb = E.webDbId);
|
||
} catch (k) {}
|
||
try {
|
||
for (var r in e)
|
||
if (32 < e[r].length) {
|
||
_JdEid = e[r];
|
||
n || (_eidFlag = !0);
|
||
break;
|
||
}
|
||
} catch (k) {}
|
||
try {
|
||
("undefined" === typeof _JdEid || 0 >= _JdEid.length) &&
|
||
this.db("3AB9D23F7A4B3C9B");
|
||
if ("undefined" === typeof _JdEid || 0 >= _JdEid.length)
|
||
_JdEid = u("3AB9D23F7A4B3C9B");
|
||
if ("undefined" === typeof _JdEid || 0 >= _JdEid.length) _eidFlag = !0;
|
||
} catch (k) {}
|
||
return _JdEid;
|
||
};
|
||
var w = [],
|
||
A =
|
||
"Abadi MT Condensed Light;Adobe Fangsong Std;Adobe Hebrew;Adobe Ming Std;Agency FB;Arab;Arabic Typesetting;Arial Black;Batang;Bauhaus 93;Bell MT;Bitstream Vera Serif;Bodoni MT;Bookman Old Style;Braggadocio;Broadway;Calibri;Californian FB;Castellar;Casual;Centaur;Century Gothic;Chalkduster;Colonna MT;Copperplate Gothic Light;DejaVu LGC Sans Mono;Desdemona;DFKai-SB;Dotum;Engravers MT;Eras Bold ITC;Eurostile;FangSong;Forte;Franklin Gothic Heavy;French Script MT;Gabriola;Gigi;Gisha;Goudy Old Style;Gulim;GungSeo;Haettenschweiler;Harrington;Hiragino Sans GB;Impact;Informal Roman;KacstOne;Kino MT;Kozuka Gothic Pr6N;Lohit Gujarati;Loma;Lucida Bright;Lucida Fax;Magneto;Malgun Gothic;Matura MT Script Capitals;Menlo;MingLiU-ExtB;MoolBoran;MS PMincho;MS Reference Sans Serif;News Gothic MT;Niagara Solid;Nyala;Palace Script MT;Papyrus;Perpetua;Playbill;PMingLiU;Rachana;Rockwell;Sawasdee;Script MT Bold;Segoe Print;Showcard Gothic;SimHei;Snap ITC;TlwgMono;Tw Cen MT Condensed Extra Bold;Ubuntu;Umpush;Univers;Utopia;Vladimir Script;Wide Latin".split(
|
||
";"
|
||
),
|
||
y =
|
||
"4game;AdblockPlugin;AdobeExManCCDetect;AdobeExManDetect;Alawar NPAPI utils;Aliedit Plug-In;Alipay Security Control 3;AliSSOLogin plugin;AmazonMP3DownloaderPlugin;AOL Media Playback Plugin;AppUp;ArchiCAD;AVG SiteSafety plugin;Babylon ToolBar;Battlelog Game Launcher;BitCometAgent;Bitdefender QuickScan;BlueStacks Install Detector;CatalinaGroup Update;Citrix ICA Client;Citrix online plug-in;Citrix Receiver Plug-in;Coowon Update;DealPlyLive Update;Default Browser Helper;DivX Browser Plug-In;DivX Plus Web Player;DivX VOD Helper Plug-in;doubleTwist Web Plugin;Downloaders plugin;downloadUpdater;eMusicPlugin DLM6;ESN Launch Mozilla Plugin;ESN Sonar API;Exif Everywhere;Facebook Plugin;File Downloader Plug-in;FileLab plugin;FlyOrDie Games Plugin;Folx 3 Browser Plugin;FUZEShare;GDL Object Web Plug-in 16.00;GFACE Plugin;Ginger;Gnome Shell Integration;Google Earth Plugin;Google Earth Plug-in;Google Gears 0.5.33.0;Google Talk Effects Plugin;Google Update;Harmony Firefox Plugin;Harmony Plug-In;Heroes & Generals live;HPDetect;Html5 location provider;IE Tab plugin;iGetterScriptablePlugin;iMesh plugin;Kaspersky Password Manager;LastPass;LogMeIn Plugin 1.0.0.935;LogMeIn Plugin 1.0.0.961;Ma-Config.com plugin;Microsoft Office 2013;MinibarPlugin;Native Client;Nitro PDF Plug-In;Nokia Suite Enabler Plugin;Norton Identity Safe;npAPI Plugin;NPLastPass;NPPlayerShell;npTongbuAddin;NyxLauncher;Octoshape Streaming Services;Online Storage plug-in;Orbit Downloader;Pando Web Plugin;Parom.TV player plugin;PDF integrado do WebKit;PDF-XChange Viewer;PhotoCenterPlugin1.1.2.2;Picasa;PlayOn Plug-in;QQ2013 Firefox Plugin;QQDownload Plugin;QQMiniDL Plugin;QQMusic;RealDownloader Plugin;Roblox Launcher Plugin;RockMelt Update;Safer Update;SafeSearch;Scripting.Dictionary;SefClient Plugin;Shell.UIHelper;Silverlight Plug-In;Simple Pass;Skype Web Plugin;SumatraPDF Browser Plugin;Symantec PKI Client;Tencent FTN plug-in;Thunder DapCtrl NPAPI Plugin;TorchHelper;Unity Player;Uplay PC;VDownloader;Veetle TV Core;VLC Multimedia Plugin;Web Components;WebKit-integrierte PDF;WEBZEN Browser Extension;Wolfram Mathematica;WordCaptureX;WPI Detector 1.4;Yandex Media Plugin;Yandex PDF Viewer;YouTube Plug-in;zako".split(
|
||
";"
|
||
);
|
||
this.toJson = "object" === typeof JSON && JSON.stringify;
|
||
this.init = function () {
|
||
_fingerprint_step = 6;
|
||
t();
|
||
_fingerprint_step = 7;
|
||
"function" !== typeof this.toJson &&
|
||
(this.toJson = function (n) {
|
||
var e = typeof n;
|
||
if ("undefined" === e || null === n) return "null";
|
||
if ("number" === e || "boolean" === e) return n + "";
|
||
if ("object" === e && n && n.constructor === Array) {
|
||
e = [];
|
||
for (var f = 0; n.length > f; f++) e.push(this.toJson(n[f]));
|
||
return "[" + (e + "]");
|
||
}
|
||
if ("object" === e) {
|
||
e = [];
|
||
for (f in n)
|
||
n.hasOwnProperty(f) && e.push('"' + f + '":' + this.toJson(n[f]));
|
||
return "{" + (e + "}");
|
||
}
|
||
});
|
||
this.sdkCollectInit();
|
||
};
|
||
this.sdkCollectInit = function () {
|
||
try {
|
||
try {
|
||
bp_bizid && (this.bizId = bp_bizid);
|
||
} catch (f) {
|
||
this.bizId = "jsDefault";
|
||
}
|
||
var n = navigator.userAgent.toLowerCase(),
|
||
e =
|
||
!n.match(/(iphone|ipad|ipod)/i) &&
|
||
(-1 < n.indexOf("android") || -1 < n.indexOf("adr"));
|
||
this.deviceInfo.isJdApp = -1 < n.indexOf("jdapp");
|
||
this.deviceInfo.isJrApp = -1 < n.indexOf("jdjr");
|
||
this.deviceInfo.userAgent = navigator.userAgent;
|
||
this.deviceInfo.isAndroid = e;
|
||
this.createWorker();
|
||
} catch (f) {}
|
||
};
|
||
this.db = function (n, e) {
|
||
try {
|
||
_fingerprint_step = "m";
|
||
if (window.openDatabase) {
|
||
var f = window.openDatabase(
|
||
"sqlite_jdtdstorage",
|
||
"",
|
||
"jdtdstorage",
|
||
1048576
|
||
);
|
||
void 0 !== e && "" != e
|
||
? f.transaction(function (r) {
|
||
r.executeSql(
|
||
"CREATE TABLE IF NOT EXISTS cache(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, value TEXT NOT NULL, UNIQUE (name))",
|
||
[],
|
||
function (k, g) {},
|
||
function (k, g) {}
|
||
);
|
||
r.executeSql(
|
||
"INSERT OR REPLACE INTO cache(name, value) VALUES(?, ?)",
|
||
[n, e],
|
||
function (k, g) {},
|
||
function (k, g) {}
|
||
);
|
||
})
|
||
: f.transaction(function (r) {
|
||
r.executeSql(
|
||
"SELECT value FROM cache WHERE name=?",
|
||
[n],
|
||
function (k, g) {
|
||
1 <= g.rows.length && (_JdEid = g.rows.item(0).value);
|
||
},
|
||
function (k, g) {}
|
||
);
|
||
});
|
||
}
|
||
_fingerprint_step = "n";
|
||
} catch (r) {}
|
||
};
|
||
this.setCookie = function (n, e) {
|
||
void 0 !== e &&
|
||
"" != e &&
|
||
(document.cookie =
|
||
n +
|
||
"=" +
|
||
e +
|
||
"; expires=Tue, 31 Dec 2030 00:00:00 UTC; path=/; domain=" +
|
||
_root_domain);
|
||
};
|
||
this.tdencrypt = function (n) {
|
||
n = this.toJson(n);
|
||
n = encodeURIComponent(n);
|
||
var e = "",
|
||
f = 0;
|
||
do {
|
||
var r = n.charCodeAt(f++);
|
||
var k = n.charCodeAt(f++);
|
||
var g = n.charCodeAt(f++);
|
||
var m = r >> 2;
|
||
r = ((r & 3) << 4) | (k >> 4);
|
||
var a = ((k & 15) << 2) | (g >> 6);
|
||
var b = g & 63;
|
||
isNaN(k) ? (a = b = 64) : isNaN(g) && (b = 64);
|
||
e =
|
||
e +
|
||
"23IL<N01c7KvwZO56RSTAfghiFyzWJqVabGH4PQdopUrsCuX*xeBjkltDEmn89.-".charAt(
|
||
m
|
||
) +
|
||
"23IL<N01c7KvwZO56RSTAfghiFyzWJqVabGH4PQdopUrsCuX*xeBjkltDEmn89.-".charAt(
|
||
r
|
||
) +
|
||
"23IL<N01c7KvwZO56RSTAfghiFyzWJqVabGH4PQdopUrsCuX*xeBjkltDEmn89.-".charAt(
|
||
a
|
||
) +
|
||
"23IL<N01c7KvwZO56RSTAfghiFyzWJqVabGH4PQdopUrsCuX*xeBjkltDEmn89.-".charAt(
|
||
b
|
||
);
|
||
} while (f < n.length);
|
||
return e + "/";
|
||
};
|
||
this.collect = function () {
|
||
var n = new Date();
|
||
try {
|
||
var e = document.createElement("div"),
|
||
f = {},
|
||
r =
|
||
"ActiveBorder ActiveCaption AppWorkspace Background ButtonFace ButtonHighlight ButtonShadow ButtonText CaptionText GrayText Highlight HighlightText InactiveBorder InactiveCaption InactiveCaptionText InfoBackground InfoText Menu MenuText Scrollbar ThreeDDarkShadow ThreeDFace ThreeDHighlight ThreeDLightShadow ThreeDShadow Window WindowFrame WindowText".split(
|
||
" "
|
||
);
|
||
if (window.getComputedStyle)
|
||
for (var k = 0; k < r.length; k++)
|
||
document.body.appendChild(e),
|
||
(e.style.color = r[k]),
|
||
(f[r[k]] = window.getComputedStyle(e).getPropertyValue("color")),
|
||
document.body.removeChild(e);
|
||
} catch (D) {}
|
||
e = {
|
||
ca: {},
|
||
ts: {},
|
||
m: {},
|
||
};
|
||
r = e.ca;
|
||
r.tdHash = _jdfp_canvas_md5;
|
||
var g = !1;
|
||
if ((k = window.WebGLRenderingContext))
|
||
(k = navigator.userAgent),
|
||
(k = k.toLowerCase()),
|
||
(k =
|
||
(0 < k.indexOf("jdjr-app") || 0 <= k.indexOf("jdapp")) &&
|
||
(0 < k.indexOf("iphone") || 0 < k.indexOf("ipad"))
|
||
? !0
|
||
: !1),
|
||
(k = !k);
|
||
if (k) {
|
||
var m = ["webgl", "experimental-webgl", "moz-webgl", "webkit-3d"],
|
||
a = [],
|
||
b;
|
||
for (k = 0; k < m.length; k++)
|
||
try {
|
||
var c = !1;
|
||
(c = document.createElement("canvas").getContext(m[k], {
|
||
stencil: !0,
|
||
})) &&
|
||
c &&
|
||
((b = c), a.push(m[k]));
|
||
} catch (D) {}
|
||
a.length &&
|
||
(g = {
|
||
name: a,
|
||
gl: b,
|
||
});
|
||
}
|
||
if (g) {
|
||
k = g.gl;
|
||
r.contextName = g.name.join();
|
||
r.webglversion = k.getParameter(k.VERSION);
|
||
r.shadingLV = k.getParameter(k.SHADING_LANGUAGE_VERSION);
|
||
r.vendor = k.getParameter(k.VENDOR);
|
||
r.renderer = k.getParameter(k.RENDERER);
|
||
b = [];
|
||
try {
|
||
(b = k.getSupportedExtensions()), (r.extensions = b);
|
||
} catch (D) {}
|
||
try {
|
||
var l = k.getExtension("WEBGL_debug_renderer_info");
|
||
l &&
|
||
((r.wuv = k.getParameter(l.UNMASKED_VENDOR_WEBGL)),
|
||
(r.wur = k.getParameter(l.UNMASKED_RENDERER_WEBGL)));
|
||
} catch (D) {}
|
||
}
|
||
e.m.documentMode = document.documentMode;
|
||
e.m.compatMode = document.compatMode;
|
||
l = [];
|
||
// r = new v;
|
||
// for (k = 0; k < A.length; k++) b = A[k], r.checkSupportFont(b) && l.push(b);
|
||
e.fo = l;
|
||
k = {};
|
||
l = [];
|
||
for (var h in navigator)
|
||
"object" != typeof navigator[h] && (k[h] = navigator[h]), l.push(h);
|
||
k.enumerationOrder = l;
|
||
k.javaEnabled = false;
|
||
try {
|
||
k.taintEnabled = navigator.taintEnabled();
|
||
} catch (D) {}
|
||
e.n = k;
|
||
k = navigator.userAgent.toLowerCase();
|
||
if ((h = k.match(/rv:([\d.]+)\) like gecko/))) var q = h[1];
|
||
if ((h = k.match(/msie ([\d.]+)/))) q = h[1];
|
||
h = [];
|
||
if (q)
|
||
for (
|
||
q =
|
||
"AcroPDF.PDF;Adodb.Stream;AgControl.AgControl;DevalVRXCtrl.DevalVRXCtrl.1;MacromediaFlashPaper.MacromediaFlashPaper;Msxml2.DOMDocument;Msxml2.XMLHTTP;PDF.PdfCtrl;QuickTime.QuickTime;QuickTimeCheckObject.QuickTimeCheck.1;RealPlayer;RealPlayer.RealPlayer(tm) ActiveX Control (32-bit);RealVideo.RealVideo(tm) ActiveX Control (32-bit);rmocx.RealPlayer G2 Control;Scripting.Dictionary;Shell.UIHelper;ShockwaveFlash.ShockwaveFlash;SWCtl.SWCtl;TDCCtl.TDCCtl;WMPlayer.OCX".split(
|
||
";"
|
||
),
|
||
k = 0;
|
||
k < q.length;
|
||
k++
|
||
) {
|
||
var z = q[k];
|
||
try {
|
||
var C = new ActiveXObject(z);
|
||
l = {};
|
||
l.name = z;
|
||
try {
|
||
l.version = C.GetVariable("$version");
|
||
} catch (D) {}
|
||
try {
|
||
l.version = C.GetVersions();
|
||
} catch (D) {}
|
||
(l.version && 0 < l.version.length) || (l.version = "");
|
||
h.push(l);
|
||
} catch (D) {}
|
||
}
|
||
else {
|
||
q = navigator.plugins;
|
||
l = {};
|
||
for (k = 0; k < q.length; k++) (z = q[k]), (l[z.name] = 1), h.push(x(z));
|
||
for (k = 0; k < y.length; k++)
|
||
(C = y[k]), l[C] || ((z = q[C]), z && h.push(x(z)));
|
||
}
|
||
q =
|
||
"availHeight availWidth colorDepth bufferDepth deviceXDPI deviceYDPI height width logicalXDPI logicalYDPI pixelDepth updateInterval".split(
|
||
" "
|
||
);
|
||
z = {};
|
||
for (k = 0; q.length > k; k++)
|
||
(C = q[k]), void 0 !== screen[C] && (z[C] = screen[C]);
|
||
q = ["devicePixelRatio", "screenTop", "screenLeft"];
|
||
l = {};
|
||
for (k = 0; q.length > k; k++)
|
||
(C = q[k]), void 0 !== window[C] && (l[C] = window[C]);
|
||
e.p = h;
|
||
e.w = l;
|
||
e.s = z;
|
||
e.sc = f;
|
||
e.tz = n.getTimezoneOffset();
|
||
e.lil = w.sort().join("|");
|
||
e.wil = "";
|
||
f = {};
|
||
try {
|
||
(f.cookie = navigator.cookieEnabled),
|
||
(f.localStorage = !!window.localStorage),
|
||
(f.sessionStorage = !!window.sessionStorage),
|
||
(f.globalStorage = !!window.globalStorage),
|
||
(f.indexedDB = !!window.indexedDB);
|
||
} catch (D) {}
|
||
e.ss = f;
|
||
e.ts.deviceTime = n.getTime();
|
||
e.ts.deviceEndTime = new Date().getTime();
|
||
return this.tdencrypt(e);
|
||
};
|
||
this.collectSdk = function (n) {
|
||
try {
|
||
var e = this,
|
||
f = !1,
|
||
r = e.getLocal("BATQW722QTLYVCRD");
|
||
if (null != r && void 0 != r && "" != r)
|
||
try {
|
||
var k = JSON.parse(r),
|
||
g = new Date().getTime();
|
||
null != k &&
|
||
void 0 != k.t &&
|
||
"number" == typeof k.t &&
|
||
(12e5 >= g - k.t &&
|
||
void 0 != k.tk &&
|
||
null != k.tk &&
|
||
"" != k.tk &&
|
||
k.tk.startsWith("jdd")
|
||
? ((e.deviceInfo.sdkToken = k.tk), (f = !0))
|
||
: void 0 != k.tk &&
|
||
null != k.tk &&
|
||
"" != k.tk &&
|
||
(e.deviceInfo.sdkToken = k.tk));
|
||
} catch (m) {}
|
||
r = !1;
|
||
e.deviceInfo.isJdApp
|
||
? ((e.deviceInfo.clientVersion = navigator.userAgent.split(";")[2]),
|
||
(r = 0 < e.compareVersion(e.deviceInfo.clientVersion, "7.0.2")) &&
|
||
!f &&
|
||
e.getJdSdkCacheToken(function (m) {
|
||
e.deviceInfo.sdkToken = m;
|
||
(null != m && "" != m && m.startsWith("jdd")) ||
|
||
e.getJdBioToken(n);
|
||
}))
|
||
: e.deviceInfo.isJrApp &&
|
||
((e.deviceInfo.clientVersion = navigator.userAgent.match(
|
||
/clientVersion=([^&]*)(&|$)/
|
||
)[1]),
|
||
(r = 0 < e.compareVersion(e.deviceInfo.clientVersion, "4.6.0")) &&
|
||
!f &&
|
||
e.getJdJrSdkCacheToken(function (m) {
|
||
e.deviceInfo.sdkToken = m;
|
||
(null != m && "" != m && m.startsWith("jdd")) ||
|
||
e.getJdJrBioToken(n);
|
||
}));
|
||
"function" == typeof n && n(e.deviceInfo);
|
||
} catch (m) {}
|
||
};
|
||
this.compareVersion = function (n, e) {
|
||
try {
|
||
if (n === e) return 0;
|
||
var f = n.split(".");
|
||
var r = e.split(".");
|
||
for (n = 0; n < f.length; n++) {
|
||
var k = parseInt(f[n]);
|
||
if (!r[n]) return 1;
|
||
var g = parseInt(r[n]);
|
||
if (k < g) break;
|
||
if (k > g) return 1;
|
||
}
|
||
} catch (m) {}
|
||
return -1;
|
||
};
|
||
this.isWKWebView = function () {
|
||
return this.deviceInfo.userAgent.match(/supportJDSHWK/i) ||
|
||
1 == window._is_jdsh_wkwebview
|
||
? !0
|
||
: !1;
|
||
};
|
||
this.getErrorToken = function (n) {
|
||
try {
|
||
if (n) {
|
||
var e = (n + "").match(/"token":"(.*?)"/);
|
||
if (e && 1 < e.length) return e[1];
|
||
}
|
||
} catch (f) {}
|
||
return "";
|
||
};
|
||
this.getJdJrBioToken = function (n) {
|
||
var e = this;
|
||
"undefined" != typeof JrBridge &&
|
||
null != JrBridge &&
|
||
"undefined" != typeof JrBridge._version &&
|
||
(0 > e.compareVersion(JrBridge._version, "2.0.0")
|
||
? console.error(
|
||
"\u6865\u7248\u672c\u4f4e\u4e8e2.0\u4e0d\u652f\u6301bio"
|
||
)
|
||
: JrBridge.callNative(
|
||
{
|
||
type: e.bioConfig.type,
|
||
operation: e.bioConfig.operation,
|
||
biometricData: {
|
||
bizId: e.bizId,
|
||
duraTime: e.bioConfig.duraTime,
|
||
interval: e.bioConfig.interval,
|
||
},
|
||
},
|
||
function (f) {
|
||
try {
|
||
"object" != typeof f && (f = JSON.parse(f)),
|
||
(e.deviceInfo.sdkToken = f.token);
|
||
} catch (r) {
|
||
console.error(r);
|
||
}
|
||
null != e.deviceInfo.sdkToken &&
|
||
"" != e.deviceInfo.sdkToken &&
|
||
((f = {
|
||
tk: e.deviceInfo.sdkToken,
|
||
t: new Date().getTime(),
|
||
}),
|
||
e.store("BATQW722QTLYVCRD", JSON.stringify(f)));
|
||
}
|
||
));
|
||
};
|
||
this.getJdJrSdkCacheToken = function (n) {
|
||
var e = this;
|
||
try {
|
||
"undefined" == typeof JrBridge ||
|
||
null == JrBridge ||
|
||
"undefined" == typeof JrBridge._version ||
|
||
0 > e.compareVersion(JrBridge._version, "2.0.0") ||
|
||
JrBridge.callNative(
|
||
{
|
||
type: e.bioConfig.type,
|
||
operation: 5,
|
||
biometricData: {
|
||
bizId: e.bizId,
|
||
duraTime: e.bioConfig.duraTime,
|
||
interval: e.bioConfig.interval,
|
||
},
|
||
},
|
||
function (f) {
|
||
var r = "";
|
||
try {
|
||
"object" != typeof f && (f = JSON.parse(f)), (r = f.token);
|
||
} catch (k) {
|
||
console.error(k);
|
||
}
|
||
null != r &&
|
||
"" != r &&
|
||
"function" == typeof n &&
|
||
(n(r),
|
||
r.startsWith("jdd") &&
|
||
((f = {
|
||
tk: r,
|
||
t: new Date().getTime(),
|
||
}),
|
||
e.store("BATQW722QTLYVCRD", JSON.stringify(f))));
|
||
}
|
||
);
|
||
} catch (f) {}
|
||
};
|
||
this.getJdBioToken = function (n) {
|
||
var e = this;
|
||
n = JSON.stringify({
|
||
businessType: "bridgeBiologicalProbe",
|
||
callBackName: "_bioDeviceCb",
|
||
params: {
|
||
pin: "",
|
||
jsonData: {
|
||
type: e.bioConfig.type,
|
||
operation: e.bioConfig.operation,
|
||
data: {
|
||
bizId: e.bizId,
|
||
duraTime: e.bioConfig.duraTime,
|
||
interval: e.bioConfig.interval,
|
||
},
|
||
biometricData: {
|
||
bizId: e.bizId,
|
||
duraTime: e.bioConfig.duraTime,
|
||
interval: e.bioConfig.interval,
|
||
},
|
||
},
|
||
},
|
||
});
|
||
e.isWKWebView()
|
||
? window.webkit.messageHandlers.JDAppUnite.postMessage({
|
||
method: "notifyMessageToNative",
|
||
params: n,
|
||
})
|
||
: window.JDAppUnite && window.JDAppUnite.notifyMessageToNative(n);
|
||
window._bioDeviceCb = function (f) {
|
||
try {
|
||
var r = "object" == typeof f ? f : JSON.parse(f);
|
||
if (void 0 != r && null != r && "0" != r.status) return;
|
||
null != r.data.token &&
|
||
void 0 != r.data.token &&
|
||
"" != r.data.token &&
|
||
(e.deviceInfo.sdkToken = r.data.token);
|
||
} catch (k) {
|
||
(f = e.getErrorToken(f)),
|
||
null != f && "" != f && (e.deviceInfo.sdkToken = f);
|
||
}
|
||
null != e.deviceInfo.sdkToken &&
|
||
"" != e.deviceInfo.sdkToken &&
|
||
((f = {
|
||
tk: e.deviceInfo.sdkToken,
|
||
t: new Date().getTime(),
|
||
}),
|
||
e.store("BATQW722QTLYVCRD", JSON.stringify(f)));
|
||
};
|
||
};
|
||
this.getJdSdkCacheToken = function (n) {
|
||
try {
|
||
var e = this,
|
||
f = JSON.stringify({
|
||
businessType: "bridgeBiologicalProbe",
|
||
callBackName: "_bioDeviceSdkCacheCb",
|
||
params: {
|
||
pin: "",
|
||
jsonData: {
|
||
type: e.bioConfig.type,
|
||
operation: 5,
|
||
data: {
|
||
bizId: e.bizId,
|
||
duraTime: e.bioConfig.duraTime,
|
||
interval: e.bioConfig.interval,
|
||
},
|
||
biometricData: {
|
||
bizId: e.bizId,
|
||
duraTime: e.bioConfig.duraTime,
|
||
interval: e.bioConfig.interval,
|
||
},
|
||
},
|
||
},
|
||
});
|
||
e.isWKWebView()
|
||
? window.webkit.messageHandlers.JDAppUnite.postMessage({
|
||
method: "notifyMessageToNative",
|
||
params: f,
|
||
})
|
||
: window.JDAppUnite && window.JDAppUnite.notifyMessageToNative(f);
|
||
window._bioDeviceSdkCacheCb = function (r) {
|
||
var k = "";
|
||
try {
|
||
var g = "object" == typeof r ? r : JSON.parse(r);
|
||
if (void 0 != g && null != g && "0" != g.status) return;
|
||
k = g.data.token;
|
||
} catch (m) {
|
||
k = e.getErrorToken(r);
|
||
}
|
||
null != k &&
|
||
"" != k &&
|
||
"function" == typeof n &&
|
||
(n(k),
|
||
k.startsWith("jdd") &&
|
||
((r = {
|
||
tk: k,
|
||
t: new Date().getTime(),
|
||
}),
|
||
e.store("BATQW722QTLYVCRD", JSON.stringify(r))));
|
||
};
|
||
} catch (r) {}
|
||
};
|
||
this.store = function (n, e) {
|
||
try {
|
||
this.setCookie(n, e);
|
||
} catch (f) {}
|
||
try {
|
||
window.localStorage && window.localStorage.setItem(n, e);
|
||
} catch (f) {}
|
||
try {
|
||
window.sessionStorage && window.sessionStorage.setItem(n, e);
|
||
} catch (f) {}
|
||
try {
|
||
window.globalStorage &&
|
||
window.globalStorage[".localdomain"].setItem(n, e);
|
||
} catch (f) {}
|
||
try {
|
||
this.db(n, _JdEid);
|
||
} catch (f) {}
|
||
};
|
||
this.getLocal = function (n) {
|
||
var e = {},
|
||
f = null;
|
||
try {
|
||
var r = document.cookie.replace(
|
||
new RegExp("(?:(?:^|.*;\\s*)" + n + "\\s*\\=\\s*([^;]*).*$)|^.*$"),
|
||
"$1"
|
||
);
|
||
0 !== r.length && (e.cookie = r);
|
||
} catch (g) {}
|
||
try {
|
||
window.localStorage &&
|
||
null !== window.localStorage &&
|
||
0 !== window.localStorage.length &&
|
||
(e.localStorage = window.localStorage.getItem(n));
|
||
} catch (g) {}
|
||
try {
|
||
window.sessionStorage &&
|
||
null !== window.sessionStorage &&
|
||
(e.sessionStorage = window.sessionStorage[n]);
|
||
} catch (g) {}
|
||
try {
|
||
p.globalStorage &&
|
||
(e.globalStorage = window.globalStorage[".localdomain"][n]);
|
||
} catch (g) {}
|
||
try {
|
||
d &&
|
||
"function" == typeof d.load &&
|
||
"function" == typeof d.getAttribute &&
|
||
(d.load("jdgia_user_data"), (e.userData = d.getAttribute(n)));
|
||
} catch (g) {}
|
||
try {
|
||
E.indexedDbId && (e.indexedDb = E.indexedDbId);
|
||
} catch (g) {}
|
||
try {
|
||
E.webDbId && (e.webDb = E.webDbId);
|
||
} catch (g) {}
|
||
try {
|
||
for (var k in e)
|
||
if (32 < e[k].length) {
|
||
f = e[k];
|
||
break;
|
||
}
|
||
} catch (g) {}
|
||
try {
|
||
if (null == f || "undefined" === typeof f || 0 >= f.length) f = u(n);
|
||
} catch (g) {}
|
||
return f;
|
||
};
|
||
this.createWorker = function () {
|
||
if (window.Worker) {
|
||
try {
|
||
var n = new Blob(
|
||
[
|
||
"onmessage = function (event) {\n var data = JSON.parse(event.data);\n try {\n var httpRequest;\n try {\n httpRequest = new XMLHttpRequest();\n } catch (h) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Microsoft.XMLHTTP')\n } catch (l) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml2.XMLHTTP')\n } catch (r) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml3.XMLHTTP')\n } catch (n) {}\n\n if(data){\n httpRequest['open']('POST', data.url, false);\n httpRequest['setRequestHeader']('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\n httpRequest['onreadystatechange'] = function () {\n if (4 === httpRequest['readyState'] && 200 === httpRequest['status']) {\n postMessage(httpRequest.responseText);\n }\n };\n httpRequest['send'](data.data);\n }\n\n }catch (e){console.error(e);}\n};",
|
||
],
|
||
{
|
||
type: "application/javascript",
|
||
}
|
||
);
|
||
} catch (e) {
|
||
(window.BlobBuilder =
|
||
window.BlobBuilder ||
|
||
window.WebKitBlobBuilder ||
|
||
window.MozBlobBuilder),
|
||
(n = new BlobBuilder()),
|
||
n.append(
|
||
"onmessage = function (event) {\n var data = JSON.parse(event.data);\n try {\n var httpRequest;\n try {\n httpRequest = new XMLHttpRequest();\n } catch (h) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Microsoft.XMLHTTP')\n } catch (l) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml2.XMLHTTP')\n } catch (r) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml3.XMLHTTP')\n } catch (n) {}\n\n if(data){\n httpRequest['open']('POST', data.url, false);\n httpRequest['setRequestHeader']('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\n httpRequest['onreadystatechange'] = function () {\n if (4 === httpRequest['readyState'] && 200 === httpRequest['status']) {\n postMessage(httpRequest.responseText);\n }\n };\n httpRequest['send'](data.data);\n }\n\n }catch (e){console.error(e);}\n};"
|
||
),
|
||
(n = n.getBlob());
|
||
}
|
||
try {
|
||
this.worker = new Worker(URL.createObjectURL(n));
|
||
} catch (e) {}
|
||
}
|
||
};
|
||
this.reportWorker = function (n, e, f, r) {
|
||
try {
|
||
null != this.worker &&
|
||
(this.worker.postMessage(
|
||
JSON.stringify({
|
||
url: n,
|
||
data: e,
|
||
success: !1,
|
||
async: !1,
|
||
})
|
||
),
|
||
(this.worker.onmessage = function (k) {}));
|
||
} catch (k) {}
|
||
};
|
||
})();
|
||
|
||
function td_collect_exe() {
|
||
_fingerprint_step = 8;
|
||
var t = td_collect.collect();
|
||
td_collect.collectSdk();
|
||
var u = "string" === typeof orderId ? orderId : "",
|
||
v = "undefined" !== typeof jdfp_pinenp_ext && jdfp_pinenp_ext ? 2 : 1;
|
||
u = {
|
||
pin: _jdJrTdCommonsObtainPin(v),
|
||
oid: u,
|
||
p: "https:" == document.location.protocol ? "s" : "h",
|
||
fp: risk_jd_local_fingerprint,
|
||
ctype: v,
|
||
v: "2.7.10.4",
|
||
f: "3",
|
||
};
|
||
try {
|
||
(u.o = _CurrentPageUrl), (u.qs = _url_query_str);
|
||
} catch (w) {}
|
||
_fingerprint_step = 9;
|
||
0 >= _JdEid.length &&
|
||
((_JdEid = td_collect.obtainLocal()), 0 < _JdEid.length && (_eidFlag = !0));
|
||
u.fc = _JdEid;
|
||
try {
|
||
u.t = jd_risk_token_id;
|
||
} catch (w) {}
|
||
try {
|
||
if ("undefined" != typeof gia_fp_qd_uuid && 0 <= gia_fp_qd_uuid.length)
|
||
u.qi = gia_fp_qd_uuid;
|
||
else {
|
||
var x = _JdJrRiskClientStorage.jdtdstorage_cookie("qd_uid");
|
||
u.qi = void 0 == x ? "" : x;
|
||
}
|
||
} catch (w) {}
|
||
"undefined" != typeof jd_shadow__ &&
|
||
0 < jd_shadow__.length &&
|
||
(u.jtb = jd_shadow__);
|
||
try {
|
||
td_collect.deviceInfo &&
|
||
void 0 != td_collect.deviceInfo &&
|
||
null != td_collect.deviceInfo.sdkToken &&
|
||
"" != td_collect.deviceInfo.sdkToken
|
||
? ((u.stk = td_collect.deviceInfo.sdkToken), (td_collect.isRpTok = !0))
|
||
: (td_collect.isRpTok = !1);
|
||
} catch (w) {
|
||
td_collect.isRpTok = !1;
|
||
}
|
||
x = td_collect.tdencrypt(u);
|
||
// console.log(u)
|
||
return { a: x, d: t };
|
||
}
|
||
|
||
function _jdJrTdCommonsObtainPin(t) {
|
||
var u = "";
|
||
"string" === typeof jd_jr_td_risk_pin && 1 == t
|
||
? (u = jd_jr_td_risk_pin)
|
||
: "string" === typeof pin
|
||
? (u = pin)
|
||
: "object" === typeof pin &&
|
||
"string" === typeof jd_jr_td_risk_pin &&
|
||
(u = jd_jr_td_risk_pin);
|
||
return u;
|
||
}
|
||
|
||
function getBody(userAgent, url = document.location.href) {
|
||
navigator.userAgent = userAgent;
|
||
let href = url;
|
||
let choose = /((https?:)\/\/([^\/]+))(.+)/.exec(url);
|
||
let [, origin, protocol, host, pathname] = choose;
|
||
document.location.href = href;
|
||
document.location.origin = origin;
|
||
document.location.protocol = protocol;
|
||
document.location.host = host;
|
||
document.location.pathname = pathname;
|
||
const JF = new JdJrTdRiskFinger();
|
||
let fp = JF.f.get(function (t) {
|
||
risk_jd_local_fingerprint = t;
|
||
return t;
|
||
});
|
||
let arr = td_collect_exe();
|
||
return { fp, ...arr };
|
||
}
|
||
|
||
|
||
// 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)}
|
||
|