// ==UserScript== // @name [Premium] Firefaucet Captcha Solver // @namespace https://greasyfork.org/users/1162863 // @version 1.2.1 // @description 90% succes rate on Firefaucet and Viefaucet cannot solve the Picture but helps by the other clicks // @author Andrewblood // @icon https://coinfinity.top/favicon.ico // @match *://*.coinfinity.top/faucetlist* // @match *://*.firefaucet.win/viewptc* // @match *://*.viefaucet.com/* // @grant GM_addStyle // @grant window.focus // @license Copyright Andrewblood // @downloadURL none // ==/UserScript== (function() { 'use strict'; var CaptchaSolverStatus = document.createElement('div'); document.body.appendChild(CaptchaSolverStatus); CaptchaSolverStatus.classList.add('captchasolver-status'); GM_addStyle(` .captchasolver-status { position: fixed; font-size: 20px !important; top: 140px !important; right: 20px; z-index: 9999; pointer-events: none; } `); function setCaptchaSolverStatus(html, color) { if (color === 'green') { CaptchaSolverStatus.style.color = 'green'; } else if (color === 'red') { CaptchaSolverStatus.style.color = 'red'; } else { CaptchaSolverStatus.style.color = 'black'; } CaptchaSolverStatus.innerHTML = html; } setCaptchaSolverStatus('
Captcha Solver: Activated.
', 'green'); if (window.location.href.includes('coinfinity.top/faucetlist')) { setTimeout(function() { if (!document.querySelector(".faucetmonitor-status")) { var FaucetMonitorStatus = document.createElement('div'); GM_addStyle(` .faucetmonitor-status { position: fixed; font-size: 20px !important; top: 50px !important; right: 20px; z-index: 9999; } `); document.body.appendChild(FaucetMonitorStatus); FaucetMonitorStatus.classList.add('faucetmonitor-status'); function setFaucetMonitorStatus(html, color) { if (color === 'green') { FaucetMonitorStatus.style.color = 'green'; } else if (color === 'red') { FaucetMonitorStatus.style.color = 'red'; } else { FaucetMonitorStatus.style.color = 'black'; } FaucetMonitorStatus.innerHTML = html; } setFaucetMonitorStatus('Faucet Monitor: Deactivated. Install Here.
', 'red'); } if (!document.querySelector(".shortlinkmaker-status")) { var ShortlinkMakerStatus = document.createElement('div'); document.body.appendChild(ShortlinkMakerStatus); ShortlinkMakerStatus.classList.add('shortlinkmaker-status'); GM_addStyle(` .shortlinkmaker-status { position: fixed; font-size: 20px !important; top: 110px !important; right: 20px; z-index: 9999; } `); function setShortlinkMakerStatus(html, color) { if (color === 'green') { ShortlinkMakerStatus.style.color = 'green'; } else if (color === 'red') { ShortlinkMakerStatus.style.color = 'red'; } else { ShortlinkMakerStatus.style.color = 'black'; } ShortlinkMakerStatus.innerHTML = html; } setShortlinkMakerStatus('Shortlink Maker: Deactivated. Install Here.
', 'red'); } }, 1000 * 3); var isCaptchaSolverOverlayOpened = false; var CaptchaSolverButton = createCaptchaSolverButton('Captcha Solver'); function createCaptchaSolverButton(text) { var CaptchaSolverButton = document.createElement('button'); CaptchaSolverButton.innerHTML = text; CaptchaSolverButton.classList.add('captchasolver-button'); CaptchaSolverButton.addEventListener('click', function() { if (!isCaptchaSolverOverlayOpened) { openCaptchaSolverOverlay(); isCaptchaSolverOverlayOpened = true; } }); return CaptchaSolverButton; } function openCaptchaSolverOverlay() { var CaptchaSolverOverlay = createCaptchaSolverOverlay(); var CaptchaSolverOverlayContent = createCaptchaSolverOverlayContent(); CaptchaSolverOverlay.appendChild(CaptchaSolverOverlayContent); document.body.appendChild(CaptchaSolverOverlay); CaptchaSolverOverlay.addEventListener('click', function(event) { if (event.target === CaptchaSolverOverlay) { CaptchaSolverOverlay.remove(); isCaptchaSolverOverlayOpened = false; } }); } function createCaptchaSolverOverlay() { var CaptchaSolverOverlay = document.createElement('div'); CaptchaSolverOverlay.classList.add('captchasolver-overlay'); return CaptchaSolverOverlay; } function createCaptchaSolverOverlayContent() { var CaptchaSolverOverlayContent = document.createElement('div'); CaptchaSolverOverlayContent.classList.add('captchasolver-overlay-content'); CaptchaSolverOverlayContent.innerHTML = `Captcha Solver: Picture found and start to edit the image...
', 'green') originalImgElement.src = imgElement.src; // Zeige das Originalbild an processImage(imgElement); // Lade und bearbeite das Bild } else { setCaptchaSolverStatus('Captcha Solver: Wait for picture...
', 'green') } }, 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', { logger: m => console.log("Tesseract Log:", m), psm: 7, oem: 3, tessedit_char_whitelist: "0123456789" } ).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('Captcha Solver: Regonized Numbers ' + filteredText + '
', '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); }; document.head.appendChild(workerScript); }; document.head.appendChild(tesseractScript); } if (window.location.href.includes("viefaucet.com")){ /* GM_addStyle(` .imageOverlay { position: fixed; z-index: 9999; padding: 10px; border-radius: 5px; } .imageOverlay.original { top: 200px; right: 10px; background-color: rgba(0, 0, 0, 0.8); color: white; } .imageOverlay.processed { top: 450px; right: 10px; background-color: rgba(0, 0, 0, 0.8); color: white; } .imageOverlay img { max-width: 200px; max-height: 200px; width: auto; height: auto; } `); // Create the original overlay div and add it to the document const originalOverlayDiv = document.createElement('div'); originalOverlayDiv.classList.add('imageOverlay', 'original'); document.body.appendChild(originalOverlayDiv); // Create the processed overlay div and add it to the document const processedOverlayDiv = document.createElement('div'); processedOverlayDiv.classList.add('imageOverlay', 'processed'); document.body.appendChild(processedOverlayDiv); // Create img elements for the original and processed images const originalImgElement = document.createElement('img'); const processedImgElement = document.createElement('img'); originalOverlayDiv.appendChild(originalImgElement); processedOverlayDiv.appendChild(processedImgElement); // Load Tesseract.js script var tesseractScript = document.createElement('script'); tesseractScript.src = 'https://cdnjs.cloudflare.com/ajax/libs/tesseract.js/5.0.4/tesseract.min.js'; tesseractScript.onload = function() { // Load Tesseract worker var workerScript = document.createElement('script'); workerScript.src = 'https://cdnjs.cloudflare.com/ajax/libs/tesseract.js/5.0.4/worker.min.js'; workerScript.onload = function() { console.log("Tesseract.js loaded"); // 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(".captcha-image"); if (imgElement) { clearInterval(interval); // Stoppe das Intervall, wenn das Bild vorhanden ist setCaptchaSolverStatus('Captcha Solver: Picture found and start to edit the image.
', 'green') originalImgElement.src = imgElement.src; // Zeige das Originalbild an processImage(imgElement); // Lade und bearbeite das Bild } else { setCaptchaSolverStatus('Captcha Solver: Wait for picture.
', 'green') } }, 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 schwarz und den Hintergrund auf weiss 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, 1, 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; // Bereinige Ressourcen src.delete(); dst.delete(); M.delete(); resized.delete(); } // Starte das Laden und Bearbeiten des Bildes loadAndProcessImage(); }; document.head.appendChild(opencvScript); }; document.head.appendChild(workerScript); }; document.head.appendChild(tesseractScript); */ function VieCaptcha() { const targetElementSelector = '.check-box'; const targetElement = document.querySelector(targetElementSelector); if (targetElement) { window.focus(); setCaptchaSolverStatus('Captcha Solver: Captcha found please click the picture.
', 'green') targetElement.click(); } const dotElement = document.querySelector('div.dot'); if (dotElement) { const buttons = document.querySelectorAll('button'); buttons.forEach(button => { if (button.textContent.includes('Verify')) { button.click(); } }); } } setInterval(VieCaptcha, 1000); } })();