在您安裝前,Greasy Fork镜像希望您了解本腳本包含“可能不受歡迎的功能”,可能幫助腳本的作者獲利,而不能給你帶來任何收益。
作者從這份腳本獲得佣金, 例如透過重寫連結或提供優惠券代碼以加入推薦或附屬代碼
腳本的作者解釋:
Referral-Link is in this Script integrated.
Dayli Bonus/Faucet Roll/Level Rewards/Dayli Tasks/Shortlinks/PTC
- // ==UserScript==
- // @name [Premium] Firefaucet.win
- // @tag Faucet
- // @namespace https://gf.qytechs.cn/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://gf.qytechs.cn/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://gf.qytechs.cn/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://gf.qytechs.cn/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);
- }
- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址