// ==UserScript==
// @name [Premium] Captcha Solver
// @namespace https://greasyfork.org/users/1162863
// @version 1.1.1
// @description 90% succes rate on Firefaucet and Viefaucet helper
// @author Andrewblood
// @icon https://coinfinity.top/favicon.ico
// @match *://*.coinfinity.top/faucetlist*
// @match *://*.firefaucet.win/viewptc*
// @match *://*.viefaucet.com/*
// @grant GM_addStyle
// @license Copyright Andrewblood
// ==/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('<p><b>Captcha Solver:</b> Activated.</p>', '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('<p><b>Faucet Monitor:</b> Deactivated. <a href="https://greasyfork.org/scripts/485334-premium-faucet-monitor" target="_blank">Install Here</a>.</p>', '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('<p><b>Shortlink Maker:</b> Deactivated. <a href="https://greasyfork.org/scripts/489437-premium-shortlink-maker" target="_blank">Install Here</a>.</p>', 'red');
}
}, 1000 * 2);
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 = `
<h2>Download Captcha Solver</h2>
<ul>
<li><b>HCaptcha + ReCaptcha:</b> NoCoding Data Scraper and CAPTCHA Solver - <a href="https://chromewebstore.google.com/search/minirpa.net" target="_blank">Install Here</a></li>
<li><b>Antibot Words:</b> AB Links Solver - <a href="https://greasyfork.org/de/scripts/459453-ab-links-solver" target="_blank">Install Here</a></li>
<li><b>Cf-Turnstile:</b> Autopass Cloudflare CAPTCHA - <a href="https://greasyfork.org/de/scripts/464785-autopass-cloudflare-captcha" target="_blank">Install Here</a></li>
</ul>
`;
return CaptchaSolverOverlayContent;
}
document.body.appendChild(CaptchaSolverButton);
GM_addStyle(`
.captchasolver-button {
position: fixed;
bottom: 20px;
left: calc(65%);
transform: translateX(50%);
padding: 10px;
background: blue;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
z-index: 9999;
}
.captchasolver-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.7);
z-index: 9998;
display: flex;
align-items: center;
justify-content: center;
}
.captchasolver-overlay-content {
width: 95%;
height: 80%;
background: white;
padding: 20px;
overflow: auto;
text-align: center;
}
`);
}
if (window.location.href.includes("firefaucet.win/viewptc")) {
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: 300px;
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("#description > img");
if (imgElement) {
clearInterval(interval); // Stoppe das Intervall, wenn das Bild vorhanden ist
setCaptchaSolverStatus('<p><b>Captcha Solver:</b> Picture found and start to edit the image...</p>', 'green')
originalImgElement.src = imgElement.src; // Zeige das Originalbild an
processImage(imgElement); // Lade und bearbeite das Bild
} else {
setCaptchaSolverStatus('<p><b>Captcha Solver:</b> Wait for picture...</p>', '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('<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);
};
document.head.appendChild(workerScript);
};
document.head.appendChild(tesseractScript);
}
if (window.location.href.includes("viefaucet.com")){
function VieCaptcha() {
const targetElementSelector = '.check-box';
const targetElement = document.querySelector(targetElementSelector);
if (targetElement) {
window.focus();
setCaptchaSolverStatus('<p><b>Captcha Solver:</b> Captcha found please click the picture.</p>', 'green')
window.focus();
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);
}
})();