Greasy Fork 支持简体中文。

XRP Auto

Faucet automatic collection 24 hours a day

// ==UserScript==
// @name         XRP Auto
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  Faucet automatic collection 24 hours a day
// @author       ALEN
// @icon         https://i.imgur.com/tnqS60o.jpeg
// @match        https://freexrp.in/*
// @grant        none
// ==/UserScript==
 
(function () {
    'use strict';

    
    const VERIFY_INPUT_SELECTOR = 'input[name="cf-turnstile-response"]';
    const CLAIM_BUTTON_SELECTOR = 'button';
    const CLAIM_BUTTON_TEXT = 'Claim';
    const TIMER_CARD_SELECTOR = '.flip-countdown-card-sec .card__top'; 
    const CHECK_INTERVAL = 10000; 
    const MAX_RETRIES = 10; 
    const REFRESH_THRESHOLD = 5; 
    let retries = 0; 

    /**
     * 獲取當前倒計時數值
     * @returns {number} 返回倒計時剩餘的秒數,若找不到則返回 -1
     */
    function getTimerValue() {
        const timerCards = document.querySelectorAll(TIMER_CARD_SELECTOR);
        if (timerCards.length > 0) {
            const timerValue = Array.from(timerCards)
                .map(card => parseInt(card.textContent.trim(), 10)) 
                .join('');
            return parseInt(timerValue, 10) || -1; 
        }
        console.warn('未找到計時器,默認為完成。');
        return -1; 
    }

    /**
     * 檢查驗證是否完成
     * @returns {boolean} 是否驗證完成
     */
    function isVerificationComplete() {
        const verifyInput = document.querySelector(VERIFY_INPUT_SELECTOR);
        return verifyInput && verifyInput.value.trim() !== '';
    }

    /**
     * 嘗試點擊「Claim」按鈕
     * @returns {boolean} 是否成功找到並點擊按鈕
     */
    function clickClaimButton() {
        const buttons = document.querySelectorAll(CLAIM_BUTTON_SELECTOR);
        for (const button of buttons) {
            if (button.textContent.trim().toUpperCase() === CLAIM_BUTTON_TEXT.toUpperCase()) {
                console.log('✅ 驗證通過!正在點擊 Claim 按鈕...');
                button.click();
                retries = 0; 
                return true;
            }
        }
        console.warn('⚠️ Claim 按鈕未找到,將稍後重試...');
        return false;
    }

    /**
     * 主流程:檢查計時器、驗證並執行操作
     */
    function checkVerificationAndClick() {
        const timerValue = getTimerValue();

        if (timerValue > 0) {
            if (timerValue <= REFRESH_THRESHOLD) {
                console.log(`♻️ 剩餘${timerValue}秒,刷新網頁...`);
                location.reload(); 
                return;
            }
            console.log(`⏳ 倒計時中,剩餘時間:${timerValue} 秒`);
            return; 
        }

        if (isVerificationComplete()) {
            console.log('🔍 驗證完成,準備觸發點擊動作...');
            const success = clickClaimButton();
            if (success) {
                console.log('🎉 操作成功!');
            } else if (retries >= MAX_RETRIES) {
                console.error('❌ 多次重試後仍未找到 Claim 按鈕,停止操作。');
                clearInterval(intervalId); 
            } else {
                retries++;
            }
        } else {
            console.log('⌛ 驗證尚未完成,等待中...');
        }
    }

    // 啟動定時器
    const intervalId = setInterval(checkVerificationAndClick, CHECK_INTERVAL);
})();