LinksFly Auto Flow

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

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==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);
    }

})();