Cryptofuture auto faucet

Automatically Login and Click Faucet on Cryptofuture

// ==UserScript==
// @name         Cryptofuture auto faucet
// @namespace    bekerja pada tampermonkey maupun violentmonkey
// @version      0.6
// @description  Automatically Login and Click Faucet on Cryptofuture
// @author       Ojo Ngono
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_addStyle
// @grant        GM_registerMenuCommand
// @require      https://update.greasyfork.org/scripts/439099/1203718/MonkeyConfig%20Modern%20Reloaded.js
// @match        https://cryptofuture.co.in/*
// @license      Copyright OjoNgono
// @antifeature  referral-link Directs to a referral link when not logged in
// ==/UserScript==

const cfg = new MonkeyConfig({
    title: 'Input Email Faucetpay:',
    menuCommand: true,
    params: {
        Email: {
            label: "Email Faucetpay",
            type: "text",
            default: ''
        },
    }
});

(function() {
    'use strict';
    window.addEventListener('load', () => {
        startProcess();
    });

    function startProcess() {
        const email = cfg.get('Email');
        if (!email || email.trim() === '') {
            enforceLogoutWithWarning();
            return;
        } else {
            enforceReferralUrl();
            setTimeout(() => {
                if (!isLoggedIn()) {
                    clickLoginJoinButton();
                } else {
                    fillEmailField(email);
                    rotateUrls();
                    enforceReferralUrl();
                    observeTurnstileAndClaim();
                }
            }, 1000);
        }
    }

    function isLoggedIn() {
        const logoutMenuItem = document.querySelector('a[href="https://cryptofuture.co.in/auth/logout"]');
        const alertMessage = document.querySelector('.alert.alert-info.text-center');
        return logoutMenuItem !== null || alertMessage !== null;
    }

    function enforceLogoutWithWarning() {
        if (isLoggedIn()) {
            alert('Please enter your email in the settings menu before using MY SCRIPT.');
            const logoutButton = document.querySelector('a[href="https://cryptofuture.co.in/auth/logout"]');
            if (logoutButton) {
                logoutButton.click();
            } else {
                window.location.replace("https://cryptofuture.co.in/auth/logout");
            }
        }
    }

    function enforceReferralUrl() {
        const email = cfg.get('Email');
        if (!isLoggedIn() && email) {
            const currentUrl = window.location.href;
            const referralUrl = "https://cryptofuture.co.in/?r=43940";
            if (currentUrl === "https://cryptofuture.co.in/" && !currentUrl.includes("?r=43940")) {
                window.location.replace(referralUrl);
            }
        }
    }

    function clickLoginJoinButton() {
    const loginButton = document.querySelector('.btn.btn-success.btn-lg[data-bs-target="#claimModal"]');
    if (loginButton) {
        loginButton.click();
    }
    setTimeout(() => {
        const email = cfg.get('Email');
        fillEmailField(email);
        observeTurnstileAndClaim();
    }, 1000);
}


    function fillEmailField(email) {
        const emailInput = document.querySelector('#InputEmail');
        if (emailInput) {
            emailInput.value = email;
            emailInput.dispatchEvent(new Event('input', { bubbles: true }));
        }
    }

    function observeTurnstileAndClaim() {
    const turnstileObserver = new MutationObserver(() => {
        const turnstileResponse = document.querySelector('input[name="cf-turnstile-response"]');
        const claimNowButton = document.querySelector('#subbutt');
        const modalSubmitButton = document.querySelector('.btn.btn-primary.btn-user.btn-block');

        if (turnstileResponse && turnstileResponse.value !== "") {
            if (claimNowButton) {
                claimNowButton.scrollIntoView({ behavior: 'smooth', block: 'center' });
                claimNowButton.click();
            }
            if (modalSubmitButton) {
                modalSubmitButton.scrollIntoView({ behavior: 'smooth', block: 'center' });
                modalSubmitButton.click();
            }
            turnstileObserver.disconnect();
        }
    });

    const turnstileInput = document.querySelector('input[name="cf-turnstile-response"]');
    if (turnstileInput) {
        turnstileObserver.observe(turnstileInput, { attributes: true, attributeFilter: ['value'] });
    }

    setTimeout(() => {
        const turnstileResponse = document.querySelector('input[name="cf-turnstile-response"]');
        const claimNowButton = document.querySelector('#subbutt');
        const modalSubmitButton = document.querySelector('.btn.btn-primary.btn-user.btn-block');

        if (turnstileResponse && turnstileResponse.value === "" && claimNowButton && claimNowButton.innerText.includes('Claim Now')) {
            claimNowButton.click();
        }
        if (modalSubmitButton) {
            modalSubmitButton.click();
        }
    }, 30000);
}


    const urls = [
        "https://cryptofuture.co.in/faucet/currency/ltc",
        "https://cryptofuture.co.in/faucet/currency/doge",
        "https://cryptofuture.co.in/faucet/currency/usdt",
        "https://cryptofuture.co.in/faucet/currency/dgb",
        "https://cryptofuture.co.in/faucet/currency/sol",
        "https://cryptofuture.co.in/faucet/currency/trx",
        "https://cryptofuture.co.in/faucet/currency/bnb",
        "https://cryptofuture.co.in/faucet/currency/dash",
        "https://cryptofuture.co.in/faucet/currency/eth",
        "https://cryptofuture.co.in/faucet/currency/fey",
        "https://cryptofuture.co.in/faucet/currency/sol",
        "https://cryptofuture.co.in/faucet/currency/zec"
    ];
    let currentIndex = parseInt(localStorage.getItem('currentIndex')) || 0;

    const rotateUrls = () => {
        if (window.location.href === "https://cryptofuture.co.in/dashboard") {
            window.location.href = urls[currentIndex];
            currentIndex = (currentIndex + 1) % urls.length;
            localStorage.setItem('currentIndex', currentIndex);
        }
    };

    function checkForMessage() {
        const swalPopup = document.querySelector('.swal2-popup.swal2-show');
        if (swalPopup) {
            const successMessageContainer = swalPopup.querySelector('.swal2-html-container');
            if (successMessageContainer) {
                const successMessage = successMessageContainer.innerText || "";
                const successIndicator = "has been sent to your FaucetPay account!";
                const claimSuccessIndicator = "Success!";
                const insufficientFundsMessage = "The faucet does not have sufficient funds for this transaction.";
                if (successMessage.includes(successIndicator) || successMessage.includes(claimSuccessIndicator)) {
                    window.location.href = "https://cryptofuture.co.in/dashboard";
                } else if (successMessage.includes(insufficientFundsMessage)) {
                    window.location.href = "https://cryptofuture.co.in/dashboard";
                }
            }
        }
    }

    setInterval(checkForMessage, 1000);
})();