Typescript helpers

Real click, import and execute tesseract and opencv, alert blocking

As of 2024-09-11. See the latest version.

  1. // ==UserScript==
  2. // @name Typescript helpers
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.0
  5. // @description Real click, import and execute tesseract and opencv, alert blocking
  6. // @author Andrewblood
  7. // @match *://*/*
  8. // @icon https://coinfinity.top/favicon.ico
  9. // @grant none
  10. // @license MIT
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. 'use strict';
  15.  
  16.  
  17. // Functions for REAL Click
  18. let helpers = {
  19. typer: function(inputElm, value) {
  20. let lastValue = inputElm.value;
  21. inputElm.value = value;
  22. let event = new Event('input', { bubbles: true });
  23. event.simulated = true;
  24. let tracker = inputElm._valueTracker;
  25. if (tracker) {
  26. tracker.setValue(lastValue);
  27. }
  28. inputElm.dispatchEvent(event);
  29. },
  30.  
  31. triggerMouseEvent: function(elm, eventType) {
  32. let clickEvent = document.createEvent('MouseEvents');
  33. clickEvent.initEvent(eventType, true, true);
  34. elm.dispatchEvent(clickEvent);
  35. },
  36.  
  37. alternativeClick: function(elm) {
  38. helpers.triggerMouseEvent(elm, "mouseover");
  39. helpers.triggerMouseEvent(elm, "mousedown");
  40. helpers.triggerMouseEvent(elm, "mouseup");
  41. helpers.triggerMouseEvent(elm, "click");
  42. }
  43. };
  44.  
  45. function getRandomNumber(min, max) {
  46. return Math.floor(Math.random() * (max - min) + min);
  47. }
  48.  
  49. function randomDisplayNumber() {
  50. var screenWidth = window.innerWidth;
  51. var screenHeight = window.innerHeight;
  52.  
  53. var randomX = getRandomNumber(0, screenWidth);
  54. var randomY = getRandomNumber(0, screenHeight);
  55.  
  56. return { x: randomX, y: randomY };
  57. }
  58.  
  59. function moveMouseTo(x, y) {
  60. var event = new MouseEvent('mousemove', {
  61. bubbles: true,
  62. cancelable: true,
  63. view: document.defaultView,
  64. clientX: x,
  65. clientY: y
  66. });
  67. document.dispatchEvent(event);
  68. }
  69.  
  70.  
  71. // Code for REAL Click with the functions above
  72. var randomPosition = randomDisplayNumber();
  73. moveMouseTo(randomPosition.x, randomPosition.y);
  74. helpers.alternativeClick(document.query.Selector("your selector"));
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81. // @require https://cdnjs.cloudflare.com/ajax/libs/tesseract.js/5.0.5/tesseract.min.js
  82. // @require https://cdnjs.cloudflare.com/ajax/libs/tesseract.js/5.0.5/worker.min.js
  83.  
  84. // OpenCV script
  85. var opencvScript = document.createElement('script');
  86. opencvScript.src = 'https://docs.opencv.org/4.5.5/opencv.js';
  87. opencvScript.onload = function() {
  88. console.log("OpenCV.js loaded");
  89.  
  90. // Funktion zum Polling bis das Element sichtbar ist
  91. function waitForElement(selector, callback) {
  92. const element = document.querySelector(selector);
  93. if (element && element.offsetHeight > 1) {
  94. callback(element);
  95. } else {
  96. setTimeout(() => waitForElement(selector, callback), 1000);
  97. }
  98. }
  99.  
  100. // Funktion zum Laden und Bearbeiten des Bildes
  101. function loadAndProcessImage() {
  102.  
  103. // Überwachungsfunktion, die in bestimmten Intervallen prüft, ob das Bild vorhanden ist
  104. let interval = setInterval(function() {
  105. let imgElement = document.querySelector("#description > img");
  106. if (imgElement) {
  107. clearInterval(interval); // Stoppe das Intervall, wenn das Bild vorhanden ist
  108. originalImgElement.src = imgElement.src; // Zeige das Originalbild an
  109. processImage(imgElement); // Lade und bearbeite das Bild
  110. } else {
  111. }
  112. }, 1000); // Überprüfe alle 1 Sekunde, ob das Bild vorhanden ist
  113. }
  114.  
  115. // Funktion zum Laden und Bearbeiten des Bildes
  116. function processImage(imgElement) {
  117. let src = cv.imread(imgElement);
  118.  
  119. // Schritt 0: Vergrößere das Bild
  120. let resized = new cv.Mat();
  121. let dsize = new cv.Size(src.cols * 4, src.rows * 4); // Verdreifache die Größe des Bildes
  122. cv.resize(src, resized, dsize, 0, 0, cv.INTER_LINEAR);
  123.  
  124. let dst = new cv.Mat();
  125. let M = cv.Mat.ones(5, 5, cv.CV_8U);
  126. let anchor = new cv.Point(-1, -1);
  127.  
  128. // Schritt 1: Ändere die Schriftfarbe auf Weiß und den Hintergrund auf Schwarz
  129. cv.cvtColor(resized, dst, cv.COLOR_RGB2GRAY);
  130. cv.threshold(dst, dst, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU);
  131.  
  132. // Schritt 2: Verwende Morphologie-Operationen, um das Bild zu bearbeiten
  133. cv.dilate(dst, dst, M, anchor, 2, cv.BORDER_CONSTANT, cv.morphologyDefaultBorderValue());
  134. // cv.erode(dst, dst, M, anchor, 1, cv.BORDER_CONSTANT, cv.morphologyDefaultBorderValue());
  135.  
  136. // Schritt 3: Konvertiere das bearbeitete Bild zurück in ein DOM-Element
  137. let canvas = document.createElement('canvas');
  138. cv.imshow(canvas, dst);
  139. let manipulatedImageSrc = canvas.toDataURL();
  140.  
  141. // Füge das bearbeitete Bild dem Overlay-DIV hinzu
  142. processedImgElement.src = manipulatedImageSrc;
  143.  
  144. // Texterkennung mit Tesseract.js
  145. Tesseract.recognize(
  146. manipulatedImageSrc,
  147. 'eng', // Sprache einstellen, hier: Englisch
  148. {
  149. logger: m => console.log("Tesseract Log:", m),
  150. psm: 7,
  151. oem: 3,
  152. tessedit_char_whitelist: "0123456789",
  153. tessedit_traineddata: 'eng', // Ändere den Pfad zu deiner trainierten Datenbank, z.B. 'C:/Users/User/Desktop/Projekte/Luckybird Chat Bot/output_model/tec'
  154. }
  155. ).then(({ data: { text } }) => {
  156. console.log("Text from teseract:", text);
  157.  
  158. // Filtere nur Zahlen von 0 bis 9 aus dem erkannten Text
  159. const filteredText = text.replace(/[^0-9]/g, '');
  160.  
  161. setCaptchaSolverStatus('<p><b>Captcha Solver:</b> Regonized Numbers <b>' + filteredText + '</b></p>', 'green')
  162.  
  163. var textField = document.querySelector("#description > input.captcha-input");
  164.  
  165. // Überprüfe, ob die Länge des Textes korrekt ist
  166. if (filteredText.length === 4) {
  167. textField.value = filteredText;
  168.  
  169. } else {
  170. location.reload();
  171. }
  172. });
  173.  
  174. // Bereinige Ressourcen
  175. src.delete();
  176. dst.delete();
  177. M.delete();
  178. resized.delete();
  179. }
  180.  
  181. // Starte das Laden und Bearbeiten des Bildes
  182. loadAndProcessImage();
  183. };
  184. document.head.appendChild(opencvScript);
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192. // Overriding the window.alert function with an empty function
  193. window.alert = function() {};
  194.  
  195. // Overriding the window.confirm function to automatically confirm
  196. window.confirm = function() {
  197. return true; // Returning true confirms the dialog
  198. };
  199.  
  200.  
  201.  
  202. })();