[JavaScript] 纯文本查看 复制代码
// 补环境部分用于获取 参数 X-Fingerprint ---------------------------------------------------
window = global;
document = {
getElementsByTagName: function(res) {
if (res == 'body') {
// console.log('document.createElement:::', res)
return {
0:{appendChild: function (){},
removeChild: function (){}}
}
}
},
createElement: function(res){
if (res == 'span') {
// console.log('document.createElement:::', res)
return {
style:{fontSize:{}}
}
}
}
};
window.screen = {
"width":1728,
"height":1117,
"availWidth":1728,
"availHeight":1085,
"pixelRatio":2
};
navigator = {
userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36',
plugins: {
"0": {
"0": {},
"1": {}
},
"1": {
"0": {},
"1": {}
},
"2": {
"0": {},
"1": {}
},
"3": {
"0": {},
"1": {}
},
"4": {
"0": {},
"1": {}
}
}
};
// 补Class部分用于获取 参数 X-Auth-Hash ----------------------------------------------------
const St = ((Je = typeof globalThis < "u" ? globalThis : void 0) === null || Je === void 0 ? void 0 : Je.crypto) || ((Ye = typeof global < "u" ? global : void 0) === null || Ye === void 0 ? void 0 : Ye.crypto) || ((Qe = typeof window < "u" ? window : void 0) === null || Qe === void 0 ? void 0 : Qe.crypto) || ((Ze = typeof self < "u" ? self : void 0) === null || Ze === void 0 ? void 0 : Ze.crypto) || ((tt = (et = typeof frames < "u" ? frames : void 0) === null || et === void 0 ? void 0 : et[0]) === null || tt === void 0 ? void 0 : tt.crypto);
let ct;
St ? ct = e => {
const t = [];
for (let r = 0; r < e; r += 4)
t.push(St.getRandomValues(new Uint32Array(1))[0]);
return new ge(t,e)
}
: ct = e => {
const t = []
, r = s => {
let l = s
, u = 987654321;
const v = 4294967295;
return () => {
u = 36969 * (u & 65535) + (u >> 16) & v,
l = 18e3 * (l & 65535) + (l >> 16) & v;
let k = (u << 16) + l & v;
return k /= 4294967296,
k += .5,
k * (Math.random() > .5 ? 1 : -1)
}
}
;
let o;
for (let s = 0; s < e; s += 4) {
const l = r((o || Math.random()) * 4294967296);
o = l() * 987654071,
t.push(l() * 4294967296 | 0)
}
return new ge(t,e)
}
;
class ut {
static create(...t) {
return new this(...t)
}
mixIn(t) {
return Object.assign(this, t)
}
clone() {
const t = new this.constructor;
return Object.assign(t, this),
t
}
}
class ge extends ut {
constructor(t=[], r) {
if (super(),
t instanceof ArrayBuffer) {
const o = new Uint8Array(t);
this._initFromUint8Array(o);
return
}
if (ArrayBuffer.isView(t)) {
let o;
t instanceof Uint8Array ? o = t : o = new Uint8Array(t.buffer,t.byteOffset,t.byteLength),
this._initFromUint8Array(o);
return
}
this.words = t,
this.sigBytes = r !== void 0 ? r : this.words.length * 4
}
_initFromUint8Array(t) {
const r = t.byteLength
, o = [];
for (let s = 0; s < r; s += 1)
o[s >>> 2] |= t[s] << 24 - s % 4 * 8;
this.words = o,
this.sigBytes = r
}
toString(t=fo) {
return t.stringify(this)
}
concat(t) {
const r = this.words
, o = t.words
, s = this.sigBytes
, l = t.sigBytes;
if (this.clamp(),
s % 4)
for (let u = 0; u < l; u += 1) {
const v = o[u >>> 2] >>> 24 - u % 4 * 8 & 255;
r[s + u >>> 2] |= v << 24 - (s + u) % 4 * 8
}
else
for (let u = 0; u < l; u += 4)
r[s + u >>> 2] = o[u >>> 2];
return this.sigBytes += l,
this
}
clamp() {
const {words: t, sigBytes: r} = this;
t[r >>> 2] &= 4294967295 << 32 - r % 4 * 8,
t.length = Math.ceil(r / 4)
}
clone() {
const t = super.clone();
return t.words = this.words.slice(0),
t
}
}
ge.random = ct;
const fo = {
stringify(e) {
const {words: t, sigBytes: r} = e
, o = [];
for (let s = 0; s < r; s += 1) {
const l = t[s >>> 2] >>> 24 - s % 4 * 8 & 255;
o.push((l >>> 4).toString(16)),
o.push((l & 15).toString(16))
}
return o.join("")
},
parse(e) {
const t = e.length
, r = [];
for (let o = 0; o < t; o += 2)
r[o >>> 3] |= parseInt(e.substr(o, 2), 16) << 24 - o % 8 * 4;
return new ge(r,t / 2)
}
}
, Tt = {
stringify(e) {
const {words: t, sigBytes: r} = e
, o = [];
for (let s = 0; s < r; s += 1) {
const l = t[s >>> 2] >>> 24 - s % 4 * 8 & 255;
o.push(String.fromCharCode(l))
}
return o.join("")
},
parse(e) {
const t = e.length
, r = [];
for (let o = 0; o < t; o += 1)
r[o >>> 2] |= (e.charCodeAt(o) & 255) << 24 - o % 4 * 8;
return new ge(r,t)
}
}
, Ht = {
stringify(e) {
try {
return decodeURIComponent(escape(Tt.stringify(e)))
} catch {
throw new Error("Malformed UTF-8 data")
}
},
parse(e) {
return Tt.parse(unescape(encodeURIComponent(e)))
}
};
class mo extends ut {
constructor() {
super(),
this._minBufferSize = 0
}
reset() {
this._data = new ge,
this._nDataBytes = 0
}
_append(t) {
let r;
typeof t == "string" ? r = Ht.parse(t) : r = t,
this._data.concat(r),
this._nDataBytes += r.sigBytes
}
_process(t) {
let r;
const o = this._data
, s = o.words
, l = o.sigBytes
, u = this.blockSize * 4;
let v = l / u;
t ? v = Math.ceil(v) : v = Math.max((v | 0) - this._minBufferSize, 0);
const k = v * this.blockSize
, z = Math.min(k * 4, l);
if (k) {
for (let M = 0; M < k; M += this.blockSize)
this._doProcessBlock(s, M);
r = s.splice(0, k),
o.sigBytes -= z
}
return new ge(r || [],z)
}
clone() {
const t = super.clone();
return t._data = this._data.clone(),
t
}
}
class Ut extends mo {
constructor(t) {
super(),
this.blockSize = 512 / 32,
this.cfg = Object.assign({}, t),
this.reset()
}
static _createHelper(t) {
return (r, o) => new t(o).finalize(r)
}
static _createHmacHelper(t) {
return (r, o) => new ft(t,o).finalize(r)
}
reset() {
super.reset(),
this._doReset()
}
update(t) {
return this._append(t),
this._process(),
this
}
finalize(t) {
return t && this._append(t),
this._doFinalize()
}
}
class po extends Ut {
}
class ft extends ut {
constructor(t, r) {
super();
const o = new t;
this._hasher = o;
let s;
typeof r == "string" ? s = Ht.parse(r) : s = r;
const l = o.blockSize
, u = l * 4;
s.sigBytes > u && (s = o.finalize(s)),
s.clamp();
const v = s.clone();
this._oKey = v;
const k = s.clone();
this._iKey = k;
const z = v.words
, M = k.words;
for (let C = 0; C < l; C += 1)
z[C] ^= 1549556828,
M[C] ^= 909522486;
v.sigBytes = u,
k.sigBytes = u,
this.reset()
}
static create(...t) {
const [r,o] = t;
return new ft(r,o)
}
reset() {
const t = this._hasher;
t.reset(),
t.update(this._iKey)
}
update(t) {
return this._hasher.update(t),
this
}
finalize(t) {
const r = this._hasher
, o = r.finalize(t);
return r.reset(),
r.finalize(this._oKey.clone().concat(o))
}
}
const _ = [];
for (let e = 0; e < 64; e += 1)
_[e] = Math.abs(Math.sin(e + 1)) * 4294967296 | 0;
const X = (e, t, r, o, s, l, u) => {
const v = e + (t & r | ~t & o) + s + u;
return (v << l | v >>> 32 - l) + t
}
, J = (e, t, r, o, s, l, u) => {
const v = e + (t & o | r & ~o) + s + u;
return (v << l | v >>> 32 - l) + t
}
, Y = (e, t, r, o, s, l, u) => {
const v = e + (t ^ r ^ o) + s + u;
return (v << l | v >>> 32 - l) + t
}
, Q = (e, t, r, o, s, l, u) => {
const v = e + (r ^ (t | ~o)) + s + u;
return (v << l | v >>> 32 - l) + t
}
;
class ho extends po {
_doReset() {
this._hash = new ge([1732584193, 4023233417, 2562383102, 271733878])
}
_doProcessBlock(t, r) {
const o = t;
for (let Z = 0; Z < 16; Z += 1) {
const be = r + Z
, ne = t[be];
o[be] = (ne << 8 | ne >>> 24) & 16711935 | (ne << 24 | ne >>> 8) & 4278255360
}
const s = this._hash.words
, l = o[r + 0]
, u = o[r + 1]
, v = o[r + 2]
, k = o[r + 3]
, z = o[r + 4]
, M = o[r + 5]
, C = o[r + 6]
, H = o[r + 7]
, F = o[r + 8]
, L = o[r + 9]
, P = o[r + 10]
, W = o[r + 11]
, G = o[r + 12]
, ee = o[r + 13]
, te = o[r + 14]
, re = o[r + 15];
let g = s[0]
, b = s[1]
, w = s[2]
, i = s[3];
g = X(g, b, w, i, l, 7, _[0]),
i = X(i, g, b, w, u, 12, _[1]),
w = X(w, i, g, b, v, 17, _[2]),
b = X(b, w, i, g, k, 22, _[3]),
g = X(g, b, w, i, z, 7, _[4]),
i = X(i, g, b, w, M, 12, _[5]),
w = X(w, i, g, b, C, 17, _[6]),
b = X(b, w, i, g, H, 22, _[7]),
g = X(g, b, w, i, F, 7, _[8]),
i = X(i, g, b, w, L, 12, _[9]),
w = X(w, i, g, b, P, 17, _[10]),
b = X(b, w, i, g, W, 22, _[11]),
g = X(g, b, w, i, G, 7, _[12]),
i = X(i, g, b, w, ee, 12, _[13]),
w = X(w, i, g, b, te, 17, _[14]),
b = X(b, w, i, g, re, 22, _[15]),
g = J(g, b, w, i, u, 5, _[16]),
i = J(i, g, b, w, C, 9, _[17]),
w = J(w, i, g, b, W, 14, _[18]),
b = J(b, w, i, g, l, 20, _[19]),
g = J(g, b, w, i, M, 5, _[20]),
i = J(i, g, b, w, P, 9, _[21]),
w = J(w, i, g, b, re, 14, _[22]),
b = J(b, w, i, g, z, 20, _[23]),
g = J(g, b, w, i, L, 5, _[24]),
i = J(i, g, b, w, te, 9, _[25]),
w = J(w, i, g, b, k, 14, _[26]),
b = J(b, w, i, g, F, 20, _[27]),
g = J(g, b, w, i, ee, 5, _[28]),
i = J(i, g, b, w, v, 9, _[29]),
w = J(w, i, g, b, H, 14, _[30]),
b = J(b, w, i, g, G, 20, _[31]),
g = Y(g, b, w, i, M, 4, _[32]),
i = Y(i, g, b, w, F, 11, _[33]),
w = Y(w, i, g, b, W, 16, _[34]),
b = Y(b, w, i, g, te, 23, _[35]),
g = Y(g, b, w, i, u, 4, _[36]),
i = Y(i, g, b, w, z, 11, _[37]),
w = Y(w, i, g, b, H, 16, _[38]),
b = Y(b, w, i, g, P, 23, _[39]),
g = Y(g, b, w, i, ee, 4, _[40]),
i = Y(i, g, b, w, l, 11, _[41]),
w = Y(w, i, g, b, k, 16, _[42]),
b = Y(b, w, i, g, C, 23, _[43]),
g = Y(g, b, w, i, L, 4, _[44]),
i = Y(i, g, b, w, G, 11, _[45]),
w = Y(w, i, g, b, re, 16, _[46]),
b = Y(b, w, i, g, v, 23, _[47]),
g = Q(g, b, w, i, l, 6, _[48]),
i = Q(i, g, b, w, H, 10, _[49]),
w = Q(w, i, g, b, te, 15, _[50]),
b = Q(b, w, i, g, M, 21, _[51]),
g = Q(g, b, w, i, G, 6, _[52]),
i = Q(i, g, b, w, k, 10, _[53]),
w = Q(w, i, g, b, P, 15, _[54]),
b = Q(b, w, i, g, u, 21, _[55]),
g = Q(g, b, w, i, F, 6, _[56]),
i = Q(i, g, b, w, re, 10, _[57]),
w = Q(w, i, g, b, C, 15, _[58]),
b = Q(b, w, i, g, ee, 21, _[59]),
g = Q(g, b, w, i, z, 6, _[60]),
i = Q(i, g, b, w, W, 10, _[61]),
w = Q(w, i, g, b, v, 15, _[62]),
b = Q(b, w, i, g, L, 21, _[63]),
s[0] = s[0] + g | 0,
s[1] = s[1] + b | 0,
s[2] = s[2] + w | 0,
s[3] = s[3] + i | 0
}
_doFinalize() {
const t = this._data
, r = t.words
, o = this._nDataBytes * 8
, s = t.sigBytes * 8;
r[s >>> 5] |= 128 << 24 - s % 32;
const l = Math.floor(o / 4294967296)
, u = o;
r[(s + 64 >>> 9 << 4) + 15] = (l << 8 | l >>> 24) & 16711935 | (l << 24 | l >>> 8) & 4278255360,
r[(s + 64 >>> 9 << 4) + 14] = (u << 8 | u >>> 24) & 16711935 | (u << 24 | u >>> 8) & 4278255360,
t.sigBytes = (r.length + 1) * 4,
this._process();
const v = this._hash
, k = v.words;
for (let z = 0; z < 4; z += 1) {
const M = k[z];
k[z] = (M << 8 | M >>> 24) & 16711935 | (M << 24 | M >>> 8) & 4278255360
}
return v
}
clone() {
const t = super.clone.call(this);
return t._hash = this._hash.clone(),
t
}
}
// 补环境部分用于获取 参数 X-Fingerprint ---------------------------------------------------
// 这个部分放在前面会报错。
(function(a) {
var l = {};
function s(o) {
if (l[o])
return l[o].exports;
var u = l[o] = {
i: o,
l: !1,
exports: {}
};
return a[o].call(u.exports, u, u.exports, s),
u.l = !0,
u.exports
}
global.s = s;
return s.m = a,
s.c = l,
s.d = function(o, u, d) {
s.o(o, u) || Object.defineProperty(o, u, {
enumerable: !0,
get: d
})
}
,
s.r = function(o) {
typeof Symbol < "u" && Symbol.toStringTag && Object.defineProperty(o, Symbol.toStringTag, {
value: "Module"
}),
Object.defineProperty(o, "__esModule", {
value: !0
})
}
,
s.t = function(o, u) {
if (1 & u && (o = s(o)),
8 & u || 4 & u && typeof o == "object" && o && o.__esModule)
return o;
var d = Object.create(null);
if (s.r(d),
Object.defineProperty(d, "default", {
enumerable: !0,
value: o
}),
2 & u && typeof o != "string")
for (var w in o)
s.d(d, w, (function(m) {
return o[m]
}
).bind(null, w));
return d
}
,
s.n = function(o) {
var u = o && o.__esModule ? function() {
return o.default
}
: function() {
return o
}
;
return s.d(u, "a", u),
u
}
,
s.o = function(o, u) {
return Object.prototype.hasOwnProperty.call(o, u)
}
,
s.p = "",
s(s.s = 0)
})([function(a, l, s) {
var o, u, d = s(1)(), w = s(3), m = s(4), g = s(6), h = function() {
var i = new m;
return o = i.getResult(),
u = new g,
this
};
h.prototype = {
getSoftwareVersion: function() {
return "0.1.11"
},
getBrowserData: function() {
return o
},
getFingerprint: function() {
var i = "|"
, n = o.ua
, t = this.getScreenPrint()
, r = this.getPlugins()
, c = this.getFonts()
, C = this.isLocalStorage()
, x = this.isSessionStorage()
, p = this.getTimeZone()
, b = this.getLanguage()
, A = this.getSystemLanguage()
, L = this.isCookie()
, k = this.getCanvasPrint();
return w(n + i + t + i + r + i + c + i + C + i + x + i + p + i + b + i + A + i + L + i + k, 256)
},
getCustomFingerprint: function() {
for (var i = "|", n = "", t = 0; t < arguments.length; t++)
n += arguments[t] + i;
return w(n, 256)
},
getUserAgent: function() {
return o.ua
},
getUserAgentLowerCase: function() {
return o.ua.toLowerCase()
},
getBrowser: function() {
return o.browser.name
},
getBrowserVersion: function() {
return o.browser.version
},
getBrowserMajorVersion: function() {
return o.browser.major
},
isIE: function() {
return /IE/i.test(o.browser.name)
},
isChrome: function() {
return /Chrome/i.test(o.browser.name)
},
isFirefox: function() {
return /Firefox/i.test(o.browser.name)
},
isSafari: function() {
return /Safari/i.test(o.browser.name)
},
isMobileSafari: function() {
return /Mobile\sSafari/i.test(o.browser.name)
},
isOpera: function() {
return /Opera/i.test(o.browser.name)
},
getEngine: function() {
return o.engine.name
},
getEngineVersion: function() {
return o.engine.version
},
getOS: function() {
return o.os.name
},
getOSVersion: function() {
return o.os.version
},
isWindows: function() {
return /Windows/i.test(o.os.name)
},
isMac: function() {
return /Mac/i.test(o.os.name)
},
isLinux: function() {
return /Linux/i.test(o.os.name)
},
isUbuntu: function() {
return /Ubuntu/i.test(o.os.name)
},
isSolaris: function() {
return /Solaris/i.test(o.os.name)
},
getDevice: function() {
return o.device.model
},
getDeviceType: function() {
return o.device.type
},
getDeviceVendor: function() {
return o.device.vendor
},
getCPU: function() {
return o.cpu.architecture
},
isMobile: function() {
var i = o.ua || navigator.vendor || window.opera;
return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(i) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(i.substr(0, 4))
},
isMobileMajor: function() {
return this.isMobileAndroid() || this.isMobileBlackBerry() || this.isMobileIOS() || this.isMobileOpera() || this.isMobileWindows()
},
isMobileAndroid: function() {
return !!o.ua.match(/Android/i)
},
isMobileOpera: function() {
return !!o.ua.match(/Opera Mini/i)
},
isMobileWindows: function() {
return !!o.ua.match(/IEMobile/i)
},
isMobileBlackBerry: function() {
return !!o.ua.match(/BlackBerry/i)
},
isMobileIOS: function() {
return !!o.ua.match(/iPhone|iPad|iPod/i)
},
isIphone: function() {
return !!o.ua.match(/iPhone/i)
},
isIpad: function() {
return !!o.ua.match(/iPad/i)
},
isIpod: function() {
return !!o.ua.match(/iPod/i)
},
getScreenPrint: function() {
return "Current Resolution: " + this.getCurrentResolution() + ", Available Resolution: " + this.getAvailableResolution() + ", Color Depth: " + this.getColorDepth() + ", Device XDPI: " + this.getDeviceXDPI() + ", Device YDPI: " + this.getDeviceYDPI()
},
getColorDepth: function() {
return screen.colorDepth
},
getCurrentResolution: function() {
return screen.width + "x" + screen.height
},
getAvailableResolution: function() {
return screen.availWidth + "x" + screen.availHeight
},
getDeviceXDPI: function() {
return screen.deviceXDPI
},
getDeviceYDPI: function() {
return screen.deviceYDPI
},
getPlugins: function() {
for (var i = "", n = 0; n < navigator.plugins.length; n++)
n == navigator.plugins.length - 1 ? i += navigator.plugins[n].name : i += navigator.plugins[n].name + ", ";
return i
},
isJava: function() {
return navigator.javaEnabled()
},
getJavaVersion: function() {
throw new Error("Please use client.java.js or client.js if you need this functionality!")
},
isFlash: function() {
return !!navigator.plugins["Shockwave Flash"]
},
getFlashVersion: function() {
throw new Error("Please use client.flash.js or client.js if you need this functionality!")
},
isSilverlight: function() {
return !!navigator.plugins["Silverlight Plug-In"]
},
getSilverlightVersion: function() {
return this.isSilverlight() ? navigator.plugins["Silverlight Plug-In"].description : ""
},
isMimeTypes: function() {
return !(!navigator.mimeTypes || !navigator.mimeTypes.length)
},
getMimeTypes: function() {
var i = "";
if (navigator.mimeTypes)
for (var n = 0; n < navigator.mimeTypes.length; n++)
n == navigator.mimeTypes.length - 1 ? i += navigator.mimeTypes[n].description : i += navigator.mimeTypes[n].description + ", ";
return i
},
isFont: function(i) {
return u.detect(i)
},
getFonts: function() {
for (var i = ["Abadi MT Condensed Light", "Adobe Fangsong Std", "Adobe Hebrew", "Adobe Ming Std", "Agency FB", "Aharoni", "Andalus", "Angsana New", "AngsanaUPC", "Aparajita", "Arab", "Arabic Transparent", "Arabic Typesetting", "Arial Baltic", "Arial Black", "Arial CE", "Arial CYR", "Arial Greek", "Arial TUR", "Arial", "Batang", "BatangChe", "Bauhaus 93", "Bell MT", "Bitstream Vera Serif", "Bodoni MT", "Bookman Old Style", "Braggadocio", "Broadway", "Browallia New", "BrowalliaUPC", "Calibri Light", "Calibri", "Californian FB", "Cambria Math", "Cambria", "Candara", "Castellar", "Casual", "Centaur", "Century Gothic", "Chalkduster", "Colonna MT", "Comic Sans MS", "Consolas", "Constantia", "Copperplate Gothic Light", "Corbel", "Cordia New", "CordiaUPC", "Courier New Baltic", "Courier New CE", "Courier New CYR", "Courier New Greek", "Courier New TUR", "Courier New", "DFKai-SB", "DaunPenh", "David", "DejaVu LGC Sans Mono", "Desdemona", "DilleniaUPC", "DokChampa", "Dotum", "DotumChe", "Ebrima", "Engravers MT", "Eras Bold ITC", "Estrangelo Edessa", "EucrosiaUPC", "Euphemia", "Eurostile", "FangSong", "Forte", "FrankRuehl", "Franklin Gothic Heavy", "Franklin Gothic Medium", "FreesiaUPC", "French Script MT", "Gabriola", "Gautami", "Georgia", "Gigi", "Gisha", "Goudy Old Style", "Gulim", "GulimChe", "GungSeo", "Gungsuh", "GungsuhChe", "Haettenschweiler", "Harrington", "Hei S", "HeiT", "Heisei Kaku Gothic", "Hiragino Sans GB", "Impact", "Informal Roman", "IrisUPC", "Iskoola Pota", "JasmineUPC", "KacstOne", "KaiTi", "Kalinga", "Kartika", "Khmer UI", "Kino MT", "KodchiangUPC", "Kokila", "Kozuka Gothic Pr6N", "Lao UI", "Latha", "Leelawadee", "Levenim MT", "LilyUPC", "Lohit Gujarati", "Loma", "Lucida Bright", "Lucida Console", "Lucida Fax", "Lucida Sans Unicode", "MS Gothic", "MS Mincho", "MS PGothic", "MS PMincho", "MS Reference Sans Serif", "MS UI Gothic", "MV Boli", "Magneto", "Malgun Gothic", "Mangal", "Marlett", "Matura MT Script Capitals", "Meiryo UI", "Meiryo", "Menlo", "Microsoft Himalaya", "Microsoft JhengHei", "Microsoft New Tai Lue", "Microsoft PhagsPa", "Microsoft Sans Serif", "Microsoft Tai Le", "Microsoft Uighur", "Microsoft YaHei", "Microsoft Yi Baiti", "MingLiU", "MingLiU-ExtB", "MingLiU_HKSCS", "MingLiU_HKSCS-ExtB", "Miriam Fixed", "Miriam", "Mongolian Baiti", "MoolBoran", "NSimSun", "Narkisim", "News Gothic MT", "Niagara Solid", "Nyala", "PMingLiU", "PMingLiU-ExtB", "Palace Script MT", "Palatino Linotype", "Papyrus", "Perpetua", "Plantagenet Cherokee", "Playbill", "Prelude Bold", "Prelude Condensed Bold", "Prelude Condensed Medium", "Prelude Medium", "PreludeCompressedWGL Black", "PreludeCompressedWGL Bold", "PreludeCompressedWGL Light", "PreludeCompressedWGL Medium", "PreludeCondensedWGL Black", "PreludeCondensedWGL Bold", "PreludeCondensedWGL Light", "PreludeCondensedWGL Medium", "PreludeWGL Black", "PreludeWGL Bold", "PreludeWGL Light", "PreludeWGL Medium", "Raavi", "Rachana", "Rockwell", "Rod", "Sakkal Majalla", "Sawasdee", "Script MT Bold", "Segoe Print", "Segoe Script", "Segoe UI Light", "Segoe UI Semibold", "Segoe UI Symbol", "Segoe UI", "Shonar Bangla", "Showcard Gothic", "Shruti", "SimHei", "SimSun", "SimSun-ExtB", "Simplified Arabic Fixed", "Simplified Arabic", "Snap ITC", "Sylfaen", "Symbol", "Tahoma", "Times New Roman Baltic", "Times New Roman CE", "Times New Roman CYR", "Times New Roman Greek", "Times New Roman TUR", "Times New Roman", "TlwgMono", "Traditional Arabic", "Trebuchet MS", "Tunga", "Tw Cen MT Condensed Extra Bold", "Ubuntu", "Umpush", "Univers", "Utopia", "Utsaah", "Vani", "Verdana", "Vijaya", "Vladimir Script", "Vrinda", "Webdings", "Wide Latin", "Wingdings"], n = "", t = 0; t < i.length; t++)
u.detect(i[t]) && (n += t == i.length - 1 ? i[t] : i[t] + ", ");
return n
},
isLocalStorage: function() {
try {
return !!d.localStorage
} catch {
return !0
}
},
isSessionStorage: function() {
try {
return !!d.sessionStorage
} catch {
return !0
}
},
isCookie: function() {
return navigator.cookieEnabled
},
getTimeZone: function() {
var i, n;
return i = new Date,
(n = String(-i.getTimezoneOffset() / 60)) < 0 ? "-" + ("0" + (n *= -1)).slice(-2) : "+" + ("0" + n).slice(-2)
},
getLanguage: function() {
return navigator.language
},
getSystemLanguage: function() {
return navigator.systemLanguage || window.navigator.language
},
isCanvas: function() {
var i = document.createElement("canvas");
try {
return !(!i.getContext || !i.getContext("2d"))
} catch {
return !1
}
},
getCanvasPrint: function() {
var i, n = document.createElement("canvas");
try {
i = n.getContext("2d")
} catch {
return ""
}
var t = "ClientJS,org <canvas> 1.0";
return i.textBaseline = "top",
i.font = "14px 'Arial'",
i.textBaseline = "alphabetic",
i.fillStyle = "#f60",
i.fillRect(125, 1, 62, 20),
i.fillStyle = "#069",
i.fillText(t, 2, 15),
i.fillStyle = "rgba(102, 204, 0, 0.7)",
i.fillText(t, 4, 17),
n.toDataURL()
}
},
l.ClientJS = h;
global.uo = l
}
, function(a, l, s) {
var o = s(2);
a.exports = function() {
return typeof J == "object" && J && J.Math === Math && J.Array === Array ? J : o
}
}
, function(a, l, s) {
typeof self < "u" ? a.exports = self : typeof window < "u" ? a.exports = window : a.exports = Function("return this")()
}
, function(a, l, s) {
a.exports = function(o, u) {
var d, w, m, g, h, i, n, t;
for (d = 3 & o.length,
w = o.length - d,
m = u,
h = 3432918353,
i = 461845907,
t = 0; t < w; )
n = 255 & o.charCodeAt(t) | (255 & o.charCodeAt(++t)) << 8 | (255 & o.charCodeAt(++t)) << 16 | (255 & o.charCodeAt(++t)) << 24,
++t,
m = 27492 + (65535 & (g = 5 * (65535 & (m = (m ^= n = (65535 & (n = (n = (65535 & n) * h + (((n >>> 16) * h & 65535) << 16) & 4294967295) << 15 | n >>> 17)) * i + (((n >>> 16) * i & 65535) << 16) & 4294967295) << 13 | m >>> 19)) + ((5 * (m >>> 16) & 65535) << 16) & 4294967295)) + ((58964 + (g >>> 16) & 65535) << 16);
switch (n = 0,
d) {
case 3:
n ^= (255 & o.charCodeAt(t + 2)) << 16;
case 2:
n ^= (255 & o.charCodeAt(t + 1)) << 8;
case 1:
m ^= n = (65535 & (n = (n = (65535 & (n ^= 255 & o.charCodeAt(t))) * h + (((n >>> 16) * h & 65535) << 16) & 4294967295) << 15 | n >>> 17)) * i + (((n >>> 16) * i & 65535) << 16) & 4294967295
}
return m ^= o.length,
m = 2246822507 * (65535 & (m ^= m >>> 16)) + ((2246822507 * (m >>> 16) & 65535) << 16) & 4294967295,
m = 3266489909 * (65535 & (m ^= m >>> 13)) + ((3266489909 * (m >>> 16) & 65535) << 16) & 4294967295,
(m ^= m >>> 16) >>> 0
}
}
, function(a, l, s) {
var o;
(function(u, d) {
var w = "function"
, m = "undefined"
, g = "object"
, h = "string"
, i = "model"
, n = "name"
, t = "type"
, r = "vendor"
, c = "version"
, C = "architecture"
, x = "console"
, p = "mobile"
, b = "tablet"
, A = "smarttv"
, L = "wearable"
, k = "embedded"
, B = "Amazon"
, z = "Apple"
, G = "ASUS"
, W = "BlackBerry"
, R = "Firefox"
, D = "Google"
, y = "Huawei"
, _ = "LG"
, O = "Microsoft"
, ge = "Motorola"
, He = "Opera"
, ae = "Samsung"
, se = "Sony"
, he = "Xiaomi"
, le = "Zebra"
, ve = "Facebook"
, $ = function(M) {
var P = {};
for (var T in M)
P[M[T].toUpperCase()] = M[T];
return P
}
, ye = function(M, P) {
return typeof M === h && Y(P).indexOf(Y(M)) !== -1
}
, Y = function(M) {
return M.toLowerCase()
}
, ue = function(M, P) {
if (typeof M === h)
return M = M.replace(/^\s\s*/, "").replace(/\s\s*$/, ""),
typeof P === m ? M : M.substring(0, 255)
}
, X = function(M, P) {
for (var T, U, v, S, q, E, Q = 0; Q < P.length && !q; ) {
var ke = P[Q]
, Ce = P[Q + 1];
for (T = U = 0; T < ke.length && !q; )
if (q = ke[T++].exec(M))
for (v = 0; v < Ce.length; v++)
E = q[++U],
typeof (S = Ce[v]) === g && S.length > 0 ? S.length == 2 ? typeof S[1] == w ? this[S[0]] = S[1].call(this, E) : this[S[0]] = S[1] : S.length == 3 ? typeof S[1] !== w || S[1].exec && S[1].test ? this[S[0]] = E ? E.replace(S[1], S[2]) : d : this[S[0]] = E ? S[1].call(this, E, S[2]) : d : S.length == 4 && (this[S[0]] = E ? S[3].call(this, E.replace(S[1], S[2])) : d) : this[S] = E || d;
Q += 2
}
}
, ce = function(M, P) {
for (var T in P)
if (typeof P[T] === g && P[T].length > 0) {
for (var U = 0; U < P[T].length; U++)
if (ye(P[T][U], M))
return T === "?" ? d : T
} else if (ye(P[T], M))
return T === "?" ? d : T;
return M
}
, Se = {
ME: "4.90",
"NT 3.11": "NT3.51",
"NT 4.0": "NT4.0",
2e3: "NT 5.0",
XP: ["NT 5.1", "NT 5.2"],
Vista: "NT 6.0",
7: "NT 6.1",
8: "NT 6.2",
8.1: "NT 6.3",
10: ["NT 6.4", "NT 10.0"],
RT: "ARM"
}
, xe = {
browser: [[/\b(?:crmo|crios)\/([\w\.]+)/i], [c, [n, "Chrome"]], [/edg(?:e|ios|a)?\/([\w\.]+)/i], [c, [n, "Edge"]], [/(opera mini)\/([-\w\.]+)/i, /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i, /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i], [n, c], [/opios[\/ ]+([\w\.]+)/i], [c, [n, "Opera Mini"]], [/\bopr\/([\w\.]+)/i], [c, [n, He]], [/(kindle)\/([\w\.]+)/i, /(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i, /(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i, /(ba?idubrowser)[\/ ]?([\w\.]+)/i, /(?:ms|\()(ie) ([\w\.]+)/i, /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale|qqbrowserlite|qq)\/([-\w\.]+)/i, /(weibo)__([\d\.]+)/i], [n, c], [/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i], [c, [n, "UCBrowser"]], [/\bqbcore\/([\w\.]+)/i], [c, [n, "WeChat(Win) Desktop"]], [/micromessenger\/([\w\.]+)/i], [c, [n, "WeChat"]], [/konqueror\/([\w\.]+)/i], [c, [n, "Konqueror"]], [/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i], [c, [n, "IE"]], [/yabrowser\/([\w\.]+)/i], [c, [n, "Yandex"]], [/(avast|avg)\/([\w\.]+)/i], [[n, /(.+)/, "$1 Secure Browser"], c], [/\bfocus\/([\w\.]+)/i], [c, [n, "Firefox Focus"]], [/\bopt\/([\w\.]+)/i], [c, [n, "Opera Touch"]], [/coc_coc\w+\/([\w\.]+)/i], [c, [n, "Coc Coc"]], [/dolfin\/([\w\.]+)/i], [c, [n, "Dolphin"]], [/coast\/([\w\.]+)/i], [c, [n, "Opera Coast"]], [/miuibrowser\/([\w\.]+)/i], [c, [n, "MIUI Browser"]], [/fxios\/([-\w\.]+)/i], [c, [n, R]], [/\bqihu|(qi?ho?o?|360)browser/i], [[n, "360 Browser"]], [/(oculus|samsung|sailfish)browser\/([\w\.]+)/i], [[n, /(.+)/, "$1 Browser"], c], [/(comodo_dragon)\/([\w\.]+)/i], [[n, /_/g, " "], c], [/(electron)\/([\w\.]+) safari/i, /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i, /m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i], [n, c], [/(metasr)[\/ ]?([\w\.]+)/i, /(lbbrowser)/i], [n], [/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i], [[n, ve], c], [/safari (line)\/([\w\.]+)/i, /\b(line)\/([\w\.]+)\/iab/i, /(chromium|instagram)[\/ ]([-\w\.]+)/i], [n, c], [/\bgsa\/([\w\.]+) .*safari\//i], [c, [n, "GSA"]], [/headlesschrome(?:\/([\w\.]+)| )/i], [c, [n, "Chrome Headless"]], [/ wv\).+(chrome)\/([\w\.]+)/i], [[n, "Chrome WebView"], c], [/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i], [c, [n, "Android Browser"]], [/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i], [n, c], [/version\/([\w\.]+) .*mobile\/\w+ (safari)/i], [c, [n, "Mobile Safari"]], [/version\/([\w\.]+) .*(mobile ?safari|safari)/i], [c, n], [/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i], [n, [c, ce, {
"1.0": "/8",
1.2: "/1",
1.3: "/3",
"2.0": "/412",
"2.0.2": "/416",
"2.0.3": "/417",
"2.0.4": "/419",
"?": "/"
}]], [/(webkit|khtml)\/([\w\.]+)/i], [n, c], [/(navigator|netscape\d?)\/([-\w\.]+)/i], [[n, "Netscape"], c], [/mobile vr; rv:([\w\.]+)\).+firefox/i], [c, [n, "Firefox Reality"]], [/ekiohf.+(flow)\/([\w\.]+)/i, /(swiftfox)/i, /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i, /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i, /(firefox)\/([\w\.]+)/i, /(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i, /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i, /(links) \(([\w\.]+)/i], [n, c]],
cpu: [[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i], [[C, "amd64"]], [/(ia32(?=;))/i], [[C, Y]], [/((?:i[346]|x)86)[;\)]/i], [[C, "ia32"]], [/\b(aarch64|arm(v?8e?l?|_?64))\b/i], [[C, "arm64"]], [/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i], [[C, "armhf"]], [/windows (ce|mobile); ppc;/i], [[C, "arm"]], [/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i], [[C, /ower/, "", Y]], [/(sun4\w)[;\)]/i], [[C, "sparc"]], [/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i], [[C, Y]]],
device: [[/\b(sch-i[89]0\d|shw-m380s|sm-[pt]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i], [i, [r, ae], [t, b]], [/\b((?:s[cgp]h|gt|sm)-\w+|galaxy nexus)/i, /samsung[- ]([-\w]+)/i, /sec-(sgh\w+)/i], [i, [r, ae], [t, p]], [/\((ip(?:hone|od)[\w ]*);/i], [i, [r, z], [t, p]], [/\((ipad);[-\w\),; ]+apple/i, /applecoremedia\/[\w\.]+ \((ipad)/i, /\b(ipad)\d\d?,\d\d?[;\]].+ios/i], [i, [r, z], [t, b]], [/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i], [i, [r, y], [t, b]], [/(?:huawei|honor)([-\w ]+)[;\)]/i, /\b(nexus 6p|\w{2,4}-[atu]?[ln][01259x][012359][an]?)\b(?!.+d\/s)/i], [i, [r, y], [t, p]], [/\b(poco[\w ]+)(?: bui|\))/i, /\b; (\w+) build\/hm\1/i, /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i, /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i], [[i, /_/g, " "], [r, he], [t, p]], [/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i], [[i, /_/g, " "], [r, he], [t, b]], [/; (\w+) bui.+ oppo/i, /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007)\b/i], [i, [r, "OPPO"], [t, p]], [/vivo (\w+)(?: bui|\))/i, /\b(v[12]\d{3}\w?[at])(?: bui|;)/i], [i, [r, "Vivo"], [t, p]], [/\b(rmx[12]\d{3})(?: bui|;|\))/i], [i, [r, "Realme"], [t, p]], [/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i, /\bmot(?:orola)?[- ](\w*)/i, /((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i], [i, [r, ge], [t, p]], [/\b(mz60\d|xoom[2 ]{0,2}) build\//i], [i, [r, ge], [t, b]], [/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i], [i, [r, _], [t, b]], [/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i, /\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i, /\blg-?([\d\w]+) bui/i], [i, [r, _], [t, p]], [/(ideatab[-\w ]+)/i, /lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i], [i, [r, "Lenovo"], [t, b]], [/(?:maemo|nokia).*(n900|lumia \d+)/i, /nokia[-_ ]?([-\w\.]*)/i], [[i, /_/g, " "], [r, "Nokia"], [t, p]], [/(pixel c)\b/i], [i, [r, D], [t, b]], [/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i], [i, [r, D], [t, p]], [/droid.+ ([c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i], [i, [r, se], [t, p]], [/sony tablet [ps]/i, /\b(?:sony)?sgp\w+(?: bui|\))/i], [[i, "Xperia Tablet"], [r, se], [t, b]], [/ (kb2005|in20[12]5|be20[12][59])\b/i, /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i], [i, [r, "OnePlus"], [t, p]], [/(alexa)webm/i, /(kf[a-z]{2}wi)( bui|\))/i, /(kf[a-z]+)( bui|\)).+silk\//i], [i, [r, B], [t, b]], [/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i], [[i, /(.+)/g, "Fire Phone $1"], [r, B], [t, p]], [/(playbook);[-\w\),; ]+(rim)/i], [i, r, [t, b]], [/\b((?:bb[a-f]|st[hv])100-\d)/i, /\(bb10; (\w+)/i], [i, [r, W], [t, p]], [/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i], [i, [r, G], [t, b]], [/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i], [i, [r, G], [t, p]], [/(nexus 9)/i], [i, [r, "HTC"], [t, b]], [/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i, /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i, /(alcatel|geeksphone|nexian|panasonic|sony)[-_ ]?([-\w]*)/i], [r, [i, /_/g, " "], [t, p]], [/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i], [i, [r, "Acer"], [t, b]], [/droid.+; (m[1-5] note) bui/i, /\bmz-([-\w]{2,})/i], [i, [r, "Meizu"], [t, p]], [/\b(sh-?[altvz]?\d\d[a-ekm]?)/i], [i, [r, "Sharp"], [t, p]], [/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i, /(hp) ([\w ]+\w)/i, /(asus)-?(\w+)/i, /(microsoft); (lumia[\w ]+)/i, /(lenovo)[-_ ]?([-\w]+)/i, /(jolla)/i, /(oppo) ?([\w ]+) bui/i], [r, i, [t, p]], [/(archos) (gamepad2?)/i, /(hp).+(touchpad(?!.+tablet)|tablet)/i, /(kindle)\/([\w\.]+)/i, /(nook)[\w ]+build\/(\w+)/i, /(dell) (strea[kpr\d ]*[\dko])/i, /(le[- ]+pan)[- ]+(\w{1,9}) bui/i, /(trinity)[- ]*(t\d{3}) bui/i, /(gigaset)[- ]+(q\w{1,9}) bui/i, /(vodafone) ([\w ]+)(?:\)| bui)/i], [r, i, [t, b]], [/(surface duo)/i], [i, [r, O], [t, b]], [/droid [\d\.]+; (fp\du?)(?: b|\))/i], [i, [r, "Fairphone"], [t, p]], [/(u304aa)/i], [i, [r, "AT&T"], [t, p]], [/\bsie-(\w*)/i], [i, [r, "Siemens"], [t, p]], [/\b(rct\w+) b/i], [i, [r, "RCA"], [t, b]], [/\b(venue[\d ]{2,7}) b/i], [i, [r, "Dell"], [t, b]], [/\b(q(?:mv|ta)\w+) b/i], [i, [r, "Verizon"], [t, b]], [/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i], [i, [r, "Barnes & Noble"], [t, b]], [/\b(tm\d{3}\w+) b/i], [i, [r, "NuVision"], [t, b]], [/\b(k88) b/i], [i, [r, "ZTE"], [t, b]], [/\b(nx\d{3}j) b/i], [i, [r, "ZTE"], [t, p]], [/\b(gen\d{3}) b.+49h/i], [i, [r, "Swiss"], [t, p]], [/\b(zur\d{3}) b/i], [i, [r, "Swiss"], [t, b]], [/\b((zeki)?tb.*\b) b/i], [i, [r, "Zeki"], [t, b]], [/\b([yr]\d{2}) b/i, /\b(dragon[- ]+touch |dt)(\w{5}) b/i], [[r, "Dragon Touch"], i, [t, b]], [/\b(ns-?\w{0,9}) b/i], [i, [r, "Insignia"], [t, b]], [/\b((nxa|next)-?\w{0,9}) b/i], [i, [r, "NextBook"], [t, b]], [/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i], [[r, "Voice"], i, [t, p]], [/\b(lvtel\-)?(v1[12]) b/i], [[r, "LvTel"], i, [t, p]], [/\b(ph-1) /i], [i, [r, "Essential"], [t, p]], [/\b(v(100md|700na|7011|917g).*\b) b/i], [i, [r, "Envizen"], [t, b]], [/\b(trio[-\w\. ]+) b/i], [i, [r, "MachSpeed"], [t, b]], [/\btu_(1491) b/i], [i, [r, "Rotor"], [t, b]], [/(shield[\w ]+) b/i], [i, [r, "Nvidia"], [t, b]], [/(sprint) (\w+)/i], [r, i, [t, p]], [/(kin\.[onetw]{3})/i], [[i, /\./g, " "], [r, O], [t, p]], [/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i], [i, [r, le], [t, b]], [/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i], [i, [r, le], [t, p]], [/(ouya)/i, /(nintendo) ([wids3utch]+)/i], [r, i, [t, x]], [/droid.+; (shield) bui/i], [i, [r, "Nvidia"], [t, x]], [/(playstation [345portablevi]+)/i], [i, [r, se], [t, x]], [/\b(xbox(?: one)?(?!; xbox))[\); ]/i], [i, [r, O], [t, x]], [/smart-tv.+(samsung)/i], [r, [t, A]], [/hbbtv.+maple;(\d+)/i], [[i, /^/, "SmartTV"], [r, ae], [t, A]], [/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i], [[r, _], [t, A]], [/(apple) ?tv/i], [r, [i, "Apple TV"], [t, A]], [/crkey/i], [[i, "Chromecast"], [r, D], [t, A]], [/droid.+aft(\w)( bui|\))/i], [i, [r, B], [t, A]], [/\(dtv[\);].+(aquos)/i], [i, [r, "Sharp"], [t, A]], [/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i, /hbbtv\/\d+\.\d+\.\d+ +\([\w ]*; *(\w[^;]*);([^;]*)/i], [[r, ue], [i, ue], [t, A]], [/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i], [[t, A]], [/((pebble))app/i], [r, i, [t, L]], [/droid.+; (glass) \d/i], [i, [r, D], [t, L]], [/droid.+; (wt63?0{2,3})\)/i], [i, [r, le], [t, L]], [/(quest( 2)?)/i], [i, [r, ve], [t, L]], [/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i], [r, [t, k]], [/droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i], [i, [t, p]], [/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i], [i, [t, b]], [/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i], [[t, b]], [/(phone|mobile(?:[;\/]| safari)|pda(?=.+windows ce))/i], [[t, p]], [/(android[-\w\. ]{0,9});.+buil/i], [i, [r, "Generic"]]],
engine: [[/windows.+ edge\/([\w\.]+)/i], [c, [n, "EdgeHTML"]], [/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i], [c, [n, "Blink"]], [/(presto)\/([\w\.]+)/i, /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i, /ekioh(flow)\/([\w\.]+)/i, /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i, /(icab)[\/ ]([23]\.[\d\.]+)/i], [n, c], [/rv\:([\w\.]{1,9})\b.+(gecko)/i], [c, n]],
os: [[/microsoft (windows) (vista|xp)/i], [n, c], [/(windows) nt 6\.2; (arm)/i, /(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i, /(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i], [n, [c, ce, Se]], [/(win(?=3|9|n)|win 9x )([nt\d\.]+)/i], [[n, "Windows"], [c, ce, Se]], [/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i, /cfnetwork\/.+darwin/i], [[c, /_/g, "."], [n, "iOS"]], [/(mac os x) ?([\w\. ]*)/i, /(macintosh|mac_powerpc\b)(?!.+haiku)/i], [[n, "Mac OS"], [c, /_/g, "."]], [/droid ([\w\.]+)\b.+(android[- ]x86)/i], [c, n], [/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i, /(blackberry)\w*\/([\w\.]*)/i, /(tizen|kaios)[\/ ]([\w\.]+)/i, /\((series40);/i], [n, c], [/\(bb(10);/i], [c, [n, W]], [/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i], [c, [n, "Symbian"]], [/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i], [c, [n, "Firefox OS"]], [/web0s;.+rt(tv)/i, /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i], [c, [n, "webOS"]], [/crkey\/([\d\.]+)/i], [c, [n, "Chromecast"]], [/(cros) [\w]+ ([\w\.]+\w)/i], [[n, "Chromium OS"], c], [/(nintendo|playstation) ([wids345portablevuch]+)/i, /(xbox); +xbox ([^\);]+)/i, /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i, /(mint)[\/\(\) ]?(\w*)/i, /(mageia|vectorlinux)[; ]/i, /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i, /(hurd|linux) ?([\w\.]*)/i, /(gnu) ?([\w\.]*)/i, /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i, /(haiku) (\w+)/i], [n, c], [/(sunos) ?([\w\.\d]*)/i], [[n, "Solaris"], c], [/((?:open)?solaris)[-\/ ]?([\w\.]*)/i, /(aix) ((\d)(?=\.|\)| )[\w\.])*/i, /\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i, /(unix) ?([\w\.]*)/i], [n, c]]
}
, j = function(M, P) {
if (typeof M === g && (P = M,
M = d),
!(this instanceof j))
return new j(M,P).getResult();
var T = M || (typeof u !== m && u.navigator && u.navigator.userAgent ? u.navigator.userAgent : "")
, U = P ? function(v, S) {
var q = {};
for (var E in v)
S[E] && S[E].length % 2 == 0 ? q[E] = S[E].concat(v[E]) : q[E] = v[E];
return q
}(xe, P) : xe;
return this.getBrowser = function() {
var v, S = {};
return S.name = d,
S.version = d,
X.call(S, T, U.browser),
S.major = typeof (v = S.version) === h ? v.replace(/[^\d\.]/g, "").split(".")[0] : d,
S
}
,
this.getCPU = function() {
var v = {};
return v.architecture = d,
X.call(v, T, U.cpu),
v
}
,
this.getDevice = function() {
var v = {};
return v.vendor = d,
v.model = d,
v.type = d,
X.call(v, T, U.device),
v
}
,
this.getEngine = function() {
var v = {};
return v.name = d,
v.version = d,
X.call(v, T, U.engine),
v
}
,
this.getOS = function() {
var v = {};
return v.name = d,
v.version = d,
X.call(v, T, U.os),
v
}
,
this.getResult = function() {
return {
ua: this.getUA(),
browser: this.getBrowser(),
engine: this.getEngine(),
os: this.getOS(),
device: this.getDevice(),
cpu: this.getCPU()
}
}
,
this.getUA = function() {
return T
}
,
this.setUA = function(v) {
return T = typeof v === h && v.length > 255 ? ue(v, 255) : v,
this
}
,
this.setUA(T),
this
};
j.VERSION = "0.7.30",
j.BROWSER = $([n, c, "major"]),
j.CPU = $([C]),
j.DEVICE = $([i, r, t, x, p, A, b, L, k]),
j.ENGINE = j.OS = $([n, c]),
typeof l !== m ? (typeof a !== m && a.exports && (l = a.exports = j),
l.UAParser = j) : s(5) ? (o = (function() {
return j
}
).call(l, s, l, a)) === d || (a.exports = o) : typeof u !== m && (u.UAParser = j);
var K = typeof u !== m && (u.jQuery || u.Zepto);
if (K && !K.ua) {
var Z = new j;
K.ua = Z.getResult(),
K.ua.get = function() {
return Z.getUA()
}
,
K.ua.set = function(M) {
Z.setUA(M);
var P = Z.getResult();
for (var T in P)
K.ua[T] = P[T]
}
}
}
)(typeof window == "object" ? window : this)
}
, function(a, l) {
(function(s) {
a.exports = s
}
).call(this, {})
}
, function(a, l) {
a.exports = function() {
var s = ["monospace", "sans-serif", "serif"]
, o = document.getElementsByTagName("body")[0]
, u = document.createElement("span");
u.style.fontSize = "72px",
u.innerHTML = "mmmmmmmmmmlli";
var d = {}
, w = {};
for (var m in s)
u.style.fontFamily = s[m],
o.appendChild(u),
d[s[m]] = u.offsetWidth,
w[s[m]] = u.offsetHeight,
o.removeChild(u);
this.detect = function(g) {
var h = !1;
for (var i in s) {
u.style.fontFamily = g + "," + s[i],
o.appendChild(u);
var n = u.offsetWidth != d[s[i]] || u.offsetHeight != w[s[i]];
o.removeChild(u),
h = h || n
}
return h
}
}
}
])
// 分割线 -------------------------------------------------------------------------------
// 参数2: X-Fingerprint 生成代码 ---------------------------------------------------------
function $t() {
let t = new uo.ClientJS().getFingerprint().toString()
return t
}
// 参数3: X-Auth-Hash 生成代码 -----------------------------------------------------------
function go(r, o) {
return new ft(ho,o).finalize(r)
}
// 封装je()函数 生成代码 ------------------------------------------------------------------
function je(e, t, r) {
const o = Math.floor(Date.now() / 6e4)
, s = $t()
, l = r ? JSON.stringify(r) : ""
, u = `${e}|${t}|${o}|${s}|${l}`;
return {
"X-Auth-Hash": go(u, 'x').toString(),
"x-fingerprint": s,
"X-Timestamp": o.toString()
}
}
console.log(je('POST', '/stats/visit'))