您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork镜像 is available in English.
Real click, import and execute tesseract and opencv, alert blocking
当前为
// ==UserScript== // @name Typescript helpers // @namespace http://tampermonkey.net/ // @version 1.0 // @description Real click, import and execute tesseract and opencv, alert blocking // @author Andrewblood // @match *://*/* // @icon https://coinfinity.top/favicon.ico // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // Functions for REAL Click let helpers = { typer: function(inputElm, value) { let lastValue = inputElm.value; inputElm.value = value; let event = new Event('input', { bubbles: true }); event.simulated = true; let tracker = inputElm._valueTracker; if (tracker) { tracker.setValue(lastValue); } inputElm.dispatchEvent(event); }, triggerMouseEvent: function(elm, eventType) { let clickEvent = document.createEvent('MouseEvents'); clickEvent.initEvent(eventType, true, true); elm.dispatchEvent(clickEvent); }, alternativeClick: function(elm) { helpers.triggerMouseEvent(elm, "mouseover"); helpers.triggerMouseEvent(elm, "mousedown"); helpers.triggerMouseEvent(elm, "mouseup"); helpers.triggerMouseEvent(elm, "click"); } }; function getRandomNumber(min, max) { return Math.floor(Math.random() * (max - min) + min); } function randomDisplayNumber() { var screenWidth = window.innerWidth; var screenHeight = window.innerHeight; var randomX = getRandomNumber(0, screenWidth); var randomY = getRandomNumber(0, screenHeight); return { x: randomX, y: randomY }; } function moveMouseTo(x, y) { var event = new MouseEvent('mousemove', { bubbles: true, cancelable: true, view: document.defaultView, clientX: x, clientY: y }); document.dispatchEvent(event); } // Code for REAL Click with the functions above var randomPosition = randomDisplayNumber(); moveMouseTo(randomPosition.x, randomPosition.y); helpers.alternativeClick(document.query.Selector("your selector")); // @require https://cdnjs.cloudflare.com/ajax/libs/tesseract.js/5.0.5/tesseract.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/tesseract.js/5.0.5/worker.min.js // OpenCV script var opencvScript = document.createElement('script'); opencvScript.src = 'https://docs.opencv.org/4.5.5/opencv.js'; opencvScript.onload = function() { console.log("OpenCV.js loaded"); // Funktion zum Polling bis das Element sichtbar ist function waitForElement(selector, callback) { const element = document.querySelector(selector); if (element && element.offsetHeight > 1) { callback(element); } else { setTimeout(() => waitForElement(selector, callback), 1000); } } // Funktion zum Laden und Bearbeiten des Bildes function loadAndProcessImage() { // Überwachungsfunktion, die in bestimmten Intervallen prüft, ob das Bild vorhanden ist let interval = setInterval(function() { let imgElement = document.querySelector("#description > img"); if (imgElement) { clearInterval(interval); // Stoppe das Intervall, wenn das Bild vorhanden ist originalImgElement.src = imgElement.src; // Zeige das Originalbild an processImage(imgElement); // Lade und bearbeite das Bild } else { } }, 1000); // Überprüfe alle 1 Sekunde, ob das Bild vorhanden ist } // Funktion zum Laden und Bearbeiten des Bildes function processImage(imgElement) { let src = cv.imread(imgElement); // Schritt 0: Vergrößere das Bild let resized = new cv.Mat(); let dsize = new cv.Size(src.cols * 4, src.rows * 4); // Verdreifache die Größe des Bildes cv.resize(src, resized, dsize, 0, 0, cv.INTER_LINEAR); let dst = new cv.Mat(); let M = cv.Mat.ones(5, 5, cv.CV_8U); let anchor = new cv.Point(-1, -1); // Schritt 1: Ändere die Schriftfarbe auf Weiß und den Hintergrund auf Schwarz cv.cvtColor(resized, dst, cv.COLOR_RGB2GRAY); cv.threshold(dst, dst, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU); // Schritt 2: Verwende Morphologie-Operationen, um das Bild zu bearbeiten cv.dilate(dst, dst, M, anchor, 2, cv.BORDER_CONSTANT, cv.morphologyDefaultBorderValue()); // cv.erode(dst, dst, M, anchor, 1, cv.BORDER_CONSTANT, cv.morphologyDefaultBorderValue()); // Schritt 3: Konvertiere das bearbeitete Bild zurück in ein DOM-Element let canvas = document.createElement('canvas'); cv.imshow(canvas, dst); let manipulatedImageSrc = canvas.toDataURL(); // Füge das bearbeitete Bild dem Overlay-DIV hinzu processedImgElement.src = manipulatedImageSrc; // Texterkennung mit Tesseract.js Tesseract.recognize( manipulatedImageSrc, 'eng', // Sprache einstellen, hier: Englisch { logger: m => console.log("Tesseract Log:", m), psm: 7, oem: 3, tessedit_char_whitelist: "0123456789", tessedit_traineddata: 'eng', // Ändere den Pfad zu deiner trainierten Datenbank, z.B. 'C:/Users/User/Desktop/Projekte/Luckybird Chat Bot/output_model/tec' } ).then(({ data: { text } }) => { console.log("Text from teseract:", text); // Filtere nur Zahlen von 0 bis 9 aus dem erkannten Text const filteredText = text.replace(/[^0-9]/g, ''); setCaptchaSolverStatus('<p><b>Captcha Solver:</b> Regonized Numbers <b>' + filteredText + '</b></p>', 'green') var textField = document.querySelector("#description > input.captcha-input"); // Überprüfe, ob die Länge des Textes korrekt ist if (filteredText.length === 4) { textField.value = filteredText; } else { location.reload(); } }); // Bereinige Ressourcen src.delete(); dst.delete(); M.delete(); resized.delete(); } // Starte das Laden und Bearbeiten des Bildes loadAndProcessImage(); }; document.head.appendChild(opencvScript); // Overriding the window.alert function with an empty function window.alert = function() {}; // Overriding the window.confirm function to automatically confirm window.confirm = function() { return true; // Returning true confirms the dialog }; })();