LinksFly Auto Flow

Autofill wallet, wait for IconCaptcha & Cloudflare Turnstile solve, then continue

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

// ==UserScript==
// @name         LinksFly Auto Flow
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  Autofill wallet, wait for IconCaptcha & Cloudflare Turnstile solve, then continue
// @author       Rubystance
// @license      MIT
// @match        https://linksfly.link/*
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    const WALLET_EMAIL = "YOUR_FAUCETPAY_EMAIL_HERE"; // << YOUR_FAUCETPAY_EMAIL
    const REFERRAL_LINK = "https://linksfly.link/?r=19456";

    function waitForElement(selector, callback) {
        const observer = new MutationObserver(() => {
            const el = document.querySelector(selector);
            if (el) {
                observer.disconnect();
                callback(el);
            }
        });
        observer.observe(document.body, { childList: true, subtree: true });
    }

    function autofillWallet() {
        const input = document.querySelector('input[name="wallet"]');
        if (input && !input.value) {
            input.value = WALLET_EMAIL;
            input.dispatchEvent(new Event('input', { bubbles: true }));
        }
    }

    function waitForIconCaptchaSolved() {
        const observer = new MutationObserver(() => {
            const solved = document.querySelector('.iconcaptcha-success');
            if (solved) {
                observer.disconnect();
                const loginBtn = document.querySelector('button[type="submit"]');
                if (loginBtn) {
                    loginBtn.click();
                }
            }
        });
        observer.observe(document.body, { childList: true, subtree: true });
    }

    function clickClaimDOGE() {
        const dogeLink = document.querySelector('a[href*="currency=DOGE"]');
        if (dogeLink) {
            dogeLink.click();
        }
    }

    const url = location.href;

    if (url === "https://linksfly.link/" || url.includes("/login")) {
        if (!url.includes("?r=")) {

            window.location.href = REFERRAL_LINK;
        } else {
            autofillWallet();
            waitForIconCaptchaSolved();
        }
    }

    if (url.includes("/app/dashboard")) {
        waitForElement('a[href*="currency=DOGE"]', clickClaimDOGE);
    }

    if (url.includes("/app/faucet?currency=DOGE")) {
        const checkTurnstile = setInterval(() => {
            const token =
                document.querySelector('input[name="cf-turnstile-response"]') ||
                document.querySelector('textarea[name="cf-turnstile-response"]');

            if (token && token.value && token.value.length > 20) {
                const btn = document.querySelector('button.claim-button.step4');
                if (btn) btn.click();
                clearInterval(checkTurnstile);
            }
        }, 1000);
    }

})();