- // ==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
- };
-
-
-
- })();