CryptoFuture Multi-Faucet Rotator

Automates CryptoFuture faucet flow with proper rotation at 125 claims

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         CryptoFuture Multi-Faucet Rotator
// @namespace    https://tampermonkey.net/
// @version      1.4
// @author       Rubystance
// @license      MIT
// @match        https://cryptofuture.co.in/*
// @grant        none
// @description Automates CryptoFuture faucet flow with proper rotation at 125 claims
// ==/UserScript==

(function () {
    'use strict';

    const emailAddress = 'YOUR_FAUCETPAY_EMAIL_HERE'; // << YOUR_FAUCETPAY_EMAIL
    const checkInterval = 2000;
    const faucets = ['BTC','TRX','SOL','USDT','BNB','BCH','DGB','ETH','FEY','ZEC','PEPE','LTC','DOGE'];
    const MAX_CLAIMS = 125;

    let submitClicked = false;
    let reloaded = false;

    let currentIndex = parseInt(localStorage.getItem('cf_rotator_index') || '0', 10);

    function log(msg){ console.log('[CF Rotator]', msg); }

    function realClick(el){
        if(!el) return;
        el.dispatchEvent(new MouseEvent('mousedown', {bubbles:true}));
        el.dispatchEvent(new MouseEvent('mouseup', {bubbles:true}));
        el.dispatchEvent(new MouseEvent('click', {bubbles:true}));
    }

    function fillEmail(){
        const emailInput = document.querySelector('input[name="wallet"]');
        if(emailInput && !emailInput.value){
            emailInput.value = emailAddress;
            log('Email automatically filled');
        }
    }

    function captchaSolved(){
        const t = document.querySelector('.iconcaptcha-modal__body-title');
        return t && t.textContent.includes('Verification complete');
    }

    function trySubmit(){
        if(submitClicked) return;
        if(captchaSolved()){
            const btn = document.getElementById('subbutt') || document.querySelector('button[type="submit"]');
            if(btn){
                submitClicked = true;
                log('CAPTCHA solved → clicking Submit/Login');
                realClick(btn);
            }
        }
    }

    function clickFaucet(){
        const faucetLink = document.querySelector('a[href*="/earn"]');
        if(faucetLink){
            log('Clicking Faucet');
            realClick(faucetLink);
        }
    }

    function clickClaim(){
        const faucet = faucets[currentIndex];
        const claimBtn = document.querySelector(`a[href*="/faucet/currency/${faucet}"]`);
        if(claimBtn){
            log(`Clicking Claim for ${faucet}`);
            realClick(claimBtn);
        }
    }

    function getClaimCount(coin){
        return parseInt(localStorage.getItem('cf_claim_' + coin) || '0', 10);
    }

    function incClaimCount(coin){
        localStorage.setItem('cf_claim_' + coin, getClaimCount(coin) + 1);
    }

    function rotateFaucet(reason){
        const coin = faucets[currentIndex];
        log(`Rotating from ${coin} (${reason})`);

        currentIndex = (currentIndex + 1) % faucets.length;
        localStorage.setItem('cf_rotator_index', currentIndex);

        submitClicked = false;
        reloaded = false;

        setTimeout(() => {
            location.href = '/dashboard';
        }, 1500);
    }

    function checkDailyLimitAndRotate(){
        const alert = document.querySelector('div.alert.alert-danger.text-center');
        if(alert && alert.textContent.includes('Daily claim limit')){
            rotateFaucet('site alert');
        }
    }

    function checkClaimNow(){
        if(reloaded) return;
        const claimNow = document.querySelector('h5.next-button a.btn.btn-primary');
        if(claimNow){
            reloaded = true;

            const coin = faucets[currentIndex];
            incClaimCount(coin);

            const count = getClaimCount(coin);
            log(`Claim ${count}/${MAX_CLAIMS} for ${coin}`);

            if(count >= MAX_CLAIMS){
                rotateFaucet('max claims reached');
                return;
            }

            log('Reloading for next claim');
            setTimeout(()=> location.reload(), 2000);
        }
    }

    setInterval(()=>{
        fillEmail();
        trySubmit();

        const href = window.location.href;
        if(href.includes('/dashboard')){
            clickFaucet();
        }
        if(href.includes('/earn')){
            clickClaim();
        }

        checkDailyLimitAndRotate();
        checkClaimNow();
    }, checkInterval);

})();