1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
(function () { "use strict";
function getCaptchaElement() { let xpath = "/html/body/div/div[2]/table/tbody/tr[1]/td[3]/img"; let captchaImg = document.evaluate( xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue; return captchaImg; }
function getCaptchaInput() { let xpath = "/html/body/div/div[2]/table/tbody/tr[1]/td[2]/input"; let inputField = document.evaluate( xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue; return inputField; }
function getLoginButton() { return document.querySelector("#login-btn"); }
function imageToCanvas(img) { let canvas = document.createElement("canvas"); let ctx = canvas.getContext("2d"); canvas.width = img.width; canvas.height = img.height; ctx.drawImage(img, 0, 0); return canvas; }
async function recognizeCaptcha(canvas) { let result = await Tesseract.recognize(canvas, "eng"); let captchaText = result.data.text.replace(/\s/g, ""); console.log("识别结果:", captchaText); return captchaText; }
async function fillCaptcha() { let captchaImg = getCaptchaElement(); let inputField = getCaptchaInput(); let loginButton = getLoginButton();
if (!captchaImg || !inputField) { console.warn("未找到验证码或输入框"); return; }
captchaImg.onload = async function () { let canvas = imageToCanvas(captchaImg); let captchaText = await recognizeCaptcha(canvas);
if (captchaText.length > 0) { inputField.value = captchaText; console.log("填充验证码:", captchaText);
if (loginButton) { setTimeout(() => { loginButton.click(); console.log("已提交表单"); }, 1000); } } };
if (captchaImg.complete) { captchaImg.onload(); } }
setTimeout(fillCaptcha, 200); })();
|