You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

256 lines
19 KiB

const express = require("express");
const router = express.Router();
const {jsdomFromText, browser} = require("sdenv");
const {Script} = require("node:vm");
const crypto = require("node:crypto")
const AreaNameEnum = require('../enums/AreaNameEnum');
const Store = require("../utils/Store");
const JsUtil = require('../utils/JsUtil');
let store = new Store();
let sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
router.post('/rsCookie', async (req, res) => {
let uuid = crypto.randomUUID().replace(/-/g, "");
let start = new Date();
try {
let url = req.body['url'];
let areaName = req.body['areaName'];
let htmlStr = req.body['htmlBase64'];
let cookie = req.body['cookieBase64'];
let userAgent = req.body['userAgentBase64'];
console.log(`${uuid};接收到 ${areaName} 请求:${url}`)
if (url == null || url === '') {
return res.status(500).send('error url')
}
if (htmlStr == null || htmlStr === '') {
return res.status(500).send('error html')
}
let cookies = await handle(url, uuid, areaName, Buffer.from(htmlStr, 'base64').toString('utf-8'), cookie != null && cookie !== "" ? Buffer.from(cookie, 'base64').toString('utf-8') : null, userAgent != null && userAgent !== "" ? Buffer.from(userAgent, 'base64').toString('utf-8') : null,)
console.log(`${uuid};返回cookie ---->`, cookies)
res.status(200).send(cookies);
} catch (e) {
console.error(e.stack)
return res.status(500).send(e.message)
} finally {
console.log(`${uuid};rsCookie ${new Date() - start} ms`)
}
})
function CookieStr2List(cookies) {
let list = []
for (let cookie of cookies.trim().split("; ")) {
list.push(cookie);
}
return list
}
async function handle(url, uuid, areaName, htmlStr, cookie, userAgent) {
// 获取 origin
let baseUrl = new URL(url).origin;
// 初始化 jsDom 和 cookieJar
const [jsDom, cookieJar] = jsdomFromText({
url: url, referrer: url, userAgent: userAgent, contentType: "text/html", runScripts: "outside-only", // runScripts: 'dangerously'/'outside-only'
})
// 加载dom
let dom = await jsDom(htmlStr);
console.log(`${uuid};html 加载长度--->`, dom.serialize().length)
window = dom.window
// ------------------------------------------------ param ----------------------------------------------------------
// 标志判断cookie是否生成
window[uuid] = false
// ------------------------------------------------ function -------------------------------------------------------
// js执行成功后会跳转页面 会触发onbeforeunload钩子
window.onbeforeunload = async (url) => {
console.debug(`${url} 页面回调完成`);
window[uuid] = true
}
// 设置 cookie
if (cookie != null) {
let cookieList = CookieStr2List(cookie);
console.log(`${uuid};cookie 加载长度--->`, cookieList.length, baseUrl)
for (let i = 0; i < cookieList.length; i++) {
cookieJar.setCookieSync(cookieList[i], baseUrl);
}
}
// 方案1 通过监听cookie 判断cookie是否生成
const superSetCookie = cookieJar.setCookie;
// 设置 setCookie 代理
cookieJar.setCookie = function (cookie, currentUrl, options, callback) {
console.debug(`${uuid};正在设置 Cookie:`, cookie, currentUrl);
let call = superSetCookie.call(this, cookie, currentUrl, options, callback);
// 设置标志可取标志
if (cookie.includes('YqQ7a3SgknV8P')) {
window[uuid] = true
}
return call;
};
// ------------------------------------------------ 实例化浏览器 -----------------------------------------------------
browser(window, 'chrome');
// 加载js
let js = await JsUtil.loadJs(window.document, areaName, cookie);
console.log(`${uuid};js 加载长度--->`, js.length)
// 执行 js
let script = new Script(js);
let internalVMContext = dom.getInternalVMContext();
script.runInContext(internalVMContext, {timeout: 1000});
// 等待cookie 被设置
for (let i = 0; i < 10; i++) {
if (window[uuid]) {
break;
}
await sleep(100)
}
// 获取cookie
let resCookie = cookieJar.getCookieStringSync(baseUrl);
// 关闭
dom.window.close()
return resCookie;
}
/**
* 方案1
* 利用rs特性 js加载完成后会刷新页面
* 利用 window.onbeforeunload 判断页面是否执行完毕
* @param window
* @param cookieJar
* @param uuid
* @returns {Promise<*|null>}
*/
function scheme1_before(window, cookieJar, uuid) {
window.onbeforeunload = async (url) => {
let baseUrl = new URL(url).origin;
const cookies = cookieJar.getCookieStringSync(baseUrl);
console.debug(`${url} 页面回调生成cookie:`, cookies);
store.set(uuid, cookies)
// window.close();
}
}
/**
* 方案1
* @param window
* @param cookieJar
* @param uuid
* @returns {Promise<*|null>}
*/
async function scheme1_after(window, cookieJar, uuid) {
// 等待 onbeforeunload 钩子触发后的回掉
let val = await store.waitGetAndDelete(uuid, 100, 10)
if (val != null) {
return val;
}
return null;
}
/**
* 监听cookie出现指定cookie
* @param window
* @param cookieJar
* @param uuid
* @returns {Promise<null|string>}
*/
function scheme2_before(window, cookieJar, uuid) {
// window[uuid] = false;
const superSetCookie = cookieJar.setCookie;
// 设置 setCookie 代理
cookieJar.setCookie = function (cookie, currentUrl, options, callback) {
console.log(`${uuid};正在设置 Cookie:`, cookie, currentUrl);
return superSetCookie.call(this, cookie, currentUrl, options, callback);
// let cookieStringSync = super.getCookieStringSync();
// console.log(cookieStringSync)
// if (cookie.includes(key)) {
// // 设置标志可取标志
// window[uuid] = true
// }
// return call;
};
}
/**
* 方案2
* @param window
* @param cookieJar
* @param key
* @param uuid
* @returns {Promise<null|string>}
*/
async function scheme2_after(window, cookieJar, key, uuid) {
let sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
for (let i = 0; i < 10; i++) {
let cookieStringSync = cookieJar.getCookieStringSync();
if (cookieStringSync.includes(key)) {
return cookieStringSync;
}
await sleep(100)
}
return null;
}
/**
* 方案3 根据cookie现有的数量判断
* @param window
* @param cookieJar
* @param baseUrl
* @param uuid
*/
function scheme3_before(window, cookieJar, baseUrl, uuid) {
const initCookie = cookieJar.getCookieStringSync(baseUrl);
window[uuid + 'CookieSize'] = initCookie != null ? initCookie.trim().split("; ").length : 0;
}
/**
* 方案3
* @param window
* @param cookieJar
* @param baseUrl
* @param uuid
* @returns {Promise<null|string>}
*/
async function scheme3_after(window, cookieJar, baseUrl, uuid) {
let initCookieLength = window[uuid + 'CookieSize']
let sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
for (let i = 0; i < 10; i++) {
let cookieStringSync = cookieJar.getCookieStringSync(baseUrl);
let cookies = cookieStringSync != null ? cookieStringSync.trim().split("; ").length : 0;
if (cookies > initCookieLength) {
return cookieStringSync;
}
await sleep(100)
}
return null;
}
// 测试 handle
handle('https://app.yunnan.chinatax.gov.cn/xxmh/html/dfts/index_frame.html',
crypto.randomUUID().replace(/-/g, ""),
"yunnan",
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n' +
'<html>\n' +
'<head>\n' +
'<meta http-equiv="Content-Type" content="text/html; charset=utf-8">\n' +
'<meta id="oTmlIN1ffNku" content="5eJWUDslQjTqNHHAOtOkPCssUo0sGlOVMrAeJ3.mbmmMZLhGpNhg.VCmV7eIcXd3tInFRCvJHpMOf2x13KxB3OQhUC7_7Of5KauwEX9PRIsFznwRI34ZsA" r=\'m\'><!--[if lt IE 9]><script r=\'m\'>document.createElement("section")</script><![endif]--><script type="text/javascript" r=\'m\'>$_ts=window[\'$_ts\'];if(!$_ts)$_ts={};$_ts.nsd=16227;$_ts.cd="qxrErrAlEfAqcqEEquEAmqqrEGGEqsELqGGsWPGmmqqEqGGkWfqEqsVElS0VqqGocqAnlqGkWPGlmrQEqAGDWfqErsELqGGcJA9strAqq1EtmqqEqqGrWfqVmaGocqAnlrAqcqEEquEAcrlntqWErqGmWkVtrr7VqqGYcqWnlrAqcqlErOEFmqqErqGmWfqEqOVXbalTWAVlWODMETFjmmNZ2N51x0d6X2bG8mUEO7dFDlxix5DJentgRjsSqaA0rGAmbPam5TyexOs8UmrtATyPKzw2QYwW1DRW.sNqYVE9H24qWnZvxnLSKW3BEspkYuwe_sYmQOpWs2hkwm2hR9yxQdLfiYy8JPGvX1Z6KmGjxOMVRomLFvQjwwJrR0xYskpVL9R1JbA9H24qWnZvxnLCJ7R8hnQeI6Rp69f7QYpRR9I7YbmwITyUJzNnEse8UsANX1lBW2fMtcIFw0aTQ0w0pJ2CQkpWFmrrdmmowlyrxOdqKkWNxnALWZR8hnwDRCYx6OmiR2TiYVsN3mJTQYp0YQynEse8UsANX1lBJkJMtm_.hnlvtsQuKhw3Wn9vxcG0LTgBUOVjxP86WON3KcLbAtTR8CznY6pL0V3CAkpjRbIxw0pzRcA5U7quhnQvtO3aS2gBx02.Fos58TYCAkJsWBeG3mNBVTYEjlAfHTywJcbyE1Z0JYzRtM21R2mcwVeYn9SVMU3S30jjWYr.UCwkx_m3KkVNxc3NjsY8Kc99VDhpwYSrA0J8wwrNw2ZTwCwV4vY.RcQZUT_.hnlvtsAuKW3BEYq0YOpcdVfQQox0Wb.jWCyHAvpbAdLfiYy8JPGvX1ZSJYfMtcIk32VZMlL6Vix6wb2CFYrfu1TA19TvxOdqKkWNxnALJt28UP9vRkpC4OYMFC3uw9IHpkJFAV0aMX2iQPQdUYZTznlftsAuKYP6EKQa3vyQVweRhKlassl6_DmtYKzL3C1yiYf8J1Lbx4QnWmf3tPRGaYSDUkYPRvuaRYQewcfCF8eQ1lRcxky8akWBxnQjHmP6KkWNxnALHWR8hnwGMsrt_V3_QkxsJ6I7psYQW9TYVZ2lEse8UsANX1lBJkpMK1byRcTlHKmCV7mAWuJXYlRLukxv3DxhAn8fKmGTt1AbtFf8UP9vMYxsZDx9FsVuM2IRJlR9UVJuUJ9a3PQdUYZTznlftsYMtm_.hnlvtswRtQquhnQvtOR3SPZfFoRvJCjXwC2.M0YzHMYtROwKQDRQ6clyU2gCtc8yhuESKm7Lx5L4M2NxVYS7uoRjWURXMvuwM9f9YVlbHZr3Wn9vxcG6j2gBUOVjxP86Wsm3tY00tM9fhuQeKT9NXUATRCfLQ6I.J9e.woRD3tN0RKr9AKVvLYf3J199xPbNJTy38cNjQHwBhTy8JPf.4beBtKzuFDb6MURNF1NjQHwBUP28JPf.4beBtKzuFDb6MURNF1NjQHwBUP28JPf.4beBtKzuFDb6MURNF1NjQHwBUP28JPf.4beBtKzuFDb6MURNF1NjQHwBUP28JPf.4beBtKzuFDb6MURNF1NjQHwBUP28JPf8acl7RoYCtCH0QKgjFK223wT7QKG.3b7vz6wSQDrMtm_yhDxTw12zFdeb8nNNFKYfCvJutCmNxPvBQURGKm7LF5yBMn2.QCfNzCTCFK2Mtm_.hCTaFKLLF5yBMn2.QCfNzCTCFK2Mtm_.hCTaFKLLF5yBMn2.QCfNzCTCFK2Mtm_.hCTaFKLLF5yBMn2.QCfNzCTCFK2Mtm_.hCTaFKLLF5yBMn2.QCfNzCTCFK2Mtm_.hTf8xn22w877RKN6FnzNeDxvACN0F1BdMclNQUpS3W3BKcQjR6pTzDNz3Kr5tCv03bwlwU3j3IAfh6m6QCm3SPezQD2jtDBXMCZNF6JLFQ3BKkVNFomNenezQD2jtDBXMCZNF6JLFQ3BKkVNFomNenezQD2jtDBXMCZNF6JLFQ3BKkVNFomNenezQD2jtDBXMCZNF6JLFQ3BKkVNUYZvzDxuw1NGF6IChDejRDxcFX2XhKmjxcfS_URbKc2wxP._Q6WjMDfG3iW7MCN939YT_nTvFPQjQoIXR2y3tKfSFIQBMUrNFPf.4beBKc2wJcvqKcljRoR0tBT7QKGjFbz9d0Y7wCGL3Djyh6w6QDJRtQqfhDpTwPz7eKwbI1NjFCsdAvJTtCx.x4w6QUrGKT9NeURBF12LQKv6hCTaFKNRtQquhCzaFbGNeURBF12LQKv6hCTaFKNRtQquhCzaFbGNeURBF12LQKv6hCTaFKNRtQquhCzaFbGNeURBF12LQKv6hCTaFKNRtQquhCzaFbGNeURBF12LQKv6hCTaFKNRtQquhCzaFbGNeURBF12LQKv6hCTaFKNRtQquhCzaFbGNeURBF12LQKv6hCTaFKNRtQquhCzaFbGNeURBF12LQKv6hCTaFKNRtQquhCzaFbGNeURBF12LQKv6hCTaFKNRtQquhCzaFbGNeURBF12LQKv6hCTaFKNRtQquhCzaFbGNeURBF12LQKv6hCTaFKNRtQquhCzaFbGNeURBF12LQKv6hCTaFKNRtQquhCzaFbGNeURBF12LQKv6hCTaFKNRtQquhCzaFbGNeURBF12LQKv6hCTaFKNRKW3xqPTnVVLZ4lfCQOyosmUipsYfQs0eRtNHJVNqske0esNMF92lps4yKbRcUoZ01FrFQ2AnRuwKdDfzVu0eATHzJoRfJDJb3Hf.iDpzp6x1gV2LFDfaIO4KskRdI0YxRXyfJCl.Rkrb.uRvRcz7wu4Vwsl0WlrQQXmnF2A.Rkrb.uRvRcz7wu4TRDeNwCeNMzm2wl9.Rkrb.uRvRcz7wu4XVCe73mpOUZeHAm0.MoQ5gTxy3bxiwUIIJCxYHbJPYdwfMvqZJmRvCsfD1Kev1KIUKUqCYYWdJQJMYmSzFYVCZ0pVtCQnRuDXRCE.M6VdVdeGRoeIQo3a0bSYtCQnRuDXRCE.M6Vdtd963kla3bV.ZUqgF2m.FluYWbYO1CTSHzNNAVxBUuYrn0yWQqVDrq1.qaE0rpx7Q8euQkZCWOVaju3nJuAdHODBWqWkRuxvWFyvqa3uWsqm9sEuWOlSHsKBWuWmqOgaWtWSJuVmmNo7vfK9KKHUHy1LspLgYmAlm1uqr5ATWFb6vNGqrGqkqGDMEZGK1kpHv6E5iUOimc5zftuKJSnbZnO1Fwfbgmn6e0mwqaZ0WOVS.sLCWuqCrq1jqa90WOASWt9TJO0urPekjOr0sDwfQmsyVKepwsVj3zx_MkxcYnN6ZCzr1KJjQUhP1l76ROyiJ8WuqaVmruqmbOWkrkElJkhfhCx9RPN2Fi9B3vYXtbYCePePQCajRbsahCm9Q1NbMHVB3KfTtbRdj1eGtKRvRPvgMDgNRvR0tIfaQc2bwUENdCx6tKmjFcvdMDqN3K2vIMwvMolN3b2PzCRXF12OF6D6RvzGtKrLRhw2MC3N3DfuzCY7Fn2GFCBBhCYjQ1NO3I9BRDTjtbJ7d1e9In2XFoK6F6JTtKyaR.wj3DLNMCNOzCNzMc2BFvF6FvJ9tKe6F.wN3vQNMDYu5PeNwKrftDd.RceBwPNXwBpzhC27RcfNeDABFkmvtDO_QneLMDELFHxXhCfXQcfLeDQBFDNatDO.WceLwsELFizPhCfT3CWNevJ9tKfCwcvCQDLNFbpXtIpG8n2j3KWNeDeftKNj31v0wCVNFvr2t8zPQc2TRKYTz6Jv3n2C3CP6QCNbtURLMhwuMCSCQPfTeKABwUY.toU.QceTwUELw8z68n2TwKqN_6LBwUS2tosnR1e0QUgLwHf7wkQNwDVN_KxXtUwvwPvNRbANwCJ6t82Xh6wLQD3N_Uw2tUwnFUK6QDmNtUYPIMwaMc2CQDWN_opPtURS3PvL8vqNQKwCt8eP812S3UgN4CN2tUmB3bi6wCS6wCJjQMw6wCWNQvSSz6Ya312aw6F6wUrntUrZ3Mw03vWNQKmv_ne0FDAjQCOzh6pj3CqLQBp2RsQNQUpCz6pbRCGjIDICh6zNwPNZF8f4h6TLFPfe_CgBIURjto6fh69NICe0rR7krTLfRYAmvTavE1lDqmjdxC9mqY9GRHWkqsAarG30jAWcJqVoJAKMqaWmrA3lrQJ3EUJ9wcpzdbxv3owTY6oNFbTPYvJbE402QKrCwbz._D3zMKrv3DkNQcTOFvprRHf.tnTuRCfadPZOMbrdh1iexKzGRDxfw5fAw6w7FDW27kgOMbrdx2PpqaEa";if($_ts.lcd)$_ts.lcd();</script><script type="text/javascript" charset="utf-8" src="/GVv7ud1ebech/MO5zzCMcub4d.b4c45da.js" r=\'m\'></script><script type="text/javascript" r=\'m\'>function a(){var N=[\'W5BdHhblWRNdIXLxj8og\',\'W7G+lW\',\'W5yjW77dG0FdH8oHW60\',\'W4ldMCkq\',\'r8k+wa\',\'a3RdTq\',\'W5JcSchdGvmSqhtdTSk1\',\'WRddT8oIqJGmW7bKW6bDW6e\',\'W7FdGvnaW7JcSgpcOmk4W4xdV8o3Da\',\'WP3cNSob\',\'eJtcQ8oqoCkYW6ZcQa\',\'CHHZWRPoWOinW43dP34\',\'m3pcNG\',\'gCoJtthcRmkOnCk5vW\',\'WPxdSNm\',\'WOLwWRa\',\'wSkCWRS\',\'WRyccJZdNeajW7q\',\'W6XRsq\',\'WOlcOa9NWRtcJ3BdJ8onW57dI1/cMa\',\'WQGMuW\',\'WOTvW5G\',\'uZZcLq\',\'tmkcW5a\',\'fwpcJW\',\'mfVdOa\',\'WRadBgBcVKiiW5qDsCoA\',\'W6yXbG\',\'dCk/p8ofp8opWOJcIhy\',\'xYru\',\'o8kmWQi\',\'rIdcMq\',\'WOxcLCk/\',\'rddcOW\',\'aCoqW5q\',\'W6NdNvW\',\'W6nFqvP1yConWPFdVCk4W5JdGu0\',\'W5usW43dHwa+i0/cRa\',\'bueJ\',\'etZcL8oNmSkcW4/cTa\',\'W4xdT1e\',\'BHzv\',\'W73dTCkoW4pcTmotWPyncWVdU8kbyG\',\'ESkKqmkca8kkdmkggeNcHmk2\',\'WQtcVmoB\',\'vCkqWQy\',\'mthdKW\',\'C2xdK8ogWQOfhfi\',\'WR8cba\',\'qY3cUq\',\'kfhdUq\',\'ErzI\',\'wxtcMa\',\'pmkwWQK\',\'WOpcVCk2\',\'WOacW54\',\'W6Pvwa\',\'WQ/cJbfBo1pcO8o+WP3cRmkDW6S\',\'i3pcRG\',\'W4ddN8k8hSkUWQSbWPq\',\'W6btwG\',\'WPDiW5K\',\'W53dM3e\',\'WRpcSCkW\',\'xmkBWR8\',\'zbnC\',\'kMddUG\',\'jCoHfa\',\'tZtcTq\',\'WRTCsq\',\'leuT\',\'W5ixW6pdMMZdPmodDa\',\'WOr6WRW\',\'WOhcUmo+\',\'zCkaWRW\',\'iKWr\',\'bLZdOa\',\'m3NcJW\',\'ymo8yG\',\'W7RdIL4EWQBdNZRcTCkP\',\'WQBcIqfGnrNcOr1HWRzXW59r\',\'WQqldKCIWOZcUxuk\',\'tSk5dG\',\'rCkKvq\',\'WQhcHbXrovRdKmogWRpcV8kOW4/cTW\',\'W4tdNCkk\',\'FIj5\',\'t8k0vq\',\'WRfgsq\',\'bvyL\'];a=function(){return N;};return a();}function b(c,d){var e=a();return b=function(f,g){f=f-0x1a6;var h=e[f];if(b[\'qsxGZy\']===undefined){var i=function(n){var o=\'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=\';var p=\'\',q=\'\';for(var r=0x0,s,t,u=0x0;t=n[\'charAt\'](u++);~t&&(s=r%0x4?s*0x40+t:t,r++%0x4)?p+=String[\'fromCharCode\'](0xff&s>>(-0x2*r&0x6)):0x0){t=o[\'indexOf\'](t);}for(var v=0x0,w=p[\'length\'];v<w;v++){q+=\'%\'+(\'00\'+p[\'charCodeAt\'](v)[\'toString\'](0x10))[\'slice\'](-0x2);}return decodeURIComponent(q);};var m=function(n,o){var p=[],q=0x0,r,t=\'\';n=i(n);var u;for(u=0x0;u<0x100;u++){p[u]=u;}for(u=0x0;u<0x100;u++){q=(q+p[u]+o[\'charCodeAt\'](u%o[\'length\']))%0x100,r=p[u],p[u]=p[q],p[q]=r;}u=0x0,q=0x0;for(var v=0x0;v<n[\'length\'];v++){u=(u+0x1)%0x100,q=(q+p[u])%0x100,r=p[u],p[u]=p[q],p[q]=r,t+=String[\'fromCharCode\'](n[\'charCodeAt\'](v)^p[(p[u]+p[q])%0x100]);}return t;};b[\'jNpgMW\']=m,c=arguments,b[\'qsxGZy\']=!![];}var j=e[0x0],k=f+j,l=c[k];return!l?(b[\'wUfKBH\']===undefined&&(b[\'wUfKBH\']=!![]),h=b[\'jNpgMW\'](h,g),c[k]=h):h=l,h;},b(c,d);}(function(c,d){var E={c:\'x])f\',d:0x1c3,e:\'M&wP\',f:\'*IHo\',g:0x1ba,h:\'hCIg\',i:\'GkTc\',j:\'^d[I\',k:0x1d6,l:\']iMl\',m:0x1af,n:\'XAq&\'},A=b,e=c();while(!![]){try{var f=-parseInt(A(0x1f8,E.c))/0x1*(parseInt(A(E.d,\'3SHo\'))/0x2)+parseInt(A(0x1ad,\'UFu9\'))/0x3*(parseInt(A(0x1a7,E.e))/0x4)+parseInt(A(0x1b8,E.f))/0x5*(parseInt(A(E.g,E.h))/0x6)+-parseInt(A(0x1f6,\'Xu)s\'))/0x7*(-parseInt(A(0x1ae,\'tYvP\'))/0x8)+-parseInt(A(0x1ce,E.i))/0x9*(-parseInt(A(0x1d2,E.j))/0xa)+-parseInt(A(E.k,E.l))/0xb*(-parseInt(A(0x1d1,\'U2Vw\'))/0xc)+parseInt(A(E.m,\'Xu)s\'))/0xd*(-parseInt(A(0x1a9,E.n))/0xe);if(f===d)break;else e[\'push\'](e[\'shift\']());}catch(g){e[\'push\'](e[\'shift\']());}}}(a,0x8e3ce),!(function(){var M={c:0x1d7,d:\']iMl\',e:0x1ec,f:\'LiTG\',g:0x1f4,h:0x1df,i:\'l%He\',j:\'VXI9\',k:0x1de,l:\'#sFT\',m:\'9$49\',n:0x1fd,o:\'BU*^\',p:0x1da,q:0x1eb,r:\'fsK#\',s:0x1be,t:\'UFu9\',u:0x1bb,v:\'Oz$)\',w:\'8bAe\',x:0x1e8,y:0x1f0,z:0x1db,N:\'PvE(\',O:0x1cd},L={c:\'S])O\',d:0x1f3,e:\'TaRD\',f:0x1bc,g:\'XAq&\',h:0x1b7,i:\'Fgxo\',j:0x1fe,k:\'w6jc\',l:0x1ea},B=b,c={\'BWDot\':B(M.c,\'%S[2\')+B(0x1d5,M.d)+\'own\',\'fMlqt\':function(h,i){return h==i;},\'blQQF\':function(h,i){return h==i;},\'hkPXJ\':\'fun\'+B(M.e,M.f)+\'on\',\'Zbmmd\':function(h,i){return h!=i;},\'KQhuz\':\'hea\'+B(M.g,\'AYz9\')+B(M.h,M.i)+B(0x1dc,M.j)+B(M.k,M.l)+B(0x1c9,M.m)+\'ey\',\'HdIBe\':function(h){return h();},\'RTDEU\':function(h,i){return h==i;}};try{var d=![],f=window;if(f[B(M.n,M.o)+B(M.p,\')0gr\')+\'s\']&&f[\'chr\'+B(M.q,M.r)]){var g=Headers[B(M.s,\'9$49\')+\'tot\'+B(0x1b5,M.t)][B(M.u,M.v)+B(0x1dd,M.w)+\'h\'];c[B(M.x,M.o)+\'EU\'](typeof g,c[B(M.y,\'xh^Q\')+\'XJ\'])&&(Headers[\'pro\'+B(0x1d9,\'TaRD\')+B(M.z,\'GkTc\')][B(0x1f9,M.N)+B(M.O,\'S])O\')+\'h\']=function(h){var K={c:0x1bd,d:\'$&Ei\',e:0x1d0,f:\')0gr\',g:0x1cf,h:\'hCIg\',i:\'VXI9\',j:\'TaRD\',k:0x1ab,l:\'w6jc\',m:0x1b9,n:0x1e9,o:\'99mt\',p:0x1c8,q:\'fsK#\',r:0x1ca,s:0x1ef,t:\'T!sV\',u:0x1fa,v:0x1b0,w:\'xh^Q\',x:0x1e4,y:0x1b3,z:0x1e3,L:\'x])f\',M:\'#sFT\',N:0x1ed,O:\'S])O\',P:0x1fc,Q:\'$&Ei\'},C=B;if(!d&&c[C(0x1f2,L.c)+\'QF\'](typeof h,c[\'hkP\'+\'XJ\'])&&h&&c[C(L.d,L.e)+\'md\'](h[C(0x1e1,\'AYz9\')+C(0x1c7,\'uvFG\')+\'ng\']()[C(L.f,L.g)+\'exO\'+\'f\'](c[C(L.h,L.i)+\'uz\']),-0x1)){d=!![],f[C(0x1f5,\'3SHo\')+C(L.j,L.k)+C(L.l,\'^d[I\')]=0x1;function i(){var D=C;if(f[D(0x1d3,\'xh^Q\')+D(K.c,\'fsK#\')+D(0x1aa,K.d)+\'t\']){var j=new f[(D(0x1c2,\'AguD\'))+(D(K.e,K.f))+(D(K.g,K.h))+\'t\'](c[D(0x1c4,K.f)+\'ot\']);j[\'ini\'+D(0x1f1,\'Fgxo\')+D(0x1c5,K.i)+\'Eve\'+\'nt\']&&document[\'doc\'+D(0x1e6,\'8bAe\')+D(0x1a8,\'rj%1\')+D(0x1c0,K.j)+D(0x1c6,\'5qft\')]&&c[D(0x1ac,\'o)Rz\')+\'qt\'](typeof document[D(K.k,K.l)+D(K.m,\'l%He\')+\'ntE\'+D(0x1e7,\'z@[s\')+D(K.n,K.o)][D(K.p,K.q)+D(K.r,\')7Md\')+\'chE\'+D(K.s,K.t)+\'t\'],D(K.u,\'w6jc\')+D(0x1d8,\'fsK#\')+\'on\')&&(j[D(0x1ff,\'LiTG\')+D(K.v,K.w)+D(K.x,\'XAq&\')+D(0x1a6,\'S])O\')+\'nt\'](type,!![],!![],f,0x0,0x0,0x0,0xa,0xa,![],![],![],![],0x0,null),document[D(K.y,\'AYz9\')+D(K.z,K.L)+D(0x1b6,K.M)+D(K.N,K.O)+D(0x1d4,\'z@[s\')][D(0x1bf,\'nYQC\')+D(K.P,K.Q)+\'chE\'+\'ven\'+\'t\'](j));}}c[C(0x1e5,\'KfGx\')+\'Be\'](i);}return g[\'app\'+\'ly\'](this,arguments);});}}catch(h){}}()));</script></head>\n' +
'<body>\n' +
'</body>\n' +
'</html>\n' +
'<script type="text/javascript" r=\'m\'>_$_4();</script>',
'94UkHqjsnpGlO=60fhuKFCJ238ngXbeFvuNpiZyZvK2HCOsbkRBi7WAk8COuYc2Jv1.twWrOJ3p.Pcu_rE0FYzg9PJ4CjTocIPJHPG; tpass_tc8td8ea8edn4be483f5a9ktd52599n5=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjY2N2ZlYmU5YTM3MDQ3ZTViN2NlYmQ2MDYxYmU5NDNlIn0.zgV3bl3lf54MfLiNQ4enrhpjn0amydMPChZ2Z1fGry9oYEvE5_PbJWTczoFDdBLFyTrPEEKhsMwrkK4DF_p1Tg; tpass_m7d4a8meca944da79ppdb4bef7d7795a=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImZlMDZhZjljOWZmMTQ2MmM5MmMwZjBiZjIzZWIxMGZiIn0.tlg4c2FMwvQJ8x8f6G7lZEhVQ1x6qJEs2GkykWlmbRZD7JZOJ7NO88dQToMifIxDvnqZ7jZbbLOv9w8Mt4eVDg; dzswjCookie=3829a119fd1852b650f8f854393032dd; SF_cookie_17=31743519; YqQ7a3SgknV8O=60FAYNp0FZHRnRctdl7QyufG1rNQ_oSO8eM3AZGHqUUiLrNOzIHJ5oR7XIz58K5Li3pPYsoQGEX1OVCEWhEx_poA; SYS_CHANNEL_ID=J4; JSESSIONID=7ED72361D29F104CFF195ECD33D6D23E; channelId=J4; DZSWJ_TGC=7ED72361D29F104CFF195ECD33D6D23E',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36'
)
module.exports = router