faker3/utils/baseUtils.js

1596 lines
37 KiB
JavaScript
Raw Normal View History

2024-10-21 16:07:49 +08:00
const CryptoJS = require('crypto-js');
const { JSDOM, ResourceLoader } = require('jsdom');
const { CookieJar } = require('tough-cookie');
const axios = require('axios');
const { HttpCookieAgent, HttpsCookieAgent } = require('http-cookie-agent/http');
2024-06-28 15:38:28 +08:00
const crc32 = require('crc').crc32;
class BaseUtils {
2024-10-21 16:07:49 +08:00
constructor() {
global.baseUtils = this;
}
requestUrl = {
gettoken: 'https://rjsb-token-m.jd.com/gettoken',
bypass: 'https://blackhole.m.jd.com/bypass',
getInfo: 'https://blackhole.m.jd.com/getinfo',
};
webview = {
unionwsws_param: {
iOS: {
routerURL: 'router://JDUnionFingerprintModule/getUnionFingerprintForH5',
callBackName: 'fingerPrintCallback',
},
android: {
businessType: 'unionFingerPrint',
callBackName: 'fingerPrintCallback',
},
},
getStorage: (e) => {
return JSON.parse(localStorage.getItem(e));
},
setStorage: (e, t) => {
localStorage.setItem(e, JSON.stringify(t));
},
getIosFingerprint: function () {
console.log('不支持获取IOS指纹');
// if (0 === navigator.userAgent.indexOf("jdapp")) {
// if (-1 !== navigator.userAgent.indexOf("supportJDSHWK/1") || window._is_jdsh_wkwebview == 1) {
// window.webkit.messageHandlers.JDAppUnite.postMessage({
// method: "callSyncRouterModuleWithParams",
// params: JSON.stringify(this.unionwsws_param.iOS)
// })
// } else {
// window.JDAppUnite.callRouterModuleWithParams(JSON.stringify(this.unionwsws_param.iOS))
// }
// }
},
getAndroidFingerprint: () => {
// TODO
console.log('Android 获取指纹待实现');
// if (this.isWKWebView()) {
// window.webkit.messageHandlers.JDAppUnite.postMessage({
// method: "notifyMessageToNative",
// params: JSON.stringify(this.unionwsws_param.android)
// });
// } else if (window.JdAndroid) {
// window.JdAndroid.notifyMessageToNative(JSON.stringify(this.unionwsws_param.android));
// }
},
getAppFingerprint: () => {
try {
var o = navigator.userAgent.toLowerCase();
if (/iphone|ipad|ios|ipod/.test(o)) {
this.webview.getIosFingerprint();
} else if (/android/.test(o)) {
this.webview.getAndroidFingerprint();
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
} catch (e) {
console.log(e);
}
return JSON.stringify(this.webview.getStorage('unionwsws'));
},
isWKWebView: () => {
return navigator.userAgent.match(/supportJDSHWK/i) || 1 === window._is_jdsh_wkwebview;
},
};
changeEnv(url, cookieStr, userAgent) {
let ptPin = this.extractPtPin(cookieStr);
if (ptPin && global.document) {
let localPtPin = this.extractPtPin(document.cookie);
if (localPtPin === ptPin) {
return;
}
}
let jar = new CookieJar();
global.api = axios.create({
httpAgent: new HttpCookieAgent({
cookies: { jar },
}),
httpsAgent: new HttpsCookieAgent({
cookies: { jar },
ciphers: 'TLS_AES_256_GCM_SHA384',
}),
});
const resourceLoader = new ResourceLoader({
userAgent,
});
let dom = new JSDOM(``, {
url,
resources: resourceLoader,
cookieJar: jar,
});
global.window = dom.window;
global.document = window.document;
global.location = {
...window.location,
};
global.navigation = {
...window.navigation,
};
global.screen = {
availHeight: 1032,
availLeft: 0,
availTop: 0,
availWidth: 1920,
colorDepth: 24,
height: 1080,
isExtended: false,
onchange: null,
orientation: {
ScreenOrientation: { angle: 0, type: 'landscape-primary', onchange: null },
},
pixelDepth: 24,
width: 1920,
};
window.screen = screen;
window.navigation = navigation;
global.navigator = window.navigator;
global.localStorage = window.localStorage;
global.history = window.history;
if (cookieStr) {
const cookies = cookieStr.split(';');
cookies.forEach((cookieString) => {
if (cookieString) {
global.document.cookie = cookieString.concat(';domain=.jd.com;path=/;expires=2099-04-16T07:09:14.000Z');
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
});
}
}
// 解析cookie字符串提取pt_pin
extractPtPin(cookies) {
const regex = /pt_pin=([^;]+)/;
const match = cookies.match(regex);
const ptPinValue = match && match[1];
return ptPinValue || '';
}
getDefaultVal(e) {
const t = {
undefined: 'u',
false: 'f',
true: 't',
};
return t[e] || e;
}
arrayLength(e, t, n) {
if (n) {
t.push(n);
t.length > e && t.shift();
}
}
atobFunc(e) {
try {
// this.atobPolyfill();
return window.atob(e);
} catch (e) {
return '';
}
}
baseConverter(e, t) {
let c = [],
s = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',
l = e,
f,
p = '';
if (t < 2 || t > 36) return '';
for (; l > 0; ) {
f = Math.floor(l % t);
c.push(f);
l = Math.floor(l / t);
}
for (; c.length; ) p += s[c.pop()];
return p;
}
isFirefox() {
return navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
}
getCallStack() {
var t = this.getCallStackUnencrypted();
return CryptoJS.MD5(t).toString();
}
md5Str(e) {
return CryptoJS.MD5(e).toString();
}
getCallStackUnencrypted() {
var n = this,
r;
try {
throw new Error('call_stack');
} catch (a) {
try {
var i = (function (t) {
if (t.indexOf('@') > -1) {
var a = t.split('\n'),
u = '';
if (a.length > 1) {
a.pop();
a.forEach(function (t) {
var a,
c = t.split('@');
if (c.length >= 2) {
var s = c[1],
f = s.indexOf('?'),
l = s.slice(0, f).split(':');
if (l.length > 2) {
l.pop();
l.pop();
}
var p = l.join(':');
a = ''.concat(c[0], '=').concat(p);
2024-06-28 15:38:28 +08:00
} else {
2024-10-21 16:07:49 +08:00
var d = t.indexOf(':');
a = ''.concat(d === -1 ? t : t.slice(0, d), "=''");
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
u += ''.concat('' === u ? '' : '&').concat(a);
});
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
return n.removal(u);
}
2024-06-28 15:38:28 +08:00
2024-10-21 16:07:49 +08:00
var c = t.split('at '),
s = '';
if (c.length > 1) {
c.shift();
2024-06-28 15:38:28 +08:00
c.forEach(function (e) {
2024-10-21 16:07:49 +08:00
var t,
n = e.split(' ');
if (n.length >= 2) {
var m = n[1];
var v = m.indexOf('(');
var d = m.indexOf('?');
var g = m.indexOf(')');
var l = v === -1 ? '' : m.slice(v + 1, d === -1 ? g : d);
var p = l.split(':');
if (p.length > 2) {
p.pop();
p.pop();
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
var h = p.join(':');
t = ''.concat(n[0], '=').concat(h);
} else {
var y = e.indexOf(':');
t = ''.concat(y === -1 ? e : e.slice(0, y), "=''");
}
s += ''.concat('' === s ? '' : '&').concat(t);
2024-06-28 15:38:28 +08:00
});
2024-10-21 16:07:49 +08:00
}
return n.removal(s);
})(a.stack.toString());
if (i.length < 11) {
r = a.stack.toString().substring(0, 200);
2024-06-28 15:38:28 +08:00
} else {
2024-10-21 16:07:49 +08:00
r = i;
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
} catch (e) {
r = e.toString();
}
}
return r;
}
removal(e) {
var n = e.split('&'),
r = new Map(),
o = [];
n.forEach(function (e) {
var i = e.split('=');
if (r.has(i[1])) {
r.set(i[1], !0);
} else {
r.set(i[1], !1);
o.push(e);
}
});
return o.join('&');
}
getUa() {
return navigator.userAgent;
}
isMobile() {
return this.getUa().match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i);
}
ajax(e) {
return api({
method: e.type,
url: e.url,
headers: {
'content-type': 'application/x-www-form-urlencoded',
'user-agent': window.navigator.userAgent,
},
data: e.data,
});
}
getCurrentDate() {
return new Date();
}
getCurrentTime() {
try {
return this.getCurrentDate().getTime();
} catch (e) {
return 0;
}
}
isDevtoolOpen() {
return false;
}
toTimestamp() {
var t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
if (typeof t === 'number') return t;
if (typeof t == 'string') {
var o = t.match(/^(\d+(?:\.\d+)?)([smhd])$/);
if (o) {
var i;
switch (o[2]) {
case 'm':
i = o[1] * 60 * 1000;
break;
case 'h':
i = 60 * o[1] * 60 * 1000;
break;
case 'd':
i = o[1] * 24 * 60 * 60 * 1000;
break;
default:
i = o[1] * 1000;
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
return Date.now() + Math.round(i);
}
2024-06-28 15:38:28 +08:00
2024-10-21 16:07:49 +08:00
t = t.replace(/[.-]/g, '/');
var a = new Date(t).getTime();
if (!isNaN(a)) return a;
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
return -1;
}
2024-06-28 15:38:28 +08:00
2024-10-21 16:07:49 +08:00
clearTokem(e, t) {
try {
var o = window.localStorage.getItem(e);
2024-06-28 15:38:28 +08:00
2024-10-21 16:07:49 +08:00
if (o) {
var i = JSON.parse(o);
if (i[t]) {
delete i[t];
window.localStorage.setItem(e, JSON.stringify(i));
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
}
} catch (e) {}
}
getTokem(e, t) {
var i = '';
var u = '';
try {
var c = window.localStorage.getItem(e);
if (c) {
var s = JSON.parse(c);
if (s[t]) {
var f = s[t];
var l = f.data;
var p = f.expires;
var d = f.xcd;
var v;
if (d === void 0) {
v = '';
} else {
v = d;
}
if (this.toTimestamp(p) > Date.now()) {
i = l;
u = this.getDecode(v || '');
document.cookie = ''.concat(e, '=').concat(l, ';domain=.jd.com;path=/;expires=').concat(p);
} else {
delete s[t];
window.localStorage.setItem(e, JSON.stringify(s));
}
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
}
return {
joyytokenVal: i,
xcdVal: u,
};
} catch (e) {
return {
joyytokenVal: i,
xcdVal: u,
};
}
}
encodeSearchKey(e) {
var n = {
code: '%',
encode: '%25',
};
var o = {
code: '?',
encode: '%3F',
};
var i = {
code: '#',
encode: '%23',
};
var a = {
code: '&',
encode: '%26',
};
var c = [n, o, i, a];
const that = this;
return e.replace(/[%?#&]/g, function (e, n, o) {
var a,
u = that.createIterable(c);
try {
for (u.s(); !(a = u.n()).done; ) {
var f = a.value;
if (f.code === e) return f.encode;
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
} catch (e) {
u.e(e);
} finally {
u.f();
}
});
}
getCookie(e) {
try {
var o = new RegExp('(^| )' + e + '=([^;]*)(;|$)');
var i = document.cookie.match(o);
if (i) {
if (i.length > 2 && i[2]) {
if (-1 !== i[2].indexOf('%u')) return unescape(i[2]);
if (/.*[\u4e00-\u9fa5]+.*$/.test(i[2])) {
var a = this.encodeSearchKey(i[2]);
return decodeURIComponent(a);
}
return decodeURIComponent(i[2]);
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
return '';
}
2024-06-28 15:38:28 +08:00
2024-10-21 16:07:49 +08:00
return '';
} catch (e) {
return '';
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
}
2024-06-28 15:38:28 +08:00
2024-10-21 16:07:49 +08:00
getRandomInt() {
var u = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
var a = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 9;
2024-06-28 15:38:28 +08:00
2024-10-21 16:07:49 +08:00
u = Math.ceil(u);
a = Math.floor(a);
return Math.floor(Math.random() * (a - u + 1)) + u;
}
2024-06-28 15:38:28 +08:00
2024-10-21 16:07:49 +08:00
getRandomWord(e, t) {
for (var a = '', u = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', c = 0; c < e; c++) {
var s = u;
0 === c && t && (s = u.slice(1));
var f = Math.round(Math.random() * (s.length - 1));
a += s.substring(f, f + 1);
}
return a;
}
getNumberInString(e) {
return Number(e.replace(/[^0-9]/gi, ''));
}
getSpecialPosition(e) {
var s = !(arguments.length > 1) || !(arguments[1] !== void 0) || arguments[1];
e = String(e);
var u = s ? 1 : 0;
var c = '';
for (var a = 0; a < e.length; a++) {
a % 2 === u && (c += e[a]);
}
return c;
}
getLastAscii(e) {
var o = e.charCodeAt(0).toString();
return o[o.length - 1];
}
toAscii(e) {
var i = '';
for (var a in e) {
var u = e[a];
var c = /[a-zA-Z]/.test(u);
if (e.hasOwnProperty(a)) {
i += c ? this.getLastAscii(u) : u;
}
}
return i;
}
add0(e, t) {
return (Array(t).join('0') + e).slice(-t);
}
minusByByte(e, t) {
var o = e.length,
i = t.length;
var u = Math.max(o, i),
c = this.toAscii(e),
s = this.toAscii(t),
f = '',
l = 0;
if (o !== i) {
c = this.add0(c, u);
s = this.add0(s, u);
}
for (; l < u; l++) {
f += Math.abs(c[l] - s[l]);
}
return f;
}
getLoginStatus() {
var o = this.isMobile() ? 'pt_key' : 'thor';
return this.getCookie(o);
}
getCookiePin() {
var o = this.getCookie('pwdt_id') || this.getCookie('pin') || '';
return CryptoJS.MD5(o).toString().toLowerCase();
}
RecursiveSorting() {
var o = this,
i = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {},
a = {},
u = i;
if (Object.prototype.toString.call(u) === '[object Object]') {
var c = Object.keys(u).sort(function (e, n) {
return e < n ? -1 : e > n ? 1 : 0;
});
c.forEach(function (e) {
var l = u[e];
if (Object.prototype.toString.call(l) === '[object Object]') {
a[e] = o.RecursiveSorting(l);
} else if (Object.prototype.toString.call(l) === '[object Array]') {
for (var d = [], h = 0; h < l.length; h++) {
var v = l[h];
if (Object.prototype.toString.call(v) === '[object Object]') {
d[h] = o.RecursiveSorting(v);
2024-06-28 15:38:28 +08:00
} else {
2024-10-21 16:07:49 +08:00
d[h] = v;
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
}
2024-06-28 15:38:28 +08:00
2024-10-21 16:07:49 +08:00
a[e] = d;
} else {
a[e] = l;
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
});
} else {
a = i;
}
return a;
}
objToString2() {
var n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
var r = '';
Object.keys(n).forEach(function (e) {
var u = n[e];
if (u != null) {
if (u instanceof Object || u instanceof Array) {
r += ''
.concat(r === '' ? '' : '&')
.concat(e, '=')
.concat(JSON.stringify(u));
} else {
r += ''
.concat(r === '' ? '' : '&')
.concat(e, '=')
.concat(u);
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
}
});
return r;
}
objToString() {
var u = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
var a = '';
Object.keys(u)
.sort(function (e, n) {
return e < n ? -1 : e > n ? 1 : 0;
})
.forEach(function (e) {
var n = u[e];
if (n != null) {
a += ''
.concat(a === '' ? '' : '&')
.concat(e, '=')
.concat(n);
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
});
return a;
}
getCookieJdu() {
return '' === this.getCookie('__jdu') ? (this.getCookie('__jda') === '' ? '' : this.getCookie('__jda').split('.')[1]) : this.getCookie('__jdu');
}
getTouchSession() {
var e = new Date().getTime();
var t = this.getRandomInt(1000, 9999);
return String(e) + String(t);
}
collectVoteFilter() {
var u = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : '0';
var a = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : '100';
var i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
var s = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : '';
try {
if ('1' === u) {
return i.filter(function (t) {
var r = t[s].substring(t[s].length - 2);
if (r[0] === '0') {
r = r.substring(1);
}
if (Number(r) < Number(a)) {
return !0;
}
2024-06-28 15:38:28 +08:00
});
2024-10-21 16:07:49 +08:00
}
return i;
} catch (e) {
return i;
}
}
getPluginsNum() {
var t;
try {
t = window.navigator.plugins.length;
} catch (e) {
t = 'c';
}
return t;
}
getGPUMes() {
window.localStorage.gpuAll = '{"gpuServiceProvider":"ARM","gpuBrand":"Mali-G610 MC6"}';
return ['ARM', 'Mali-G610 MC6'];
}
getLangNum() {
var t = '';
try {
t = window.navigator.languages.length;
} catch (e) {}
return t;
}
getChromeAttribute() {
return '';
}
getConfigurable_Enumerable() {
return ['11', '11', '11', '11'];
}
getBatteryStatus() {
return ['t', Infinity, Infinity, 0.77];
}
encrypt1(e, t) {
for (var i = e.length, a = t.toString(), u = [], c = '', s = '', f = 0, l = 0; l < a.length; l++) {
if (f >= i) f = f % i;
c = a.charCodeAt(l) ^ e.charCodeAt(f);
s = c % 10;
u.push(s);
f = f + 1;
}
return u.join().replace(/,/g, '');
}
len_Fun(e, t) {
return ''.concat(e.substring(t, e.length)) + ''.concat(e.substring(0, t));
}
encrypt2(e, t) {
var i = t.toString(),
a = t.toString().length,
u = parseInt((a + e.length) / 3);
var s = '',
f = '';
if (a > e.length) {
s = this.len_Fun(i, u);
f = this.encrypt1(e, s);
} else {
s = this.len_Fun(e, u);
f = this.encrypt1(i, s);
}
return f;
}
addZeroFront(e) {
return e && e.length >= 5 ? e : ('00000' + String(e)).substr(-5);
}
addZeroBack(e) {
return e && e.length >= 5 ? e : (String(e) + '00000').substr(0, 5);
}
encrypt3(e, t) {
var s = this.addZeroBack(t).toString().substring(0, 5);
var u = this.addZeroFront(e).substring(e.length - 5);
var l = s.length;
var f = [];
for (let i = 0; i < l; i++) {
f.push(Math.abs(s.charCodeAt(i) - u.charCodeAt(i)));
}
return f.join().replace(/,/g, '');
}
encrypt7(e, t) {
try {
var h = e.split('').reverse().join('');
var p = (String(t) + '000000').slice(0, 13);
var v = p.slice(9, 12);
var l = ''.concat(h).concat(v);
var d = [];
var c = '';
for (var s = 0; s < p.length; s++) {
var f = (p.charCodeAt(s) & l.charCodeAt(s)).toString(16);
d.push(f);
}
c = d.join('');
return c;
} catch (e) {
return null;
}
}
encrypt8(e, t) {
try {
let a = t.toString(),
u = a.substr(0, 1),
c = a.substr(1) + u,
s = e.substr(-1),
f = (s + e.substr(0, e.length - 1)).split('').reverse().join(''),
l = a.slice(-3),
p = ''.concat(f).concat(l),
d = [],
h = 0;
for (; h < c.length; h++) {
var v = (c.charCodeAt(h) ^ p.charCodeAt(h)).toString(16);
d.push(v);
}
return d.join('');
} catch (e) {
return null;
}
}
encrypt9(e, t) {
try {
let i = t.toString(),
a = e.split('').reverse().join('').slice(0, 5),
u = (String(t) + '000000').slice(0, 13).slice(-5),
c = '',
s = 0;
for (; s < a.length; s++) {
c += ''.concat(a.charAt(s)).concat(u.charAt(s));
}
c += c.slice(0, i.length - c.length);
for (var f = [], l = 0; l < i.length; l++) {
var p = (i.charCodeAt(l) ^ c.charCodeAt(l)).toString(16);
f.push(p);
}
return f.join('');
} catch (e) {
return null;
}
}
encryptA(e, t) {
try {
var a = t.toString(),
u = e.split('').reverse().join('');
u += u.slice(0, a.length - u.length);
for (var c = [], s = 0; s < a.length; s++) {
var f = a.charCodeAt(s) | u.charCodeAt(s);
var l = (f % 15).toString(16);
c.push(l);
}
for (var p = c.join(''), d = '', h = '', v = 0; v < p.length; v++) {
if (v % 2 === 0) {
d += p.charAt(v);
2024-06-28 15:38:28 +08:00
} else {
2024-10-21 16:07:49 +08:00
h += p.charAt(v);
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
}
return ''.concat(d).concat(h);
} catch (e) {
return null;
}
}
encryptB(e, t) {
try {
var d = t.toString();
var s = e.toString();
var c = d + s;
var v = (s + d).split('').reverse().join('');
var h = [];
for (var f = 0; f < c.length; f++) {
var l = c.charCodeAt(f) ^ v.charCodeAt(f),
p = (l % 15).toString(16);
h.push(p);
}
return h.join('');
} catch (e) {
return null;
}
}
encryptC(e, t) {
try {
var a,
u = t.toString(),
c = e.toString(),
s = u.split(''),
f = c.split(''),
l = [],
p = [];
if (s.length > f.length) {
a = f.length;
p = s;
} else {
a = s.length;
p = f;
}
for (var d = 0; d < a; d++) {
l.push(s[d]);
l.push(f[d]);
}
for (var h = l.concat(p.slice(a)).join(''), v = (c + u).split('').reverse().join(''), m = [], g = 0; g < h.length; g++) {
var y = h.charCodeAt(g) ^ v.charCodeAt(g);
var w = (y % 15).toString(16);
m.push(w);
}
return m.join('');
} catch (e) {
return null;
}
}
encryptD(e, t) {
try {
var c = t.toString();
var l = c.slice(-5);
var b = e.toString();
var d = l.split('');
var m = b.split('');
var f = [];
for (var y = 0; y < d.length; y++) {
var w = d[y] % m.length;
f.push(m[w]);
}
var _ = [];
for (var g = 0; g < m.length; g++) {
if (g % 2 !== 0) {
f.push(m[g]);
} else {
_.push(m[g]);
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
}
f = f.reverse().join('');
var x = d.reverse();
var s = _.concat(x);
s = s.join('');
var p = [];
for (var h = 0; h < f.length; h++) {
var v = ((f.charCodeAt(h) ^ s.charCodeAt(h)) % 15).toString(16);
p.push(v);
}
return p.join('');
} catch (e) {
return null;
}
}
getDefaultArr(e) {
return new Array(e).fill('a');
}
getExceptArr(e) {
return new Array(e).fill('c');
}
getUndefinedArr(e) {
return new Array(e).fill('u');
}
getFailedArr(e) {
return new Array(e).fill('f');
}
ArrayFillPolyfill() {}
getExceptData(e) {
try {
return e();
} catch (e) {
return 'c';
}
}
getNaviParam(e) {
return this.getExceptData(function () {
return navigator[e] || 'u';
});
}
getCookieEnabled() {
return 't';
}
getSessionStorage() {
return 't';
}
getLocalStorage() {
return 't';
}
getIsMobileOne() {
return 't';
}
getIsMobileTwo() {
return 't';
}
getIsNodeEnv() {
return 'f';
}
getHasNodeVM2() {
return 'f';
}
getExistWebdriver() {
return 'f';
}
getDetectPhantomjs() {
return 'f';
}
getPageDomNum() {
var o;
try {
o = [
document.querySelectorAll('script').length,
document.querySelectorAll('div').length,
document.querySelectorAll('link').length,
document.querySelectorAll('meta').length,
history.length,
navigator.maxTouchPoints,
];
} catch (e) {
o = this.getExceptArr(6);
}
return o;
}
getJdKey() {
var e = this;
return this.getExceptData(function () {
var r = {
jdkey: 'a',
};
return (e.webview.getStorage('unionwsws') || r).jdkey;
});
}
getAppBuild() {
return this.getExceptData(function () {
return navigator.userAgent.match(/appBuild\/([\d]+)/i)[1];
});
}
getAppVersion() {
var n = navigator.userAgent;
return (n && n.indexOf('jdapp') === 0 && n.split(';')[2]) || null;
}
getNaviConnection() {
var t;
try {
t = [navigator.connection.downlink || 'u', navigator.connection.effectiveType || 'u'];
} catch (r) {
t = this.getExceptArr(2);
}
return t;
}
getScreen() {
var e;
try {
var n = window.screen;
e = [n.height, n.width];
} catch (n) {
e = this.getExceptArr(6);
}
return e;
}
getIosAppDetail() {
let s = '';
// console.log('不支持获取IOS应用信息');
// var u = this.getDefaultVal(typeof $request != "undefined");
// var h = this.getDefaultVal((typeof $httpClient != "undefined"));
// var p = this.getDefaultVal(typeof $task != "undefined");
// var l = this.getDefaultVal((typeof $loon != "undefined"));
// var f = this.getDefaultVal((typeof $app != "undefined") && (typeof $http != "undefined"));
// var a = this.getDefaultVal(("function" == "function") && !f);
// var d = this.getDefaultVal(typeof window != "undefined");
// var c = this.getDefaultVal(typeof navigator != "undefined");
// s = "" + u + h + p + l + f + a + d + c;
return s;
}
getAutoJs() {
return 'u';
}
getExistMiniblink() {
return 'u';
}
getCrcCode(e) {
var r = '0000000',
o = '';
try {
o = crc32(e).toString(36);
r = this.addZeroToSeven(o);
} catch (e) {}
return r;
}
addZeroToSeven(e) {
return e && e.length >= 7 ? e : ('0000000' + String(e)).substr(-7);
}
xorEncrypt(e, t) {
var l = this.getCurrentTime();
var f = t.length;
var h = '';
for (var p = 0; p < e.length; p++) {
h += String.fromCharCode(e[p].charCodeAt() ^ t[p % f].charCodeAt());
}
var c = this.getCurrentTime();
var s = c - l;
return {
xorEncrypted: h,
totalTime: s,
};
}
utoa(e) {
// this.btoaPolyfill();
return window.btoa(unescape(encodeURIComponent(e)));
}
// btoaPolyfill() {
// var t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
//
// window.btoa = window.btoa || function (o) {
// for (var u, c, s, f, l = "", p = 0, d = (o = String(o)).length % 3; p < o.length;) {
// if ((c = o.charCodeAt(p++)) > 255 || (s = o.charCodeAt(p++) > 255) || (f = o.charCodeAt(p++) > 255)) {
// throw new TypeError("Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.");
// }
// u = c << 16 | s << 8 | f;
// l += t.charAt(u >> 18 & 63) + t.charAt(u >> 12 & 63) + t.charAt(u >> 6 & 63) + t.charAt(63 & u);
// }
//
// return d ? l.slice(0, d - 3) + "===".substring(d) : l;
// };
// }
inArr(e) {
return !(Number(e) in [1, 2, 3, 4, 5, 6, 7, 8, 9]);
}
getInRange(e, t, n) {
var l = n;
var f = t;
this.inArr(n) && (l = String(n).charCodeAt(0));
this.inArr(t) && (f = String(t).charCodeAt(0));
var c = [];
const that = this;
e.map(function (e) {
var n = e;
that.inArr(e) && (n = String(e).charCodeAt(0));
n >= f && n <= l && c.push(e);
});
return c;
}
isApp(e) {
var i = navigator.userAgent;
return e === 'jd' ? /^jdapp/i.test(i) : e === 'jdjr' && /JDJR-App/i.test(i);
}
isAndroid() {
var o = navigator.userAgent;
return o.indexOf('Android') > -1 || o.indexOf('Linux') > -1;
}
isIOS() {
return !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
}
versionCompare(e, t) {
if (e === t) return 0;
e = e.split('.');
t = t.split('.');
var s = e.length - t.length;
var l = [];
for (var c = 0; c < Math.abs(s); c++) l.push(0);
if (s > 0) {
t = t.concat(l);
} else {
s < 0 && (e = e.concat(l));
}
for (var f = 0; f < e.length; f++) {
if (((e[f] = parseInt(e[f], 10)), (t[f] = parseInt(t[f], 10)), e[f] > t[f])) return 1;
if (e[f] < t[f]) return -1;
}
return 0;
}
isDuringDate(e, t) {
try {
var n = new Date(),
r = new Date(e),
o = new Date(t);
return n >= r && n <= o;
} catch (e) {
return !1;
}
}
isNotEmptyString(e) {
return typeof e === 'string' && e !== '' && e.trim() !== '' && e !== 'null' && e !== 'undefined';
}
urlSafeBase64Decode(e) {
return e ? e.replace(/-/g, '+').replace(/_/g, '/') : '';
}
getDecode(e) {
try {
e = this.urlSafeBase64Decode(e);
return decodeURIComponent(
this.atobFunc(e)
.split('')
.map(function (e) {
return '%' + ('00' + e.charCodeAt(0).toString(16)).slice(-2);
})
.join(''),
);
} catch (e) {
return '';
}
}
stringToByte(e) {
var u = [];
var s;
var f;
s = e.length;
for (var c = 0; c < s; c++) {
f = e.charCodeAt(c);
if (f >= 65536 && f <= 1114111) {
u.push((7 & (f >> 18)) | 240);
u.push(((f >> 12) & 63) | 128);
u.push(((f >> 6) & 63) | 128);
u.push((f & 63) | 128);
} else {
if (f >= 2048 && f <= 65535) {
u.push((15 & (f >> 12)) | 224);
u.push(((f >> 6) & 63) | 128);
u.push(128 | (f & 63));
} else {
if (f >= 128 && f <= 2047) {
u.push(((f >> 6) & 31) | 192);
u.push((f & 63) | 128);
} else {
u.push(f & 255);
}
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
}
}
return u;
}
BKDRHash(e) {
try {
var s = 31;
var u = 0;
e = this.stringToByte(e);
if (!e || e.length < 1) return '';
for (var c = 0; c < e.length; c++) {
u = u * s + e[c];
u = u >>> 0;
}
var f = u & 2147483647;
return f.toString(16).toUpperCase();
} catch (e) {
return '';
}
}
rewriteToString(e) {
// e && Object.keys(e).forEach(function (t) {
// e[t].toString = function () {
// return "";
// };
// });
}
createIterable(e, t) {
var r = (typeof Symbol !== 'undefined' && e[Symbol.iterator]) || e['@@iterator'];
if (!r) {
if (Array.isArray(e) || (r = this.convertToIterable(e)) || (t && e && typeof e.length === 'number')) {
r && (e = r);
var s = 0,
f = function () {},
l = {
s: f,
n: function () {
var t = {};
if (((t.done = !0), s >= e.length)) return t;
var r = {};
r.done = !1;
r.value = e[s++];
return r;
2024-06-28 15:38:28 +08:00
},
2024-10-21 16:07:49 +08:00
e: function (e) {
throw e;
2024-06-28 15:38:28 +08:00
},
2024-10-21 16:07:49 +08:00
f: f,
};
2024-06-28 15:38:28 +08:00
2024-10-21 16:07:49 +08:00
return l;
}
2024-06-28 15:38:28 +08:00
2024-10-21 16:07:49 +08:00
throw new TypeError('Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.');
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
var d,
h = !0,
v = !1;
return {
s: function () {
r = r.call(e);
},
n: function () {
var e = r.next();
h = e.done;
return e;
},
e: function (e) {
v = !0;
d = e;
},
f: function () {
try {
!h && r.return != null && r.return();
} finally {
if (v) throw d;
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
},
};
}
convertToIterable(e, t) {
if (!e) return;
if (typeof e === 'string') return this.sliceToArray(e, t);
var c = Object.prototype.toString.call(e).slice(8, -1);
c === 'Object' && e.constructor && (c = e.constructor.name);
if (c === 'Map' || c === 'Set') return Array.from(e);
if (c === 'Arguments' || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)) return this.sliceToArray(e, t);
}
sliceToArray(e, t) {
(t == null || t > e.length) && (t = e.length);
for (var o = 0, i = new Array(t); o < t; o++) i[o] = e[o];
return i;
}
encrypt(e, t, n) {
const that = this;
return {
1: function () {
var e = that.getNumberInString(t);
var u = that.getSpecialPosition(n);
return Math.abs(e - u);
},
2: function () {
var r = that.getSpecialPosition(t, !1);
var a = that.getSpecialPosition(n);
return that.minusByByte(r, a);
},
3: function () {
var e = t.slice(0, 5),
r = String(n).slice(-5);
return that.minusByByte(e, r);
},
4: function () {
return that.encrypt1(t, n);
},
5: function () {
return that.encrypt2(t, n);
},
6: function () {
return that.encrypt3(t, n);
},
7: function () {
return that.encrypt7(t, n);
},
8: function () {
return that.encrypt8(t, n);
},
9: function () {
return that.encrypt9(t, n);
},
A: function () {
return that.encryptA(t, n);
},
B: function () {
return that.encryptB(t, n);
},
C: function () {
return that.encryptC(t, n);
},
D: function () {
return that.encryptD(t, n);
},
}[e]();
}
isFunction(t) {
return 'function' == typeof t;
}
emptyFunction() {}
decodeBase64URL(encodedString) {
return (encodedString + '===')
.slice(0, encodedString.length + 3 - ((encodedString.length + 3) % 4))
.replace(/-/g, '+')
.replace(/_/g, '/');
}
getDefaultMethod(obj, methodName) {
const e = obj[methodName];
return obj === Array.prototype || (Array.prototype.isPrototypeOf(obj) && e === Array.prototype[methodName]) ? Array.prototype[methodName] : e;
}
getRandomIDPro() {
var t,
e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
r = e.size,
n = void 0 === r ? 10 : r,
o = e.dictType,
i = void 0 === o ? 'number' : o,
a = e.customDict,
u = '';
if (a && 'string' == typeof a) t = a;
else
switch (i) {
case 'alphabet':
t = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
break;
case 'max':
t = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';
break;
default:
t = '0123456789';
}
for (; n--; ) u += t[(Math.random() * t.length) | 0];
return u;
}
fromBase64(t) {
return t.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
}
toBase64(t) {
return (t + this.getDefaultMethod('===', 'slice').call('===', (t.length + 3) % 4)).replace(/-/g, '+').replace(/_/g, '/');
}
isPlainObject(t) {
return '[object Object]' === Object.prototype.toString.call(t);
}
isEmpty(t) {
return !!this.isPlainObject(t) && !Object.keys(t).length;
}
containsReservedParamName(t) {
const PS = ['h5st', '_stk', '_ste'];
for (var e = Object.keys(t), r = 0; r < e.length; r++) {
var n = e[r];
if (this.getDefaultMethod(PS, 'indexOf').call(PS, n) >= 0) return !0;
}
return !1;
}
isSafeParamValue(t) {
let Bp =
'function' == typeof Object.Symbol && 'symbol' == typeof Object.f('iterator')
? function (t) {
return typeof t;
}
: function (t) {
return t && 'function' == typeof Object.Symbol && t.constructor === Object.Symbol && t !== Object.Symbol.prototype ? 'symbol' : typeof t;
};
let e = Bp(t);
return ('number' === e && !isNaN(t)) || 'string' === e || 'boolean' === e;
}
formatDate() {
let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : Date.now(),
e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 'yyyy-MM-dd',
n = new Date(t),
r = e,
o = {
'M+': n.getMonth() + 1,
'd+': n.getDate(),
'D+': n.getDate(),
'h+': n.getHours(),
'H+': n.getHours(),
'm+': n.getMinutes(),
's+': n.getSeconds(),
'w+': n.getDay(),
'q+': Math.floor((n.getMonth() + 3) / 3),
'S+': n.getMilliseconds(),
};
return (
/(y+)/i.test(r) && (r = r.replace(RegExp.$1, ''.concat(n.getFullYear()).substr(4 - RegExp.$1.length))),
Object.keys(o).forEach(function (t) {
if (new RegExp('('.concat(t, ')')).test(r)) {
var e = 'S+' === t ? '000' : '00';
r = r.replace(RegExp.$1, 1 == RegExp.$1.length ? o[t] : ''.concat(e).concat(o[t]).substr(''.concat(o[t]).length));
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
}),
r
);
}
getRandomIDPro(e = {}) {
var t,
r = e.size,
n = void 0 === r ? 10 : r,
o = e.dictType,
i = void 0 === o ? 'number' : o,
a = e.customDict,
u = '';
if (a && 'string' == typeof a) t = a;
else
switch (i) {
case 'alphabet':
t = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
break;
case 'max':
t = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';
break;
default:
t = '0123456789';
}
for (; n--; ) u += t[(Math.random() * t.length) | 0];
return u;
}
2024-06-28 15:38:28 +08:00
}
2024-10-21 16:07:49 +08:00
module.exports.BaseUtils = BaseUtils;