Files
jd_token_server/CipherStash-xToken.js
danial d2ae8accbd feat(proxy): 为GetXToken函数添加超时和代理支持
- 在CipherStash-xToken.js中为GetXToken函数的请求配置添加timeout: 5000
- 在CipherStash-xToken.js中为GetXToken函数的请求配置添加agent代理选项
- 在api.js中优化日志输出,增加代理信息显示
- 移除了node_modules/.package-lock.json文件的变更记录(无实际代码改动)
2025-11-03 19:36:22 +08:00

749 lines
52 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import fetch from 'node-fetch';
import { HttpsProxyAgent } from 'https-proxy-agent';
/**
* x-api-eid-token 算法type11
*
* @param {*} str ua参数
* @returns
*/
export async function GetXToken(str, proxy) {
var HASH = function () {
function l(b, f) {
b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535];
f = [f[0] >>> 16, f[0] & 65535, f[1] >>> 16, f[1] & 65535];
var c = [0, 0, 0, 0];
c[3] += b[3] + f[3];
c[2] += c[3] >>> 16;
c[3] &= 65535;
c[2] += b[2] + f[2];
c[1] += c[2] >>> 16;
c[2] &= 65535;
c[1] += b[1] + f[1];
c[0] += c[1] >>> 16;
c[1] &= 65535;
c[0] += b[0] + f[0];
c[0] &= 65535;
return [c[0] << 16 | c[1], c[2] << 16 | c[3]]
}
function k(b, f) {
b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535];
f = [f[0] >>> 16, f[0] & 65535, f[1] >>> 16, f[1] & 65535];
var c = [0, 0, 0, 0];
c[3] += b[3] * f[3];
c[2] += c[3] >>> 16;
c[3] &= 65535;
c[2] += b[2] * f[3];
c[1] += c[2] >>> 16;
c[2] &= 65535;
c[2] += b[3] * f[2];
c[1] += c[2] >>> 16;
c[2] &= 65535;
c[1] += b[1] * f[3];
c[0] += c[1] >>> 16;
c[1] &= 65535;
c[1] += b[2] * f[2];
c[0] += c[1] >>> 16;
c[1] &= 65535;
c[1] += b[3] * f[1];
c[0] += c[1] >>> 16;
c[1] &= 65535;
c[0] += b[0] * f[3] + b[1] * f[2] + b[2] * f[1] + b[3] * f[0];
c[0] &= 65535;
return [c[0] << 16 | c[1], c[2] << 16 | c[3]]
}
function e(b, f) {
f %= 64;
if (32 === f)
return [b[1], b[0]];
if (32 > f)
return [b[0] << f | b[1] >>> 32 - f, b[1] << f | b[0] >>> 32 - f];
f -= 32;
return [b[1] << f | b[0] >>> 32 - f, b[0] << f | b[1] >>> 32 - f]
}
function h(b, f) {
f %= 64;
return 0 === f ? b : 32 > f ? [b[0] << f | b[1] >>> 32 - f, b[1] << f] : [b[1] << f - 32, 0]
}
function d(b, f) {
return [b[0] ^ f[0], b[1] ^ f[1]]
}
function a(b) {
b = d(b, [0, b[0] >>> 1]);
b = k(b, [4283543511, 3981806797]);
b = d(b, [0, b[0] >>> 1]);
b = k(b, [3301882366, 444984403]);
return b = d(b, [0, b[0] >>> 1])
}
return {
hash128: function (b, f) {
b = b || "";
var c = f || 0;
f = b.length % 16;
var m = b.length - f
, n = [0, c];
c = [0, c];
for (var q, p, t = [2277735313, 289559509], u = [1291169091, 658871167], r = 0; r < m; r += 16)
q = [b.charCodeAt(r + 4) & 255 | (b.charCodeAt(r + 5) & 255) << 8 | (b.charCodeAt(r + 6) & 255) << 16 | (b.charCodeAt(r + 7) & 255) << 24, b.charCodeAt(r) & 255 | (b.charCodeAt(r + 1) & 255) << 8 | (b.charCodeAt(r + 2) & 255) << 16 | (b.charCodeAt(r + 3) & 255) << 24],
p = [b.charCodeAt(r + 12) & 255 | (b.charCodeAt(r + 13) & 255) << 8 | (b.charCodeAt(r + 14) & 255) << 16 | (b.charCodeAt(r + 15) & 255) << 24, b.charCodeAt(r + 8) & 255 | (b.charCodeAt(r + 9) & 255) << 8 | (b.charCodeAt(r + 10) & 255) << 16 | (b.charCodeAt(r + 11) & 255) << 24],
q = k(q, t),
q = e(q, 31),
q = k(q, u),
n = d(n, q),
n = e(n, 27),
n = l(n, c),
n = l(k(n, [0, 5]), [0, 1390208809]),
p = k(p, u),
p = e(p, 33),
p = k(p, t),
c = d(c, p),
c = e(c, 31),
c = l(c, n),
c = l(k(c, [0, 5]), [0, 944331445]);
q = [0, 0];
p = [0, 0];
switch (f) {
case 15:
p = d(p, h([0, b.charCodeAt(r + 14)], 48));
case 14:
p = d(p, h([0, b.charCodeAt(r + 13)], 40));
case 13:
p = d(p, h([0, b.charCodeAt(r + 12)], 32));
case 12:
p = d(p, h([0, b.charCodeAt(r + 11)], 24));
case 11:
p = d(p, h([0, b.charCodeAt(r + 10)], 16));
case 10:
p = d(p, h([0, b.charCodeAt(r + 9)], 8));
case 9:
p = d(p, [0, b.charCodeAt(r + 8)]),
p = k(p, u),
p = e(p, 33),
p = k(p, t),
c = d(c, p);
case 8:
q = d(q, h([0, b.charCodeAt(r + 7)], 56));
case 7:
q = d(q, h([0, b.charCodeAt(r + 6)], 48));
case 6:
q = d(q, h([0, b.charCodeAt(r + 5)], 40));
case 5:
q = d(q, h([0, b.charCodeAt(r + 4)], 32));
case 4:
q = d(q, h([0, b.charCodeAt(r + 3)], 24));
case 3:
q = d(q, h([0, b.charCodeAt(r + 2)], 16));
case 2:
q = d(q, h([0, b.charCodeAt(r + 1)], 8));
case 1:
q = d(q, [0, b.charCodeAt(r)]),
q = k(q, t),
q = e(q, 31),
q = k(q, u),
n = d(n, q)
}
n = d(n, [0, b.length]);
c = d(c, [0, b.length]);
n = l(n, c);
c = l(c, n);
n = a(n);
c = a(c);
n = l(n, c);
c = l(c, n);
return ("00000000" + (n[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (n[1] >>> 0).toString(16)).slice(-8) + ("00000000" + (c[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (c[1] >>> 0).toString(16)).slice(-8)
}
}
}();
function md5(string) {
// 辅助函数
function rotateLeft(lValue, iShiftBits) {
return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
}
function addUnsigned(lX, lY) {
var lX4, lY4, lX8, lY8, lResult;
lX8 = (lX & 0x80000000);
lY8 = (lY & 0x80000000);
lX4 = (lX & 0x40000000);
lY4 = (lY & 0x40000000);
lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
if (lX4 & lY4) {
return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
}
if (lX4 | lY4) {
if (lResult & 0x40000000) {
return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
} else {
return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
}
} else {
return (lResult ^ lX8 ^ lY8);
}
}
function F(x, y, z) {
return (x & y) | ((~x) & z);
}
function G(x, y, z) {
return (x & z) | (y & (~z));
}
function H(x, y, z) {
return (x ^ y ^ z);
}
function I(x, y, z) {
return (y ^ (x | (~z)));
}
function FF(a, b, c, d, x, s, ac) {
a = addUnsigned(a, addUnsigned(addUnsigned(F(b, c, d), x), ac));
return addUnsigned(rotateLeft(a, s), b);
}
function GG(a, b, c, d, x, s, ac) {
a = addUnsigned(a, addUnsigned(addUnsigned(G(b, c, d), x), ac));
return addUnsigned(rotateLeft(a, s), b);
}
function HH(a, b, c, d, x, s, ac) {
a = addUnsigned(a, addUnsigned(addUnsigned(H(b, c, d), x), ac));
return addUnsigned(rotateLeft(a, s), b);
}
function II(a, b, c, d, x, s, ac) {
a = addUnsigned(a, addUnsigned(addUnsigned(I(b, c, d), x), ac));
return addUnsigned(rotateLeft(a, s), b);
}
function convertToWordArray(string) {
var lWordCount;
var lMessageLength = string.length;
var lNumberOfWords_temp1 = lMessageLength + 8;
var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;
var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;
var lWordArray = Array(lNumberOfWords - 1);
var lBytePosition = 0;
var lByteCount = 0;
while (lByteCount < lMessageLength) {
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
lBytePosition = (lByteCount % 4) * 8;
lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
lByteCount++;
}
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
lBytePosition = (lByteCount % 4) * 8;
lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
return lWordArray;
}
function wordToHex(lValue) {
var WordToHexValue = "", WordToHexValue_temp = "", lByte, lCount;
for (lCount = 0; lCount <= 3; lCount++) {
lByte = (lValue >>> (lCount * 8)) & 255;
WordToHexValue_temp = "0" + lByte.toString(16);
WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2);
}
return WordToHexValue;
}
function utf8Encode(string) {
string = string.replace(/\r\n/g, "\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
} else if ((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
} else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
}
// 初始化变量
var x = Array();
var k, AA, BB, CC, DD, a, b, c, d;
var S11 = 7, S12 = 12, S13 = 17, S14 = 22;
var S21 = 5, S22 = 9, S23 = 14, S24 = 20;
var S31 = 4, S32 = 11, S33 = 16, S34 = 23;
var S41 = 6, S42 = 10, S43 = 15, S44 = 21;
string = utf8Encode(string);
x = convertToWordArray(string);
a = 0x67452301;
b = 0xEFCDAB89;
c = 0x98BADCFE;
d = 0x10325476;
for (k = 0; k < x.length; k += 16) {
AA = a;
BB = b;
CC = c;
DD = d;
a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);
d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);
d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);
d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);
d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);
d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);
d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);
c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);
d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);
d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);
d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);
d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);
d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);
d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);
d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);
d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);
d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);
b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);
d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
a = addUnsigned(a, AA);
b = addUnsigned(b, BB);
c = addUnsigned(c, CC);
d = addUnsigned(d, DD);
}
var temp = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);
return temp.toLowerCase();
}
function STrEnc(l) {
l = JSON.stringify(l);
l = encodeURIComponent(l);
var k = ""
, e = 0;
do {
var h = l.charCodeAt(e++);
var d = l.charCodeAt(e++);
var a = l.charCodeAt(e++);
var b = h >> 2;
h = (h & 3) << 4 | d >> 4;
var f = (d & 15) << 2 | a >> 6;
var c = a & 63;
isNaN(d) ? f = c = 64 : isNaN(a) && (c = 64);
k = k + "23IL<N01c7KvwZO56RSTAfghiFyzWJqVabGH4PQdopUrsCuX*xeBjkltDEmn89.-".charAt(b) + "23IL<N01c7KvwZO56RSTAfghiFyzWJqVabGH4PQdopUrsCuX*xeBjkltDEmn89.-".charAt(h) + "23IL<N01c7KvwZO56RSTAfghiFyzWJqVabGH4PQdopUrsCuX*xeBjkltDEmn89.-".charAt(f) + "23IL<N01c7KvwZO56RSTAfghiFyzWJqVabGH4PQdopUrsCuX*xeBjkltDEmn89.-".charAt(c)
} while (e < l.length);
return k + "/"
}
function getLastParameter(str) {
let parts = str.split('/'); // 将字符串按照 '/' 分割成数组
return parts[parts.length - 1]; // 获取最后一个部分
}
function splitAndJoin(str) {
const parts = str.split('/'); // 使用 / 进行拆分
const restPart = parts.slice(1).join('/'); // 拼接其余部分
return restPart;
}
function getXtokenObj(ua) {
ua = ua || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36";
let obj_d = {
"ts": {
"deviceTime": new Date().getTime(),
"deviceEndTime": (new Date().getTime() + 50)
},
"ca": {
"tdHash": "d292170ca009238e7f6c027ac97f13fa",
"contextName": "webgl,experimental-webgl",
"webglversion": "WebGL 1.0 (OpenGL ES 2.0 Chromium)",
"shadingLV": "WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium)",
"vendor": "WebKit",
"renderer": "WebKit WebGL",
"extensions": [
"ANGLE_instanced_arrays",
"EXT_blend_minmax",
"EXT_clip_control",
"EXT_color_buffer_half_float",
"EXT_depth_clamp",
"EXT_disjoint_timer_query",
"EXT_float_blend",
"EXT_frag_depth",
"EXT_polygon_offset_clamp",
"EXT_shader_texture_lod",
"EXT_texture_compression_bptc",
"EXT_texture_compression_rgtc",
"EXT_texture_filter_anisotropic",
"EXT_texture_mirror_clamp_to_edge",
"EXT_sRGB",
"KHR_parallel_shader_compile",
"OES_element_index_uint",
"OES_fbo_render_mipmap",
"OES_standard_derivatives",
"OES_texture_float",
"OES_texture_float_linear",
"OES_texture_half_float",
"OES_texture_half_float_linear",
"OES_vertex_array_object",
"WEBGL_blend_func_extended",
"WEBGL_color_buffer_float",
"WEBGL_compressed_texture_s3tc",
"WEBGL_compressed_texture_s3tc_srgb",
"WEBGL_debug_renderer_info",
"WEBGL_debug_shaders",
"WEBGL_depth_texture",
"WEBGL_draw_buffers",
"WEBGL_lose_context",
"WEBGL_multi_draw",
"WEBGL_polygon_mode"
],
"wuv": "Google Inc. (NVIDIA)",
"wur": "ANGLE (NVIDIA, NVIDIA GeForce RTX 3050 Laptop GPU (0x000025E2) Direct3D11 vs_5_0 ps_5_0, D3D11)"
},
"m": {
"compatMode": "CSS1Compat"
},
"n": {
"vendorSub": "",
"productSub": "20030107",
"vendor": "Google Inc.",
"maxTouchPoints": 0,
"pdfViewerEnabled": true,
"hardwareConcurrency": 12,
"cookieEnabled": true,
"appCodeName": "Mozilla",
"appName": "Netscape",
"appVersion": splitAndJoin(ua),
"platform": "Win32",
"product": "Gecko",
"userAgent": ua,
"language": "zh-CN",
"onLine": true,
"webdriver": false,
"javaEnabled": false,
"deprecatedRunAdAuctionEnforcesKAnonymity": false,
"deviceMemory": 8,
"enumerationOrder": [
"vendorSub",
"productSub",
"vendor",
"maxTouchPoints",
"scheduling",
"userActivation",
"geolocation",
"doNotTrack",
"connection",
"plugins",
"mimeTypes",
"pdfViewerEnabled",
"webkitTemporaryStorage",
"webkitPersistentStorage",
"windowControlsOverlay",
"hardwareConcurrency",
"cookieEnabled",
"appCodeName",
"appName",
"appVersion",
"platform",
"product",
"userAgent",
"language",
"languages",
"onLine",
"webdriver",
"getGamepads",
"javaEnabled",
"sendBeacon",
"vibrate",
"deprecatedRunAdAuctionEnforcesKAnonymity",
"protectedAudience",
"bluetooth",
"storageBuckets",
"clipboard",
"credentials",
"keyboard",
"managed",
"mediaDevices",
"storage",
"serviceWorker",
"virtualKeyboard",
"wakeLock",
"deviceMemory",
"userAgentData",
"cookieDeprecationLabel",
"login",
"ink",
"mediaCapabilities",
"devicePosture",
"hid",
"locks",
"gpu",
"mediaSession",
"permissions",
"presentation",
"serial",
"usb",
"xr",
"adAuctionComponents",
"runAdAuction",
"canLoadAdAuctionFencedFrame",
"canShare",
"share",
"clearAppBadge",
"getBattery",
"getUserMedia",
"requestMIDIAccess",
"requestMediaKeySystemAccess",
"setAppBadge",
"webkitGetUserMedia",
"clearOriginJoinedAdInterestGroups",
"createAuctionNonce",
"joinAdInterestGroup",
"leaveAdInterestGroup",
"updateAdInterestGroups",
"deprecatedReplaceInURN",
"deprecatedURNToURL",
"getInstalledRelatedApps",
"getInterestGroupAdAuctionData",
"registerProtocolHandler",
"unregisterProtocolHandler"
]
},
"p": [
{
"name": "PDF Viewer"
},
{
"name": "Chrome PDF Viewer"
},
{
"name": "Chromium PDF Viewer"
},
{
"name": "Microsoft Edge PDF Viewer"
},
{
"name": "WebKit built-in PDF"
}
],
"w": {
"devicePixelRatio": 1.5,
"screenTop": 2,
"screenLeft": 1180
},
"s": {
"availHeight": 1019,
"availWidth": 1707,
"colorDepth": 24,
"height": 1067,
"width": 1707,
"pixelDepth": 24
},
"sc": {
"ActiveBorder": "rgb(0, 0, 0)",
"ActiveCaption": "rgb(0, 0, 0)",
"AppWorkspace": "rgb(255, 255, 255)",
"Background": "rgb(255, 255, 255)",
"ButtonFace": "rgb(240, 240, 240)",
"ButtonHighlight": "rgb(240, 240, 240)",
"ButtonShadow": "rgb(240, 240, 240)",
"ButtonText": "rgb(0, 0, 0)",
"CaptionText": "rgb(0, 0, 0)",
"GrayText": "rgb(109, 109, 109)",
"Highlight": "rgb(0, 120, 215)",
"HighlightText": "rgb(255, 255, 255)",
"InactiveBorder": "rgb(0, 0, 0)",
"InactiveCaption": "rgb(255, 255, 255)",
"InactiveCaptionText": "rgb(128, 128, 128)",
"InfoBackground": "rgb(255, 255, 255)",
"InfoText": "rgb(0, 0, 0)",
"Menu": "rgb(255, 255, 255)",
"MenuText": "rgb(0, 0, 0)",
"Scrollbar": "rgb(255, 255, 255)",
"ThreeDDarkShadow": "rgb(0, 0, 0)",
"ThreeDFace": "rgb(240, 240, 240)",
"ThreeDHighlight": "rgb(0, 0, 0)",
"ThreeDLightShadow": "rgb(0, 0, 0)",
"ThreeDShadow": "rgb(0, 0, 0)",
"Window": "rgb(255, 255, 255)",
"WindowFrame": "rgb(0, 0, 0)",
"WindowText": "rgb(0, 0, 0)"
},
"ss": {
"cookie": true,
"localStorage": true,
"sessionStorage": true,
"globalStorage": false,
"indexedDB": true
},
"tz": -480,
"lil": "",
"wil": "",
"wi": {
"ow": 518,
"oh": 1023,
"iw": 504,
"ih": 894,
"etn": "[object External]",
"nlc": 3,
"slc": 0
}
}
let dStr = STrEnc(obj_d);
let obj_fp = [
ua,
"zh-CN",
"applewebkit_chrome",
getLastParameter(ua),
"windows",
"NT",
Math.floor(Math.random() * 99) + 1,
"1067x1707",
Math.floor(Math.random() * 2001) - 1000,
"sessionStorageKey",
"localStorageKey",
"indexedDbKey",
"NA",
"Win32",
Math.floor(Math.random() * 99) + 1,
"NA",
"PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf;Chrome PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf;Chromium PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf;Microsoft Edge PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf;WebKit built-in PDF::Portable Document Format::application/pdf~pdf,text/pdf~pdf",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAACWCAYAAABkW7XSAAAQAElEQVR4AexdB3gc1bX+Z3a1WvUuWZJtSbZsywV3g7tlmZqAX0IxiQEbCMnLgzwS4JEXeOFlCeRBIIYQIIGEEGwChGpaQjGWC9gYjHuvktwtybZ62TLzzrm7s9pdrbpktTvfnpm5555b5r8z/55bZleF3CQCEgGJQC9BQBJWL2koWU2JgEQAkIQl7wKJgESg1yAgCavXNFXHKypzkAj0dgQkYfX2FpT1lwj0IwQkYfWjxpaXKhHo7QhIwurtLSjrLxEIhkAf1UnC6qMNKy9LItAXEZCE1RdbVV6TRKCPIiAJq482rLwsiUBfRKDbCEsH9B4rsm6ybbr5HuiLZNMZ19RthNUZlZd5SAQkAv0LAUlY/au95dVKBHo1ApKwenXzycp3HAGZQ29CQBJWb2otWVeJQD9HQBJWP78B5OVLBHoTApKwelNrybpKBPo5Ah0krH6Onrx8iYBE4LwiIAnrvMItC5MISAQ6goAkrI6gJ9NKBCQC5xUBSVjnFe5eXZisvESg2xGQhNXtTSArIBGQCLQWAUlYrUVK2kkEJALdjoAkrG5vAlkBiUDPQ6Cn1kgSVk9tGVkviYBEoBECkrAaQSIVEgGJQE9FQBJWT20ZWS+JgESgEQKSsBpB0nGFzEEiIBHoGgQkYXUNrjJXiYBEoAsQkITVBaDKLFtGoAxRWIex+BqjWjaWFhIBDwKSsDxAyMP5QWAbsvEoFuH3uB4rcKGQE0hEr91kxc8rApKwzivcsrBBKEYInIDJBKSlwTFuEtbP/A9oFqsERyLQIgKSsFqEqO8YbMYIfICZHRLuxjlBZNNOWOJRgdGz0oEZM4Dhw4G4OOwxD8PxyZe3M0eZrD8hIAmrH7V2EQZgE3I6JIcwEDqUDqE2sXozrCaXNw8XVOxIuAhISPDq5IlEIBgC3UtYwWokdV2LwOjRwOTJ7Zaoy2chZNFCIJ28pHbWNHHnOmSbTvil3luXgnNjpvnpZEAiEIiAJKxARPp6ODwciIxsv8TEAIk0SG42txsp1V6H8WUboWiaN48KhwWHEsYCFotXJ08kAoEI9ErCqkQ4nsT3YMNtfvIHLEA5ItBZW1Pl7MPgzirivOYzBXuwILsIC0afarXMGHTOr46J4Q6gvh4oKvLq7TSM/hK+jcD2aC78912DoNfVwXf7sGQEbIm/QHPpjLjlmAO59T8EeiVhNdVMZxEtxmeaiu/v+oEoxqj4coxKqmq1DI6p9YNNaffwlV82QC3lW1YG6HpDBM8cxsc3hOWZRCAAgd5LWDQljpkzgdxcIDcXyM0FcnPxde4dODl2bsBldiAYrJyf/ASYP78DmXZj0r17gW3bWi/79gEVFd4KR4c6gaoqb9h7kpQETKMxKGoDbodWCWMbyIDc3WxNHtdfD9xxh7d4edI/EOi9hNVE+9TBgi8S5sl1PU3gg5UrgeXLWy0lK74Bqqu9uYXy7J6vV+SNkScSga5HoM8RFkO22zUIB8ZfxadSgiCgQ0ENrNDQtubn3mCIiTKsqaFd058QVcOPJh2FLfdgpwnnx/k2XaqM6UEIdFlV2nbHdlk1OjdjXTVhbeRM1CS2f+q9c2vUs3KrQhiex3fwa9wKHsRubgC7EuGA1QrezEREVrMLsNs5KEUicN4R6JOExSged8Vj92jpZTEWgaKTh6VbwwAedwoPD4z2C3MX21CYVR3Cy3HSOJahbOrocgFr1gA2G2CzATYbYLMBNhtgswE2G2CzATYbYLMBNhtgswE2G2CzATYbYLMBNhtgswFLlgCFhYDPUoimipb6votAnyGs9Kg6xFkdDS1Fg7lrlIk4O3xyg06eCQSqEIba2BRgxAjgwgthveG6oAPYGlQ4YAY8a64sJg1W1eme4RM5yZ1E4PwioJ7f4rqutMRwO6YNKvMroFIPw9dpF/vpekHg/FSRCB0sVFpUKHlDdAz8OGESY11Q3bcJE5ZJd8kuYSBQMnzeEHDfieetuK4rqMZhwghrMZItDTNa/EBu1HJQNF6+WOuLfDV5WI7QCDA+MLYg3TwXeVj2iFgYhBVh0cjfIsIKtqzByEceJQJdiECfISyHpiLMUYWZ5l1+cLlUM9bF58JpoTEbv5ieFXCSN1OMOOxGllcKkYoahHZ6RTUofnkmhdcH7eZxnapDY2AQlqoAiq4BQcgNPpuT2mLtkQR8UJqDjv46hJF+LSbAqfMUpU9B8rTfIXDeCStt+ppn02asqRgx9SPcP+SuzgU8JATZJ79GurXSL98DrnTsnXKtn66pANdp+NSPwfJgZtcuTKxHCNbjAjyD6/AwbsEfcQ3ewDyv8Osuj+EmPIRb8S5mowTk7aDj21kQCfE7e54uYVM51sECu4lmCD12URYHQlz1QAvLGnTKcG9pBDZVpmMTcjpF9iIDeh9c/0VQyU8bEDivhMVkBQW3U/2iqkzhWJr6nU4jrfI6M+wwI7zsNKZp20B3NxXj/uj0wK21XITq9Gy3ook9kxXXqdoUBpZXB1yJz2MnNWHdfjV7Lvy7UkxGn+IilIIIhLOLigIGDwZychokOxuupBRsNY3Es7gWL2B+h4nLBWp2wgQkPOsXaXEBZWVcAz9xwAynyQLDwzJRMmHQmpk6yhspKUAHfhmiUVrOj/MVlZC7/oiAcQu269rnFr00Oq9oWSGJHkTq5hUt/amRcV7R0vdyXiu6PefVIvjKV6sm4N8/esgwa/L4zq2X4vIDL2Je0TL812u/wPJbLsHxrAFee42+1o0v4OFH1iEzvNwbxyfFWgw2D72CTxsJ5z1/53P45OZZjeL2h2c20nVEwV7Sc/gu+OeBBXHwu3Njx0L8oN3EicCQIcCAASicMxl7rpiBumEU5p+E4deQpkzBscGT8UfTAmzAGOhQ2lUVsbYqtKGr2RQHVCMMjhDqSnsM4sMcjV58brICnCaM0kZGgn8dojR7ELbnTcK2iyc3KYUTR2Dn3InYP22MSMPp/ITy2z82CzunDMfZpJhGRf/plwvF/cH3iK9w226cc0Eje1/FAy/8DAvXP4HC4em+au95S/Few2464Wctr2hpGR+7ugpzC19ekle0zPeZL2QuaK7c3CPLJucdfiWDbS49uCx5XtGyn+cVLf3FvKJl/5tX+PJ01rP42nE4UNRARfvC+vv5GYsUXwH0T3TgwblHll1m5OkoNaHg56nYuzDDK0d/m4yTg5JaJK1PrpuFjIPHsTJjERY++4GRpffo0lU4zfQQ0gNi2bsDM7Ut/o+zouBLdRyKc6Z50wSe2JWQQBUcQXSNjFqp2I9B+DO+g1LEAtHRwLhxwAX0IDFpUXcWVEd4tsx9xzByyyFYa+1uDcdFRABZWdAvmoqPBy/APzEdGntLbotW7+uoq2eUFRaiIdJEZQQZSNdAhMgvJHPZlLtYNKppdNb8h722G8eewD3TCrzySNZmLDV9jGXKR0IWfq8aLEaYj08nfIFb5p/DJXdZsfD6Km9aIx/WcRzb3BB7KGglIipr8Oiix8V9wvcKy7gNe/HAC3eBv5iCJpLKViMwl8hKUfS7dV15gp93HRp9u4DuFPWfTZHWvKKlixUdVykm16/nFr28wBmCh0063szPWPyoS3O9D0X76bwjL/+a5DuqhoUwO/9r7uGXRyDI1kmE1Thn6ob9UWg15VJx5J1KzxcffaR6Wxjy3tggSKupb0H+1quMiUDy8TPw3XzP650Kal1mGN2XzH2rMSy81NcE/DrK+tRLEez3w3WC3M/YEwjRHZ6zjh2OIwnvYC64m4VBg9xEFRcHKAp4GxBZj28PK8HtU46IB/VnUwtx3aiTGJ1UCYV8KbYRwvY8/kTE9c0FRFrhF0ND65vRCZPAAZ61VZw3Z+nbhRbl0K4EVD8uSxgAURYnfN8rJJMmP+EhLvByiaYkjLiXJTB+yNlihMSYcPyizEbpK0YkiTi2sZpbJk6jcg/d9nvxZffWbZeD7yVDL49tR0BVtDy6Z7auyrzpHk69KuPmXRR+khyUWBVKozVElxYuy9KgXEK2Z6DAqUJfYNbxyKeZiwpIh9VZt2yl4x4an5yq69p4siE+VGtVk3496Rt91EaaLlTQo6kFy74wK7gbzrZMYne+8wBOpydi/SUTMZ+6bgdH0TgPR3qkLsyCXZOH4bXbr8QdHz8CcjNx9Yf3Ii3jJExE7WzGNnsmDMVLF12JW9e+L7qXvt+4muehZNv4yyswYtkRZD9zDOGJdaiIixTdkG1Tc8Dyz4VzcWCM8G7ZPKg8QF0MrgfLtZ8+hUWLH8ZbN1wGXqxZOeEC7Jw+GicyksHdrMXjjmP+NfU4+JtZOHLFCPGgblkwGXvvm4lLZtfgwt8ko/TmUaJsLl/ItJHYnzsJm0Zdjc1xUxvVga/N6EJzHe599b8Fdu/cfCk2zBqPTbljUTogDjFWJ0KJRncNTRTx3K1izBnnp++/CauvmoptVNaOqSNwfPwgvHnLxQJfztPoQjEJVmsW7J6Yjf0XZEKsiAeR28aNaOpF6y2n94ElMH7k//4OBXs24lNTCU5sXudNz+dvJ9SIOLYR6VasaHTdTSkue/NzVEWHY/PM0U2ZtEr/4HN3Nrp+34Q8vMHYsDD+3A5GPMf56pg8GUMWPjfs+DiXeiZ51MWbSx4Nh1ko/B5JGcdxeG6RMSSz9D0Os+jAVXkN3TW/YRmO5/x84qlb15CW8+X88wqXviqO3nwabFZmLJ7Awnm1RlyKPpsY6BwRzWxdR7IO/ZhBVkZ6XVejKM4FKCn03TwB0J0UHpnn6ULCZ6N8fEKdeKrq+qMiO1X/VBx5Z9LpLuaTBokYV4t9F2aB3fYpa3Y0RHjOWPeHqx9CyvFSTF+xGe+P+TGydx/xxLoPR7LTYHa48P3nP8KzCx8XXQKO+ei6dIyLPAkmq4Ic8mpImbOtALn378CsdYV46e6rwQ8nqb1eCpNV0sIyVG+z4uBPBiKyqgZHh6YhsqJG1JHrGUG6FdfM5GRBhcmKSYW7JisybgbecaEgbiASw8lj8Rk4Thvgwg8nHkVWXC21E1CvOVFWehL8iwq7C7djy7nDsO/bgyv+8SGePvwe7j79hahD0smz5EXriC8pByIjkT9iIYoTGiYU+Jr42qas2S66RlyPfTT2Yw+1wOkyIfG4CyFOHVXktfJSBfaudo0fKq5l8uc7xJF3BSnpGL+1QJQZUV+PnTNHwu6we/NkAvjrz6+Dizw8u27GqM0HMXxHIXiBqZU9IJ5N3LYNwX7O5ljlabAEi0v8eDW2hDuwIZG+4jzp+Zx1HOdNs38/V7NVMugQ4UqWp9MSad++D39pDjx8Ulz/Xy+5T2TyyFM/FkcmHCYe7glw3EoaumD8/3zf97xd0ft++hy1WRkMT4+xYwzvuu9vyNx/XORj7FYNXvQJXX0BezSGjsKDAcWq6noOaFOhXEwPdyzp8ylIH4WndLN16qblZywitf+wDJHQe4qi/UBXcDnH85ESzWE9HRs+Cr6lK8r1woa6foByI5eikAAAEABJREFU2Tyf8Wj4bExyOvAgFVawMmPxUz5R4pR0SzUoS3WX6R5NU3+jQxnARHRx0dKZuatsZiZdKLpTUZVauhazFm690qXgHWimX+QPuaFIZOKzU33OO3CqzM/zsvEyYu1lRJDI0umiGXgjY3OMZs167KTfoPug/y5G+PZasNtu2LX1yA/J0C2FqHOaRNIpRHypR0tQVl+OqVUb4EiywmU2gR90HhMqdCXjsr+cEOTHtpzIpZhgza6HQVbHliSzGhGWWhob84cp9/2vcPuDr4j4wN1GGtxlsrriH2vBefOvkw568xgG1iuIDY0EPKvGI+OAOTNqEUZjSKirQ/WeHXj/zHYc2L4e+PxznDp7AoerTqPm04+Ap5+G8s7bmBV5CJl5oShNiUPi6XNIPHVOFF8TGoMNo6+HRsTBivdvmicI9gePvclBUQ+uDwd02kWX1SC8ug614aEwJ5phcdVh+wUDwZhxnckEmkPBgK3FiD1bxUEk1lchMsSBKZ+S10QaxjKSSJxO3R/uOnquTSh4rMtOY2Mi0LbdFW+sEQ82j1saKbdMHyV0HGfozveRvzQNTDOJYK594WMxlMFeFHtuTD6s4ziuG9vGl5RhC9Wdw6zn+LNJsWCi4x4Dt4uBOdv4iqar+dReWUwKLDoUumuwSQfy2M59VMo06J9xmEXXlbe5m8bnCiCIjAlOEAOUceTN/NV4JvnIYbKdw/nT0fis4TgREA6HXqfpKpGl0Hh3nEbR9dcBUYcb0cS2evCib5h8VmfduEFR6PvN5FxPJLbSNGTIXxWon1E9/xO6Fq1q6iurkxdUGfYIsvk/iUEMWqfSGw2652csjvVeNNybVq+UGIPuPNiu1SioLwpB4ROpboMO7KnxsDZvAu75x33CZT84KkPklrx9DYaMqhHnoT4D2Ostk1CeMUroeee0mBE9vQaKWYf9VAirhGQUnUBUeQ3K4yLBRMQzVMXpCSIu2O7oUPe1pJwopU6RCZuQg5haJwbZzVAVN9wKdVPHX6wgKpJqzT+O9+67KP/qCzh1LViWbt3Ondh86BsUfz8BWZZKpBUVu/W8p7tgtykbpRe5hwu5flHl1eAHhKNZuD6WejtqHaGoCYlCDJENk3hNWjSODhmA06lxGL9uD5sK0TWq3+lqwDPWFUK4KDRSqje1aJTJiurBifmL4/VdqXiyYCqexPeDyo7lGWAJFr98/2yUPhWGdatG466hd+OBpB/jX9unCh3HGWk+QeOuMJffVRKIqa/XZnhuho7rwPgPpd4AtweHWa5+8VP6AtkOvj+zdxfhPx5+ldXBRZCFUseEw0JG5IVgF4h45ha9NJoe9MGAvs0gKDqvI4/sCIJtijqQ4mPp3rvb17ngcKA5kdjBQF2wMNXpUdbrCv69oQ6sCS55R16aTbd+ka4ot4LS0N2fA11Zouv6T3Qdr+qqNi54ygat2nDa9WdKqF5nlFJNg+2lb8XCku5E2BIHPolvuotlpGnqyOMmTCZnU+Lx70+8K1x2vhmE/ZkzSIg8iMgEgkco3LuzWiS+zJovAnvDh4AARNWmMCGxcyvBXVXQll5/GkP2HBHdoiF7jpIGWH/xRDz89O3e7qRQenZ8w1rqHSJ0EgkoQBoweDDMphCh492I9DokD1bgdJLd2rUA/wooRzQj3OX43S+vQ9HhDbht94dcXT/rOj0EuwdMQ0t/laVpKtibTDpxFpY6O+oyY1A4OBGn7ZWY/PkOb566E1BCYmEQVpgV0ImwnBXUDUXzm6YDlfVmlLusKEdEULFXm8DSVHzmhqNwVKk4kJ6BLSNHosppBet87Wto9K35mjTE8hcJt4vvNTbEdt2ZL1kZpRg67j5yuxr6RkddO0a6OoIzj4VaYL+u4G3S0Uedp0NJJdISXhQpmv0QueSAupM6dfHyqbvoL4sbORdoYWPvSgf1onTV67EFS5JX+PLEvMKlL+YVvfyyDnURpZmj6Pg1dP27OoisFD1KUZR7oSo3UXheXuGyJ6iL+vq8opcfy6UuY2CeaqCiK8MErqZatS+NMs5+HC3GikIzHHjmgSY9SsM86JEb3W61iO7et19bjeF7joFvAtYbCSyb1yJlSg3qqQtk6KAo2KQNx4mxedgYPQa6HajZZcW5z6KESfL3zmFG+RZYtXoR5h1/w47ZuB/TP9vMQXwz6wJx9N1xV4kfDO4G7MdguKJjgdhYOEJDhBlhgNGD6YuSWu3MKfoy/OYboecHyk5jTCIQZMddCFbf+5/PYsjuz5Ae2pg49jtSUZszTsym8vUzDpyGhT0Azt9OM6maNRxQVdFtrB8Qgd1p6UjcfxY5aw6hEuGoIaKpPxMCh9MCxgm0Wa06HPU07lWnChuXbiKt+0M3GljcISAuzAmrRQeGDgV4/VgQyY4bDJam4tMGDccENQGRYycK4XPW+dlfcw3wwx8axTZ75O5lQnEZeTc7wN32+TR5wxMMvom4fdkr8tX5ngdiym3G8ey9svC5oeNzxp/TJB8/w0EhXCZ7V3nvfQnuQvI4logIsnN7Lfo2QLmIZJxCXTzutSjQz6nQbwF0q6Yoe9GKzW2n1ymKlt0K804z0aFnKlBrFRWvUP3jqM5VdNyrUDdSgXYDHdlb+IZuoOMUpysKIhSoL9B5jGlYVgwCtvNKWFy2OdH5Lz4aUvI6PcylJpTPjsIrU64y1G0+MmkZifjhPk2zikZ44he7oMUeQcgkelA9Sp4h23LRGDwz904URRBmHj17fmWrosAkmrTgHE4NShJdwcIRAz0WQLFn4DbYtzXf8LP+9Q2+njEO782moYbERBwfPgi1EVaRPjG8HlnmCvIuKvFeTqQgV47gB8pB3VI+D5QHXvgZirLTweMfnH/o3u3IqtpPbarDdyups+LcwJGY//JKv4eBH9CPvjdbmJbXRQKetVVRZdX4apUJb70eieLfR2AJFgp55eglOPZhHDQaSAcRGyc8XGTGv/6k46XtE4VNkSOF1UKqEIZazU3IrFAVEM/RjtNylzKIqHRnsiBInKFLLCWcwq2ojwxDdCWRfDBbHjtD85uBH88UsiV/qfD429YZIzko2uAQzTz7EouICNjxPWUQDJMRD57zuN/V1M2bSPcY58k6juOkbMvjVRPW7+agIEpuB548+p87/0STKWtJN9Y7KC+MAnaEYj6pYgE91k06dAYc0aGMV4CCVTQ4T/Etfjx2axAwgD6vaOmWvKJlLS78RMDG+eXzsI9neUNAtDe4KnPRO7qqb9RcGnU19MOU5jIdeoGu4EtNMz2iQnse0OpoePRuHaY/6MAeKJgFVX925cDFDUzvyfG8E1banSXLqexTJOJTf8yCyq8iEJLowouPXwsNbasSfysOOFqCipgIvLv4EvDNyRnzTXGSyIYfVn7I7/j+/YiaWIUd03MEAZ0YnAxOt/vgQGSZ6X7gRB4pfiUOrkIV+7+bhcrYCKQdcefP3U6WwzkDMY++IafQ4L4nid+BxyUuf3ENPpo9C+uvnYtzKXFgr4uNBkTakVpRhhl/fgenwlX8YMUjYsxt8IETiKisYRM/2Tl5mKgvk9mzv7oR84qWCXn28Yuxc8IQMQNqJOAXwMsjUjDllB03P/GOeBjY/hfL7sWI7QVUBx7DskAQAhEGY8fdQsXhQEalC+AZTJKQ+ETEmcNgCQ2DQVhchkZfg2oIpWebIUMRb4lktVsov70008jdc5W8R3B3V9dF3MVDzsDm83PJ90wrQESUOy4m1CHWnRnx9886jMxYIidKmWavwNW3OHHjHQ48NnkHfOMoOuinOiocfL183YZwmz1025NgYuFEfD/wzBzfH2zDbcBYtDTxw4Pux4akCvyNNM9f8QBnCc7z1el303hntbdNN84Zix898g9RLpPYk4/cIrxaHoznRHyfZBw8Dp7R5fuUdYGiQf+MdKcUNJATneeTrl7TVT7Saes+RBb/BrGgW/k9kZRnckyJ06F92+3NtS4ftpp7ZNlleQHLLlgfTFQNXymKOlfRlRKO1w4XPKzrylRVcf1Ig3KnouPVT7MXFYc4tB1Uv9HUXTS7Dha4WZ4T+Ijqc97mU77I/IxFmfkZiwmI5pOzTT7Zchoo+D18NiYIsfr9fzLxi+x7fGLcp8bNYNxQ/G323b+tQHqBm/d4tmzs1/vwnaUrxGwj30Rsy0sgDFLhPH696Mf4IXWneGkC21eUR6LWZEX9pmiU3DUE3EV1lwhcd8O/sHz87Ri2oxBJJ86A7TkdC3sw0z7bYpgGPV7/+Ie4+ZmVmP75bnA30uQkQiDLFCIsnhUc9sEqcP1WZiwSY278jcthvolBG9efH4ArX13tZ2fYPz/9JkxZtwk860nm3s8ZLQpISxMPycfDbhV5cxqubwgN/kccI1L0/OSxkSiRZleTYmhWlMaKQMLnl28vwbBzNMbGXhIZptEg/6RNh8FxbJM8aiKe+fWHAu86hMJpjUQOkSLP2PI/64hlDZSuqc+oTQfBtk3Fsz6MZjL/bdlnuOavnyD2TCWrmhXGjq81UBhX4z4wMuAw6w1bvmeMuGBHoz3+lvffaC4N52PEM/5Xk/fF+fH9x+3JwuesY2F7rgfXh8OBws8LPzcrMxZPMOLo/CnSWVdl3uR9WNy6xbF89Lfz1+XTs5qfsUjxkUwug9ME85qC6ZqyZX0w+Sxz0Z78jJtuWpmx6DGOXz3X5lyVcdPN+ZmLb83PWLRgZebiVaxn0srPWPxDsrufbVgXKGqg4nyET3wx57cZddRlDVLYKylX4qlBi4LEdILq2DFcWLEBUeR/Hg9NwemQBJGpow7ITGzwFrhudxx7VcS1d1eNMDjoIRbejE8mSdQlFKvFDxzw0bb91Ao7LFXn6AtJ90tcUhuKV++/EfNpjMb41uZvd+6qxJ8uw+zdmzAptVxIFo2KDJpsxsyYYhE29MGOsT6/5sqv3vAKdaNgB0zQ9YZ6CA/LJyzsDh8GbDbAZgMeeQTYsQM06yCiYLcDy8nxttmAhx4C1q0D6utbjnNbyH0/QqBbCIvxva/oL3wIKo8N/kGXkVb8F/9CSIoVR0Ldyw+MCrhqVGSlhYugUbdQOBBnIo9EaNu2I1cXYE9GURon5KUM/JA2jmm1RtTNeQ7g9U4BqRa+vEasqTK6Rkb35S9X/hIzEo7jquHFiLx3KJQHx+DyC8pwu3k7rhpR0qxkxLi7aQFFiWAlCLcQGsPyXGtiuMNNRkHqJhLInUSgnQh0G2FdVboKN516v8lqM2n9PPveNo9pNZkhRWhQ8fPBP8VHIcMRGe1/6ZpTQXyoFTee+gBcNzLv+IcHhD0PMXd/WESmZWXi0OFdHbmGgZ4MZxoVBe5qkGvduPvCJFpWhrl/eQ+L7ntOHHH6NJoT58li1JypdpMQ5R9q1hGmOoDKSgoBddQlFGNdnmsNNVH3N1i9hLXcSQTaj4D/U9v+fNqV8tFDSzC5cmeTabl7OG/C3zq0RsvI/JP4meC8OM/t+6sQHtcTuPMAABAASURBVKeDxtLgu4XSrNlPo2kW2VfJpOCiB9BX19pzfoBZWmvfVrv21O04dcWXLQP+9KdWi/b8X+D4bDWMbppJ0WBWCT9PfUsQC7CHBffGY1iim+cOyn3XIdDvcla7+4qf3fcQMpoYz+K68e9R3TryN7hh1OPtIi4mKk7LeXBenCfL0TM1iEtsuHxeb5VdfQTrk/KgJSSxCfljGkLgFOc9beei2tl52cF5qpgWFw+xHILKs5g0mDQneCzOSeNXNbB647zjW+0lecpffiQCTSHQ8MQ2ZdHF+oH1p/DSnvubJS2uwuq4C8GkM2nKW3hgyJ1g8qk2hcOlmDhaiF214Ig1FW8lX4afZ/8X2JbTcFph4LM7UFQDJcwJlZIzWeXUFCBUt2OPPR1Hh88Ulma4EK7SgLAItW0XiVqEKK5GiSrt5ka69igcMKNKC22UtKXZuUYJWqGoRwjKlSjA4y2KP6MgL4s9Lq5HNU0wgLu/ALi7aOU/WzUGzUknPxKBzkKg2wmLL2R4TSHe2Hl3s91DtmM5ZUnCG8lXID9uKrZEjcTXURfgy+jxQri796us/8RPh92PV1KuAttymqZkV0EVRsSew6jqQwjT6oSZizyXr2Ome70sOBygKTAR15adhQbsfbtNRtqSaotx2qFjJQ1016phMEgEni3W6vScte9gJ3I6iIF4F3OwAheCNx0KdKXhVmEvStWJjJ1OMGFVxQzwelhhZidCFaqDD2HZXQoqHSHgOrNUk0emEc6ct6YrqHaYUKlZRXwVkZ9Td5fVXBynldL/EHDfGT3gutnTem/7Hc0OxHdyNfGtvW/jwYO/QarFPXhs5L+7NgUFo+aJYNJZmo5vR/eGPaw4rRyBs3inq0NhD4sWeXdkdxIJcJgbumKcl0I7sc6LiIROW/XxJajHcQP+D4vxd1yOrRiGYsTBCROYRGpDIgFeIQ8gPMQFs8sO/jMKJiAR51mvxYQZCiJ5n1nQtUXxWLJ7PJZgoZDncDUqXW7vkD3O5zZnYknxxSLuD1iAY07qflI5zcVRtPz0QwTUnnbNPBD/3D4bmhvX6midOW8ug8uK+Sof08P9f25XJ2/iy7AL4Uwa0O6iwlCPZJxFoHd2qioUZaHu9V/tzVyDisNIB8L8PawY8q4Sw91E0lTeNQjFPgwGe1CBBFUNyg+0xcYCw4fDMe8yaLfeBh0KwN1BFgBW/q0rXrJApHQGMX7EGR9GPpdOHhbFkWnDhwktJcW7mh48W+nJT+TNYSOefwq6NXENucuzfoJAjyMsxv2q0lVYv2kh7i96Hsl2euhZ2QnCeXGenDeXIbKkB+uConxkhFeIoLE7VJ+EAyMvRQLK0d4Zr+y6g0CAd1bnVLG7logwK8soqs3HUiIJQVj8YDMReHIYGF2LyBAiizNnPBr34QAGYRm+hYdwKx7DTXgNl4I9qOoAgsKUKcCsWcD48VDSUhERHw4tPAJVKZlwhEYAHhIRi0a5q0wzjmKG0Ic4kyKIMLk7SLjCd4uJAa+Q9wpfv8djE54bh0eOdNsMGwZjTKzZON/85Xm/QKBHEpaBPK8237Lxu3jiwKOYXeb+VQMjri1HTst5cF6cZ2Da0M0bMNu0HQp0b5ROD+dX1klwpqR5dW09yTyxCYkm/+4m57G9IhnlA4byaZtFg4oNGIO6MCIAJiyfHHISq6E66oETJ3y0gAkaCpAGF6UVEUk0CzpiBHwJCmlpiE0IxYzMCtw+5QgemHMY140+BSsNuVWaogDCA54tIYxIibqd3F08hQQIT4+Ik1e4JzNh8XILH8K6ILkSCygvQ3jhqvDSKD8+ctiIu3rkaSSGU5eyhTiKbtNHGvcNBHo0YRkQX1/8EV7bdQ92fD0f3JW7+eRy8JgXz+6Z6DE07CzUFUm2nxHk9qMTbwhbTsNpOQ/DLtgxa+8qjIry90wK6+NRlDUdIfaaYEla1EXayzFGKUBgt/BsfSjWRswkGlFbzCPQoACp2ILhQBKRTqh7HIhtBkbXYVg81ZMXcx49yiqvxKECEaPIo5s2DZgzB+C/DUtNhSU6HGNSa3Hj2BPgF4t/NrUQlww9AyYdJh8x/kaeVK2JvCueBSRSUihXnglEbS1qYMVpxAOeekRaXOAxLPBKfrIzPjyuNiqpCoYMT6hGqMklovnIYSOOSTfS4mwxThjIXb9DoO1PTDdCFO8oF6vQ7yv6M64sXY3JFTtxYcUOTKvYKuSGU+/jt4eWCHL7VcGzwpbTtKbK6oF9mFO7DuE0y+W1J6/iG2UkHEqIV9XWkwml6xAfUtso2aa6THw54ppG+uYUJYjFh5gJPSwcSE4GVHfzKdAxa/A5NwmcPAkEdAmjiFpSLRVQQi1Ij67H/BHF4hcS7p91CNeOOoVsIjqLSXMTK3fnjh0DPvvMvbD06adRerQCxsJQs6pBLFsgUiql+lRGp3oJiz2jMBORTUD54K20FN7fYt+5EyguhiBEjuNuM/+IIf9++/btAHU1xexsS3EcL6VfIaD2q6tt4WKTtxEJRh3zt2LPIpwIggeZ/WNaFYrZvREXR+0Bk4pfArMZK6LmYW3s3FZ5WoVIxd9xBc6BumcDBwI+3cGJqRUYllADXsgJfuD9CgLMcOHakC/wwLS9+OGkY2B7MQ7FdtS1A5MJ/5Agr4DnF5NfeAH44gugpAQOSl2JCIixJLLnGcIo9oCoy3ccSdAZG88q9/SoWoRodoj8yNbvQwQnXnBevhz44AOIV4EMTJmw9uxxvwD93ntAYaE/mTUV51eADPQHBNTWXGS/saEHdPKp1UgMrW24ZPKyEElT+h5vpiGi9Wc5R77AxET/7qZITaSTn3E1/mi6DnuQCSdMCNzYq1qOXLyEb6McRBz8n4Y8m8b1ApAaWY+8rLNQeV0U/wIEC+kDP6EnCqHWVruJoKoKYBJ4913gsceAZ54BPvwQKKDua0DCeoS4SZKJm+J4JpLXWdmr7TiEdCCKCNSDzcDoevBP5+Bs502UUJHyIxHwIiAJywuF+yR601rMDtvnDnTSXt20EVc4P8fElDL/HJl0YmNResEsvB4+Hw/jFjyOG/Ekvo8nSB7ED/AsrsU2ZLvTZdMxIwMg74wVCWF2XD/mJCIsLuENYf16VgcX7mb9858Q7xD+7nfA668DW7eipRnQKoShJnaAt8xIKsusOVBWWodToAF39rDoOlifHEGEVV4OHDkSvA5SKxHoIAJqB9P3veR2O3IK1yAznB68Trw687q1uDJuN6YPKvPPlR52EGlhwgQgJwfVUUkoRwQqSHQoEF2xwYMhZvTS02GQVVpUPRaPP+Ee5K4mz+nzz92k5Z+7f4i9L/Ii/ZXNh4oRj3oLeXYmt/fHJMkzkYXl4aiLpXE0JizKIjWyDqKryN1LCsuPRKArEFC7ItPenqdl60bMVTbDpOiddylEFOqH7+PSyF1YPO44eIGlX+Y8DjSAPJmJEyHWQvEfN8yaBfGnC0OGQIxZEblxnS4ZUopbJxyD+FUEXkKwahXAA9l+GbYzEJDsMNJgLFvgKCbK+joN28sSgehoGIPxIxKrIVa/86A/G0qRCHQBAmoX5Nknshy0ezXGRZ/u3Gvh2be33kJWzUHcPrkI38053Zi4iJSEV8XdPvZqOEy1YKK6ML0cP5taiBmDy2Dmn3dhz+qTTwAeMCebzv6cRTSNUw10kyWNU4WaNMSFOXCqVMPJKivAi0FJH2Z2QfzAX00NxAxfZ1dE5icR8CDQKwkriqbp70paCdusfbD5/LnBiER6YDwX1tGDWnAI8+tWNCqDy+tQOeRpYelSmL/5CuNiS3DnRUX42dQifIfIa8KACvDSgJhQJ1h4TdKcjLP40aSj+J/Zh/GtYSUQs3s8u8Y/Ofzaa8CWLR261BqEwo6QRnnUk24VJkEsGqXJATbgVezs1W0ssMIVn+gecKeIofE1SAh3umf+eKyMdF3xcUJFvd64rl1RlsyzZyLQKwnrvEHJnktXjMnQOBk++gj4+9+BXbsQi0qMH1CJf8spxk8uLMJd0wqFfI8G1OfSDCB3w7wLObnLxVP/vASBPTZ0bNuAMfg/LIYNt/nJI6TbgaEAd1Ot5E0BGJtSCYvuQLL9NEzxsTDG03KoO6g67V0y2H6m1oLHiy8F1+8x3ISTzhgYG5OncS6P7UGg96VRe1+VPTXmRYa8ZshmA2w2wGYDbDbg/fc9Bp1w4AWQ/MucNhtgswE2G2CzATZb55TDhPPmm8ATTwA8g7d7N8SCytpa8G9NCTl3zk0Ea9e6Z/iefx5iAWYnXB5nMSzkFExJNNsXG8tBf4mPB3ign7qmQ+JqMY4Iy2yvxWz71/jR7LNIjHRioLHCnmcHefGnfw5BQyp0xJhqhRfJyyRUpcFMobhIpQ4xFgc4Lt5qR4blTIMBj/V5uskpkUSSDTHyrB8g0HsJqy81jp0evI0bgTfeAP74R+C3vwWYjFmeegp48UUgPx/g7mQnX3eCUon47CRg/HggNxfIzQVyc4HcXHKpxgI0C8hkdfXIUwg1a+73FCsqkKKV4gfjj+KyoSVNrrBvqqoRqMWt8etx14WHcOuE44jgF7Y9xiFw4tqIr3DXpP0ijr2oIWk6xEREbi7Ea0UWC2YMOodRSdUQ6748aeWh7yMgCavvt3GzV2i1V+Hb6gZcO+K4IIFJqeXiL78uSi8Tr+3w+NqicccRaXFBvCPIxMqe4UsvIeyLlRhkKUPgCnszXMi17saC4UfFS88jEqoa14FXtzNR86tAfOSwYcVjdKzzxA2v2oMFGQfx/TEnaLyvEL+cfUi886hCA8rKjFTy2A8QkITV7kbuGwn5oc8s24MxsWcFCRh/93XFsFKMSa5CrPF/hORVifcLeS2XcencTeXxtK1bAR+9yNNcglEJFeQFVSEpwmGkaDjyMowlS9yeJB85bMQWFUGsvmcPk+Kid2zAKNdB8GQHv1wtZkj5X3l4gJ/rYKSTxz6PgCSsPt/ErbjAU6fc42L856bsPZ0+7Z7x4wF+1vH4Gr++E+Q9RfC4Fb8oHVgMExyPyfFYI8uhQ4EWbQvzq0Scz+bNEK8R8fuOLF3QTW5bxaT1+URAEtb5RLunlsWTCx9/DLz9NsAkwBMNLDzAzzruBnIXrS31N/Lkl51Z+N+c25I+0HbrVvfL0TypwrO37F0F2shwn0dAElafb2J5gZ2AgMyihyAgCauHNISshkRAItAyApKwWsZIWkgEJAI9BAFJWD2kIWQ1JAISgZYROB+E1XItpIVEQCIgEWgFApKwWgGSNJEISAR6BgKSsHpGO8haSAQkAq1AQBJWK0CSJq1HQFpKBLoSAUlYXYmuzFsiIBHoVAQkYXUqnDIziYBEoCsRkITVlejKvCUCfRmBbrg2SVjdALosUiIgEWgfApKw2oebTCURkAh0AwKSsLoBdFmkREAi0D4EJGG1D7eOp5I5SAQkAm1GQBJWmyGTCSQCEoHuQkASVnchL8uVCEgE2oyAJKxXLQGtAAACXUlEQVQ2QyYTSATaioC07ywEJGF1FpIyH4mARKDLEZCE1eUQywIkAhKBzkJAElZnISnzkQhIBLocgV5AWF2OgSxAIiAR6CUIdBthKYAiRWIg74Hg9wDkFhSBbiOsoLWRSomAREAi0AwCkrCaAUdGnXcEZIESgWYRkITVLDwyUiIgEehJCEjC6kmtIesiEZAINIuAJKxm4ZGREgGJQFch0J58JWG1BzWZRiIgEegWBCRhdQvsslCJgESgPQhIwmoPajKNREAi0C0ISMLqFtg7XqjMQSLQHxGQhNUfW11es0SglyIgCauXNpystkSgPyIgCas/trq85t6FgKytFwFJWF4o5IlEQCLQ0xGQhNXTW0jWTyIgEfAiIAnLC4U8kQhIBHo6An2fsHp6C8j6SQQkAq1GQBJWq6GShhIBiUB3IyAJq7tbQJYvEZAItBoBSVithkoa9nwEZA37OgKSsPp6C8vrkwj0IQQkYfWhxpSXIhHo6whIwurrLSyvTyLQhxDwIaw+dFXyUiQCEoE+iYAkrD7ZrPKiJAJ9EwFJWH2zXeVVSQT6JAKSsPpks7Z4UdJAItArEZCE1SubTVZaItA/EZCE1T/bXV61RKBXIiAJq1c2m6y0RKD1CPQlS0lYfak15bVIBPo4ApKw+ngDy8uTCPQlBCRh9aXWlNciEejjCEjCaqGBZbREQCLQcxCQhNVz2kLWRCIgEWgBAUlYLQAkoyUCEoGeg4AkrJ7TFrIm3Y2ALL/HIyAJq8c3kaygREAiYCAgCctAQh4lAhKBHo+AJKwe30SyghIBiYCBwP8DAAD//70frcYAAAAGSURBVAMA4W6WWa9Eb9UAAAAASUVORK5CYII=",
"data:image/png;base64,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extensions:ANGLE_instanced_arrays;EXT_blend_minmax;EXT_clip_control;EXT_color_buffer_half_float;EXT_depth_clamp;EXT_disjoint_timer_query;EXT_float_blend;EXT_frag_depth;EXT_polygon_offset_clamp;EXT_shader_texture_lod;EXT_texture_compression_bptc;EXT_texture_compression_rgtc;EXT_texture_filter_anisotropic;EXT_texture_mirror_clamp_to_edge;EXT_sRGB;KHR_parallel_shader_compile;OES_element_index_uint;OES_fbo_render_mipmap;OES_standard_derivatives;OES_texture_float;OES_texture_float_linear;OES_texture_half_float;OES_texture_half_float_linear;OES_vertex_array_object;WEBGL_blend_func_extended;WEBGL_color_buffer_float;WEBGL_compressed_texture_s3tc;WEBGL_compressed_texture_s3tc_srgb;WEBGL_debug_renderer_info;WEBGL_debug_shaders;WEBGL_depth_texture;WEBGL_draw_buffers;WEBGL_lose_context;WEBGL_multi_draw;WEBGL_polygon_modeextensions:ANGLE_instanced_arrays;EXT_blend_minmax;EXT_clip_control;EXT_color_buffer_half_float;EXT_depth_clamp;EXT_disjoint_timer_query;EXT_float_blend;EXT_frag_depth;EXT_polygon_offset_clamp;EXT_shader_texture_lod;EXT_texture_compression_bptc;EXT_texture_compression_rgtc;EXT_texture_filter_anisotropic;EXT_texture_mirror_clamp_to_edge;EXT_sRGB;KHR_parallel_shader_compile;OES_element_index_uint;OES_fbo_render_mipmap;OES_standard_derivatives;OES_texture_float;OES_texture_float_linear;OES_texture_half_float;OES_texture_half_float_linear;OES_vertex_array_object;WEBGL_blend_func_extended;WEBGL_color_buffer_float;WEBGL_compressed_texture_s3tc;WEBGL_compressed_texture_s3tc_srgb;WEBGL_debug_renderer_info;WEBGL_debug_shaders;WEBGL_depth_texture;WEBGL_draw_buffers;WEBGL_lose_context;WEBGL_multi_draw;WEBGL_polygon_modew1[1, 1]w2[1, 1024]w38w4yesw58w624w78w816w932w1016384w111024w1216384w1316w1416384w1530w1616w1716w184095w19[32767, 32767]w208w21WebKit WebGLw22WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium)w230w24WebKitw25WebGL 1.0 (OpenGL ES 2.0 Chromium)wuv:Google Inc. (NVIDIA)wur:ANGLE (NVIDIA, NVIDIA GeForce RTX 3050 Laptop GPU (0x000025E2) Direct3D11 vs_5_0 ps_5_0, D3D11)"
];
let fp = HASH.hash128(obj_fp.join("~~~"), 31);
let obj_a = {
pin: "",
oid: "",
bizId: "gold_m",
fc: "",
mode: "strict",
p: "s",
fp: fp,
ctype: 1,
v: "4.2.9.0",
pv: "02_mt_JXZ8_78623476362",
f: "3",
s: md5(dStr),
o: "m.jd.com/",
qs: "",
jsTk: ""
}
let aStr = STrEnc(obj_a);
return JSON.stringify({
a: aStr,
d: dStr,
}, null, 2);
}
try {
const agent = new HttpsProxyAgent(proxy);
let JsObj = JSON.parse(getXtokenObj(str));
const headers = {
"Content-Type": "application/x-www-form-urlencoded",
"Accept": "*/*",
"User-Agent": str,
};
const response = await fetch(`https://jra.jd.com/jsTk.do`, {
method: "POST",
headers: headers,
body: new URLSearchParams({
a: JsObj.a,
d: JsObj.d
}),
timeout: 5000,
agent: agent // 添加代理
});
const responseData = await response.json();
return responseData;
} catch (error) {
console.error(`Error: ${error.message}`);
return "获取 x-api-eid-token 参数异常";
}
}
// 默认配置
export const defaultConfig = {
route: '/api/stash/algorithm',
port: 8887,
ConfigName: 'CipherStash',// 配置文件名称
CipherName: 'CipherStash'// 算法名称
};
// 字段备注(不被引用)
export const Remark = {
type: "算法类型(数据参考下方算法对照表key值)",
str: "任何字段值",
}
// 算法对照表
// 入参注释
export const CipherTable = {
1: "x-api-eid-token算法",// str
}