Free.in 24/7 video-in-description (ON)

This script claims all Free.in.io faucets one by one video-in-description (Turnstile)

// ==UserScript==
// @name         Free.in 24/7 video-in-description (ON)
// @namespace    http://tampermonkey.net/
// @version      2.9
// @description  This script claims all Free.in.io faucets one by one video-in-description (Turnstile)
// @author       👽
// @match        https://www.yahoo.com/
// @match        https://freeshib.in/faucet*
// @match        https://freebnb.in/faucet*
// @match        https://freetoncoin.in/faucet*
// @match        https://freetron.in/faucet*
// @match        https://freesui.in/faucet*
// @match        https://freexrp.in/faucet*
// @match        https://usdpick.io/faucet*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
  'use strict';

  const FLOW = [
    'https://freeshib.in/faucet',
    'https://freebnb.in/faucet',
    'https://freetoncoin.in/faucet',
    'https://freetron.in/faucet',
    'https://freesui.in/faucet',
    'https://freexrp.in/faucet',
    'https://usdpick.io/faucet',
    'https://www.yahoo.com/'
  ];

  const PAGE_LOAD_DELAY = 5000;
  const CLAIM_DELAY_AFTER_SOLVE = 2000;
  const RELOAD_DELAY = 15000;
  const CHECK_INTERVAL = 2000;
  const WAIT_IF_TIMER_PRESENT = 60000;

  let claimClicked = false;
  let skipWaiting = false;

  const currentURL = window.location.href.split('?')[0];
  console.log('⏳ Script starting...');

  setTimeout(() => {
    if (currentURL === 'https://www.yahoo.com/') {
      console.log('🚀 Starting faucet sequence from Yahoo...');
      window.location.href = FLOW[0];
      return;
    }

    if (!FLOW.includes(currentURL)) {
      console.log('❓ Unknown page. Redirecting to first faucet.');
      window.location.href = FLOW[0];
      return;
    }

    // Check for timer message
    const timerText = document.body.innerText || '';
    if (timerText.includes('Please wait until the clock stops.')) {
      console.log('⏳ "Please wait until the clock stops." detected. Waiting 60 seconds before skipping...');
      if (!skipWaiting) {
        skipWaiting = true;
        setTimeout(() => {
          console.log('⏭️ Time up. Skipping to next faucet.');
          moveToNext();
        }, WAIT_IF_TIMER_PRESENT);
      }
      return;
    }

    if (!isTurnstileSolved()) {
      console.log('❌ Turnstile not solved yet. Waiting...');
      waitUntilTurnstileSolved(() => {
        console.log('✅ Turnstile solved. Waiting 2 seconds before clicking claim...');
        setTimeout(() => {
          waitForClaimButtonAndClick(() => {
            moveToNext();
          });
        }, CLAIM_DELAY_AFTER_SOLVE);
      });
      return;
    }

    // If Turnstile is already solved
    waitForClaimButtonAndClick(() => {
      moveToNext();
    });

  }, PAGE_LOAD_DELAY);

  function isTurnstileSolved() {
    const input = document.querySelector('input[name="cf-turnstile-response"]');
    return input && input.value && input.value.trim().length > 0;
  }

  function waitUntilTurnstileSolved(callback) {
    if (isTurnstileSolved()) {
      callback();
    } else {
      setTimeout(() => waitUntilTurnstileSolved(callback), CHECK_INTERVAL);
    }
  }

  function findClaimButton() {
    const buttons = document.querySelectorAll('button');
    for (const btn of buttons) {
      if (
        btn.textContent.trim().toLowerCase() === 'claim' &&
        !btn.disabled &&
        btn.offsetParent !== null
      ) {
        return btn;
      }
    }
    return null;
  }

  function waitForClaimButtonAndClick(callback) {
    if (claimClicked) return;
    const btn = findClaimButton();

    if (btn) {
      if (!btn.disabled) {
        console.log('🚀 Clicking Claim button...');
        claimClicked = true;
        btn.click();
        setTimeout(callback, RELOAD_DELAY);
      } else {
        console.log('⏳ Claim button found but disabled. Waiting...');
        setTimeout(() => waitForClaimButtonAndClick(callback), CHECK_INTERVAL);
      }
    } else {
      console.log('⏳ Waiting for Claim button to appear...');
      setTimeout(() => waitForClaimButtonAndClick(callback), CHECK_INTERVAL);
    }
  }

  function getNextTarget(current) {
    const idx = FLOW.indexOf(current);
    return idx >= 0 && idx < FLOW.length - 1 ? FLOW[idx + 1] : null;
  }

  function moveToNext() {
    const nextTarget = getNextTarget(currentURL);
    if (nextTarget) {
      console.log(`➡️ Redirecting to next faucet: ${nextTarget}`);
      window.location.href = nextTarget;
    } else {
      console.log('✅ Completed all faucets. Returning to Yahoo...');
      window.location.href = 'https://www.yahoo.com/';
    }
  }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址