คุณต้องเข้าสู่ระบบหรือลงทะเบียนก่อนดำเนินการต่อ
Dayli Bonus/Faucet Roll/Level Rewards/Dayli Tasks/Shortlinks/PTC
// ==UserScript== // @name [Premium] Firefaucet.win // @tag Faucet // @namespace https://greasyfork.org/users/1162863 // @version 1.4.1 // @description Dayli Bonus/Faucet Roll/Level Rewards/Dayli Tasks/Shortlinks/PTC // @author Andrewblood // @icon https://www.google.com/s2/favicons?sz=64&domain=firefaucet.win // @match *://*.firefaucet.win/* // @grant GM_addStyle // @grant GM_setValue // @grant GM_getValue // @grant window.focus // @grant window.close // @grant unsafeWindow // @antifeature referral-link Referral-Link is in this Script integrated. // @license Copyright Andrewblood // ==/UserScript== (function() { 'use strict'; // CSS-Stil für das Overlay var overlayStyle = ` #overlay { position: fixed !important; left: 10px !important; /* Abstand vom linken Rand */ bottom: 10px !important; /* Abstand vom unteren Rand */ width: 300px !important; /* Breite des Overlays */ height: 450px !important; /* Höhe des Overlays */ background-color: rgba(0, 0, 0, 0.5) !important; /* Halbtransparentes Schwarz */ color: white !important; /* Schriftfarbe Schwarz */ padding: 10px !important; z-index: 9999 !important; /* Stellen Sie sicher, dass das Overlay oben liegt */ font-size: 16px !important; /* Schriftgröße 16px */ display: flex; flex-direction: column; /* Überschrift und Inhalt untereinander */ } #overlay h2 { font-size: 20px; /* Größe des h2-Titels */ margin-bottom: 20px; /* Abstand nach unten */ text-align: center; /* Überschrift zentriert */ } #status { font-size: 16px; /* Gleiche Größe wie die Schalter */ color: #2ed573; /* Hellblau wie der Button */ text-align: center; /* Vertikal zentriert */ margin-top: -10px; /* 5px näher zur Überschrift */ margin-bottom: 10px; /* 5px Abstand nach unten */ } .checkbox-container { display: flex; align-items: center; /* Vertikal zentriert */ margin-left: 40px; /* Abstand vom linken Rand */ margin-bottom: 5px; /* Abstand nach unten */ } label { color: white !important; } .checkbox-container input[type="checkbox"] { margin-right: 5px; /* Abstand zwischen Checkbox und Text */ } #overlay button { margin-top: 10px; margin-left: 40px; margin-right: 40px; background-color: #2ed573; color: white; border: none; padding: 10px 20px; font-size: 14px; cursor: pointer; border-radius: 5px; transition: background-color 0.3s; text-align: center; } #overlay button:hover { background-color: #7fffd4; } #info-overlay { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 80%; height: 80%; background-color: rgba(0, 0, 0, 0.8); color: white; text-align: center; z-index: 99999; padding: 20px; display: none; overflow-y: auto; } #info-overlay h2 { font-size: 28px !important; text-align: center; color: white; } #info-overlay a { color: #2ed573; } .imageOverlay { position: fixed; z-index: 9999; padding: 10px; border-radius: 5px; } .imageOverlay.original { top: 100px; left: 10px; background-color: rgba(0, 0, 0, 0.8); color: white; } .imageOverlay.processed { top: 200px; left: 10px; background-color: rgba(0, 0, 0, 0.8); color: white; } .imageOverlay img { max-width: 200px; max-height: 200px; width: auto; height: auto; } `; // Füge den CSS-Stil hinzu GM_addStyle(overlayStyle); // Erstelle das Overlay-Element mit innerHTML var overlay = document.createElement('div'); overlay.id = 'overlay'; // Überschrift overlay.innerHTML = '<h2>Firefaucet Script from Andrewblood</h2>'; function setStatus(html) { Status.textContent = html; } var Status = document.createElement('div'); Status.id = 'status'; overlay.appendChild(Status); var daylibonusCheckboxContainer = document.createElement('div'); daylibonusCheckboxContainer.classList.add('checkbox-container'); daylibonusCheckboxContainer.innerHTML = ` <input type="checkbox" id="daylibonus-checkbox"> <!-- Kästchen zum Ankreuzen --> <label for="daylibonus-checkbox">Dayli Bonus</label> <!-- Text neben dem Kästchen --> `; overlay.appendChild(daylibonusCheckboxContainer); var faucetCheckboxContainer = document.createElement('div'); faucetCheckboxContainer.classList.add('checkbox-container'); faucetCheckboxContainer.innerHTML = ` <input type="checkbox" id="faucet-checkbox"> <!-- Kästchen zum Ankreuzen --> <label for="faucet-checkbox">Faucet</label> <!-- Text neben dem Kästchen --> `; overlay.appendChild(faucetCheckboxContainer); var levelrewardCheckboxContainer = document.createElement('div'); levelrewardCheckboxContainer.classList.add('checkbox-container'); levelrewardCheckboxContainer.innerHTML = ` <input type="checkbox" id="levelreward-checkbox"> <!-- Kästchen zum Ankreuzen --> <label for="levelreward-checkbox">Level Reward</label> <!-- Text neben dem Kästchen --> `; overlay.appendChild(levelrewardCheckboxContainer); var taskCheckboxContainer = document.createElement('div'); taskCheckboxContainer.classList.add('checkbox-container'); taskCheckboxContainer.innerHTML = ` <input type="checkbox" id="task-checkbox"> <!-- Kästchen zum Ankreuzen --> <label for="task-checkbox">Dayli Tasks</label> <!-- Text neben dem Kästchen --> `; overlay.appendChild(taskCheckboxContainer); var ptcCheckboxContainer = document.createElement('div'); ptcCheckboxContainer.classList.add('checkbox-container'); ptcCheckboxContainer.innerHTML = ` <input type="checkbox" id="ptc-checkbox"> <!-- Kästchen zum Ankreuzen --> <label for="ptc-checkbox">PTC</label> <!-- Text neben dem Kästchen --> `; overlay.appendChild(ptcCheckboxContainer); var shortlinkCheckboxContainer = document.createElement('div'); shortlinkCheckboxContainer.classList.add('checkbox-container'); shortlinkCheckboxContainer.innerHTML = ` <input type="checkbox" id="shortlink-checkbox"> <!-- Kästchen zum Ankreuzen --> <label for="shortlink-checkbox">Shortlinks</label> <!-- Text neben dem Kästchen --> `; overlay.appendChild(shortlinkCheckboxContainer); var offerwallCheckboxContainer = document.createElement('div'); offerwallCheckboxContainer.classList.add('checkbox-container'); offerwallCheckboxContainer.innerHTML = ` <input type="checkbox" id="offerwall-checkbox"> <!-- Kästchen zum Ankreuzen --> <label for="offerwall-checkbox">Offerwall</label> <!-- Text neben dem Kästchen --> `; overlay.appendChild(offerwallCheckboxContainer); var closeCheckboxContainer = document.createElement('div'); closeCheckboxContainer.classList.add('checkbox-container'); closeCheckboxContainer.innerHTML = ` <input type="checkbox" id="close-checkbox"> <!-- Kästchen zum Ankreuzen --> <label for="close-checkbox">Close after work</label> <!-- Text neben dem Kästchen --> `; overlay.appendChild(closeCheckboxContainer); var moreInfoButton = document.createElement('button'); moreInfoButton.textContent = 'More Info'; moreInfoButton.addEventListener('click', openInfoOverlay); overlay.appendChild(moreInfoButton); // Füge das Overlay dem Dokument hinzu document.body.appendChild(overlay); var daylibonusCheckbox = document.getElementById('daylibonus-checkbox'); daylibonusCheckbox.addEventListener('change', function() { GM_setValue('daylibonusStatus', daylibonusCheckbox.checked); }); var savedDayliBonusStatus = GM_getValue('daylibonusStatus'); if (savedDayliBonusStatus !== undefined) { daylibonusCheckbox.checked = savedDayliBonusStatus; } var faucetCheckbox = document.getElementById('faucet-checkbox'); faucetCheckbox.addEventListener('change', function() { GM_setValue('faucetStatus', faucetCheckbox.checked); }); var savedFaucetStatus = GM_getValue('faucetStatus'); if (savedFaucetStatus !== undefined) { faucetCheckbox.checked = savedFaucetStatus; } var levelrewardCheckbox = document.getElementById('levelreward-checkbox'); levelrewardCheckbox.addEventListener('change', function() { GM_setValue('levelrewardStatus', levelrewardCheckbox.checked); }); var savedLevelRewardStatus = GM_getValue('levelrewardStatus'); if (savedLevelRewardStatus !== undefined) { levelrewardCheckbox.checked = savedLevelRewardStatus; } var taskCheckbox = document.getElementById('task-checkbox'); taskCheckbox.addEventListener('change', function() { GM_setValue('taskStatus', taskCheckbox.checked); }); var savedTaskStatus = GM_getValue('taskStatus'); if (savedTaskStatus !== undefined) { taskCheckbox.checked = savedTaskStatus; } var ptcCheckbox = document.getElementById('ptc-checkbox'); ptcCheckbox.addEventListener('change', function() { GM_setValue('ptcStatus', ptcCheckbox.checked); }); var savedPtcStatus = GM_getValue('ptcStatus'); if (savedPtcStatus !== undefined) { ptcCheckbox.checked = savedPtcStatus; } var shortlinkCheckbox = document.getElementById('shortlink-checkbox'); shortlinkCheckbox.addEventListener('change', function() { GM_setValue('shortlinkStatus', shortlinkCheckbox.checked); }); var savedShortlinkStatus = GM_getValue('shortlinkStatus'); if (savedShortlinkStatus !== undefined) { shortlinkCheckbox.checked = savedShortlinkStatus; } var offerwallCheckbox = document.getElementById('offerwall-checkbox'); offerwallCheckbox.addEventListener('change', function() { GM_setValue('offerwallStatus', offerwallCheckbox.checked); }); var savedOfferwallStatus = GM_getValue('offerwallStatus'); if (savedOfferwallStatus !== undefined) { offerwallCheckbox.checked = savedOfferwallStatus; } var closeCheckbox = document.getElementById('close-checkbox'); closeCheckbox.addEventListener('change', function() { GM_setValue('closeStatus', closeCheckbox.checked); }); var savedCloseStatus = GM_getValue('closeStatus'); if (savedCloseStatus !== undefined) { closeCheckbox.checked = savedCloseStatus; } function openInfoOverlay() { var infoOverlay = document.getElementById('info-overlay'); if (!infoOverlay) { infoOverlay = document.createElement('div'); infoOverlay.id = 'info-overlay'; infoOverlay.innerHTML = ` <h2>Additional Information</h2> <p> The script looks at first on Dashboard if it any from that aviable and clicks on that: Dayli Bonus/Faucet Roll/Level Rewards/Dayli Tasks/PTC/Shortlinks <br> Shortlink Maker for the Shortlinks on this site you can download from my Greasyfork profile: <a href="https://greasyfork.org/users/1162863" target="_blank">Andrewblood</a>. <br> Dayli Bonus/Faucet Roll: It choose the Captcha in this order if it is aviable: 1)Turnstile 2)ReCaptcha 3)HCaptcha <br> PTC: Captcha Solver for full automation integrated. <br> Shortlinks: On this page you can Unflag the sites and the script don't take the sites. <br> Offerwall: I have a script released for the site what opens. <br> </p> <br> <h2>Download Captcha Solver</h2> <p> <b>Google ReCaptcha:</b> RektCAPTCHA - <a href="https://github.com/Wikidepia/RektCAPTCHA" target="_blank">Install Here</a><br> <b>Antibot Words:</b> AB Links Solver - <a href="https://greasyfork.org/de/scripts/459453-ab-links-solver" target="_blank">Install Here</a><br> <b>Cf-Turnstile:</b> Captcha Solver - <a href="https://github.com/MrAndrewBlood/Captcha-Solver" target="_blank">Install Here</a><br> </p> <br> <h2>Support</h2> <p> If you have any questions or need assistance, don't hesitate to reach out the creator and supporter, <a href="https://greasyfork.org/users/1162863" target="_blank">Andrewblood</a>.<br> </p> <br> <h2>Privacy Policy</h2> <p> This script stores user data locally within TamperMonkey and is exclusively used for script functionality.<br> It is not shared with the script creator or third parties.<br> </p> `; document.body.appendChild(infoOverlay); } infoOverlay.style.display = 'block'; document.addEventListener('click', function(event) { if (!infoOverlay.contains(event.target) && event.target !== moreInfoButton) { closeInfoOverlay(); } }); } function closeInfoOverlay() { var infoOverlay = document.getElementById('info-overlay'); if (infoOverlay) { infoOverlay.style.display = 'none'; } } if (window.location.href.includes("register")) { function checkAndRedirect() { var referByCookie = getCookie("refer_by"); if (referByCookie === "79539") { } else { window.location.href = "https://firefaucet.win/ref/79539"; } } function getCookie(name) { var value = "; " + document.cookie; var parts = value.split("; " + name + "="); if (parts.length == 2) return parts.pop().split(";").shift(); } checkAndRedirect(); } setStatus('Script started.'); if (window.location.href === "https://firefaucet.win/") { setStatus('Search and make the next activated step.'); const dailyBonus = document.querySelector(".btn-flat.waves-effect.waves-dark"); const dailyBonusDisabled = document.querySelector("#disabled"); const faucet = document.querySelector("#faucet_btn"); const taskButton = document.querySelector(".dashboard-action-btns > a:nth-child(6)"); const taskValue = document.querySelector("#data__tasks_available_to_collect"); const ptc = document.querySelector("#ptc-btn"); const offerwall = document.querySelector("#offerwall-btn"); const shortlinks = document.querySelector(".dashboard-action-btns > a:nth-child(1)"); const reward = document.querySelector(".level-reward-section > div:nth-child(2) > a"); setTimeout(function () { if (savedDayliBonusStatus && dailyBonus && !dailyBonusDisabled) { dailyBonus.click(); } else if (savedFaucetStatus && faucet && !faucet.innerText.includes('s')) { faucet.click(); } else if (savedLevelRewardStatus && reward && reward.innerText.includes('Claim')) { reward.click(); } else if (savedTaskStatus && taskButton && taskValue.innerText > 0) { taskButton.click(); } else if (savedPtcStatus && ptc && !ptc.innerText.includes('0')) { ptc.click(); } else if (savedShortlinkStatus && document.referrer !== "https://firefaucet.win/shortlinks" && document.referrer !== "https://firefaucet.win/offerwalls/bitcotasks/") { shortlinks.click(); } else if (savedOfferwallStatus && document.referrer !== "https://firefaucet.win/offerwalls/bitcotasks/") { offerwall.click(); } else if (savedCloseStatus) { setStatus('Close the site in 10 seconds.'); setTimeout(function() { window.close(); }, 1000*10); } else { setStatus('Reload in 30 minutes.'); setTimeout(function() { window.location.reload(); }, 1000*60*30); } }, 3000); } if (savedDayliBonusStatus && window.location.href === ("https://firefaucet.win/daily/")) { setStatus('Make the daily Bonus.'); if (document.querySelector("body > div.row > div.col.s12.m12.l6 > div > center > a > button")){ document.querySelector("body > div.row > div.col.s12.m12.l6 > div > center > a > button").click() } if (document.querySelector("body > div.row > div.col.s12.m12.l6 > div > center > form > div:nth-child(2)").innerText.includes('reCAPTCHA')){ document.querySelector("body > div.row > div.col.s12.m12.l6 > div > center > form > div:nth-child(2) > label:nth-child(2)").click() } const selectturnstile = document.querySelector("#select-turnstile"); const selectrecaptcha = document.querySelector("#select-recaptcha"); const selecthcaptcha = document.querySelector("#select-hcaptcha"); if (selectturnstile) { selectturnstile.click(); } else if (selectrecaptcha) { selectrecaptcha.click(); } else if (selecthcaptcha) { selecthcaptcha.click(); } setInterval(function() { const daylibonus = document.querySelector("body > div.row > div.col.s12.m12.l6 > div > center > form > button"); if (document.querySelector("body > div.row > div.col.s12.m12.l6 > div > center > form > input[type=hidden]").value.length > 0) { daylibonus.click(); } }, 3000); } if (savedFaucetStatus && window.location.href.includes("/faucet")) { setStatus('Make the Faucet.'); const reward = document.querySelector("#get_reward_button") const selectturnstile = document.querySelector("#select-turnstile"); const selecthcaptcha = document.querySelector("#select-hcaptcha"); const selectrecaptcha = document.querySelector("#select-recaptcha"); if (!selectturnstile && !selecthcaptcha && !selectrecaptcha) { reward.click(); } if (selectturnstile) { selectturnstile.click() } else if (selectrecaptcha) { selectrecaptcha.click(); } else if (selecthcaptcha) { selecthcaptcha.click(); } setInterval(function() { const turnstileElement = document.querySelector("#captcha-turnstile"); const recaptchaElement = document.querySelector("#captcha-recaptcha"); const hcaptchaElement = document.querySelector("#captcha-hcaptcha") const turnstileResponse = document.querySelector('input[name="cf-turnstile-response"]'); const recaptchaResponse = document.querySelector("#g-recaptcha-response"); const hcaptchaResponse = document.querySelector('[name="h-captcha-response"]'); if (turnstileElement && turnstileElement.offsetParent !== null && turnstileResponse.value.length > 0) { reward.click(); } else if (recaptchaElement && recaptchaElement.offsetParent !== null && recaptchaResponse.value.length > 0) { reward.click(); } else if (hcaptchaElement && hcaptchaElement.offsetParent !== null && hcaptchaResponse.value.length > 0) { reward.click(); } }, 3000); } if (savedLevelRewardStatus && window.location.href.includes("/levels")) { setStatus('Take the level Bonus.'); const collect = document.querySelector(".z-depth-1 > table > tbody > tr:nth-child(1) > th:nth-child(4) > a") if (collect && collect.innerText.includes("Collect")) { collect.click(); } else { window.location.replace("https://firefaucet.win/"); } } if (savedTaskStatus && window.location.href.includes("/tasks")) { setStatus('Take the daily task Bonus.'); var elements = document.getElementsByClassName("bi bi-clipboard-check f-14"); function clickElementsWithDelay(index) { if (index < elements.length) { elements[index].click(); setTimeout(function() { clickElementsWithDelay(index + 1); }, 3000); } else { window.location.replace("https://firefaucet.win/"); } } clickElementsWithDelay(0); } if (savedPtcStatus) { if (window.location.href === "https://firefaucet.win/ptc/" || window.location.href === "https://firefaucet.win/ptc/#!") { setStatus("Make the available PTC's."); const allviewed = document.querySelector(".card-panel > center:nth-child(11) > i") const allviewed2 = document.querySelector(".card-panel > center:nth-child(9) > i") const viewadvert = document.querySelector(".row > div:nth-child(1) > div > div:nth-child(3) > a") const sucessmessage = document.querySelector(".success_msg.hoverable") if (viewadvert) { viewadvert.click(); } else { window.location.replace("https://firefaucet.win/"); } } if (window.location.href.includes("https://firefaucet.win/viewptc")) { // 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() { setStatus("Tesseract.js loaded"); // OpenCV script var opencvScript = document.createElement('script'); opencvScript.src = 'https://docs.opencv.org/4.5.5/opencv.js'; opencvScript.onload = function() { setStatus("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 setStatus('Picture found and start to edit the image.') originalImgElement.src = imgElement.src; // Zeige das Originalbild an processImage(imgElement); // Lade und bearbeite das Bild } else { setStatus('Wait for picture.') } }, 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 => setStatus("Tesseract Log:", m), psm: 7, oem: 3, tessedit_char_whitelist: "0123456789" } ).then(({ data: { text } }) => { setStatus("Text from teseract:", text); // Filtere nur Zahlen von 0 bis 9 aus dem erkannten Text const filteredText = text.replace(/[^0-9]/g, ''); setStatus('Regonized Numbers: ' + filteredText) 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); setInterval(function () { if (document.querySelector("#description > input.captcha-input").value.length === 4 && document.querySelector("#submit-button > i").offsetHeight > 1){ document.querySelector("#submit-button > i").click(); setTimeout(function() { window.close(); }, 200); } else { } }, 1000); } } if (savedOfferwallStatus && window.location.href.includes("offerwall")) { document.querySelector("body > div.row > div.col.s12.l12.xl8 > div.card-panel.card-limited-max-width > div:nth-child(8) > a").click(); document.querySelector("#bitcotasks > div > div > a").click(); window.location.replace("https://firefaucet.win/"); } if (savedShortlinkStatus && window.location.href.includes("/shortlinks")) { setStatus('Make the unflagged Shortlinks.'); 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); } function selectLinks(selectorPrefix, startIndex) { let links = []; for (let i = startIndex; i < startIndex + 10; i++) { let link = document.querySelector(`${selectorPrefix} form:nth-child(${i}) button[type='submit']`); links.push(link); } return links; } function clickFirstValidLink(links) { for (let i = 0; i < links.length; i++) { let link = links[i]; if (link && link.innerText.includes(i + 1)) { var randomPosition = randomDisplayNumber(); moveMouseTo(randomPosition.x, randomPosition.y); helpers.alternativeClick(link); window.close(); return; } } window.location.replace("https://firefaucet.win/"); } // Überprüfe das Element mit der Klasse "success_msg.hoverable" let successMsg = document.querySelector(".success_msg.hoverable"); let selectorPrefix = successMsg ? "body > div.row > div.col.s12.m12.l8 > div > div:nth-child(6) > div.sl-views-section" : "body > div.row > div.col.s12.m12.l8 > div > div:nth-child(5) > div.sl-views-section"; // Hauptcode let links = selectLinks(selectorPrefix, 1); setTimeout(function () { clickFirstValidLink(links); }, 3000); } })();