// ==UserScript== // @name X-Pick Auto ROLL // @version 1.2 // @description Automatically switches captcha type to Turnstile and clicks "ROLL" when solved, for *pick faucets // @author Coraxdevil // @match *://litepick.io/faucet.php // @match *://tronpick.io/faucet.php // @match *://dogepick.io/faucet.php // @match *://solpick.io/faucet.php // @match *://bnbpick.io/faucet.php // @match *://bchpick.io/faucet.php // @match *://tonpick.game/faucet.php // @match *://suipick.io/faucet.php // @match *://polpick.io/faucet.php // @license MIT // @grant none // @namespace https://greasyfork.org/users/1630541 // ==/UserScript== (function () { 'use strict'; const log = (...args) => console.log('[AutoROLL]', ...args); // === Options === const POLL_INTERVAL = 2000; const SWITCH_INTERVAL = 3000; const SWITCH_MAX_ATTEMPTS = 20; const RELOAD_AFTER_CLICK = 15000; const FALLBACK_RELOAD = 5 * 60 * 1000; let switched = false; let clicked = false; let switchAttempts = 0; let lastSwitchAt = 0; let switchPending = false; function isCaptchaResolved() { const input = document.querySelector('input[name="cf-turnstile-response"]'); return !!(input && input.value && input.value.trim().length > 0); } function isTurnstileActive() { return !!document.querySelector('input[name="cf-turnstile-response"]') || !!document.querySelector('iframe[src*="challenges.cloudflare.com"]'); } function tryChangeCaptchaType() { if (switched) return true; if (switchPending) return false; if (isTurnstileActive()) { log("Turnstile is already active."); switched = true; return true; } if (switchAttempts >= SWITCH_MAX_ATTEMPTS) { log("Max switch attempts reached. Reloading page."); location.reload(); return false; } switchAttempts++; log(`Switch attempt ${switchAttempts}/${SWITCH_MAX_ATTEMPTS}`); // --- Метод 1: нативный to "${targetOpt.text || targetOpt.value}".`); select.value = targetOpt.value; select.dispatchEvent(new Event('change', { bubbles: true })); return false; } if (targetOpt && select.value === targetOpt.value) { return false; } } const wrapper = document.querySelector("#faucet_claim > div.form__input-wrapper > div"); if (wrapper) { log("Opening custom captcha dropdown."); wrapper.click(); switchPending = true; setTimeout(() => { switchPending = false; const option = document.querySelector("#select_captcha > option:nth-child(2)") || document.querySelector("#select_captcha > li:nth-child(2)") || document.querySelector("#select_captcha > div:nth-child(2)") || document.querySelector("#select_captcha > *:nth-child(2)"); if (option) { log("Clicking second option (assumed Turnstile)."); option.click(); if (select && select.tagName === 'SELECT') { select.dispatchEvent(new Event('change', { bubbles: true })); } } else { log("Second option not found in dropdown."); } }, 400); return false; } log("Captcha selector not found."); return false; } function tryClickRollButton() { if (clicked) return true; const button = document.querySelector("#process_claim_hourly_faucet"); if (!button) { log("ROLL! button not found."); return false; } if (isCaptchaResolved() && !button.disabled && button.offsetParent !== null) { log("CAPTCHA solved. Clicking ROLL!"); button.click(); clicked = true; return true; } return false; } function poll() { if (clicked) return; const now = Date.now(); if (!switched && !switchPending && now - lastSwitchAt >= SWITCH_INTERVAL) { lastSwitchAt = now; tryChangeCaptchaType(); } if (tryClickRollButton()) { setTimeout(() => location.reload(), RELOAD_AFTER_CLICK); } } function start() { log("Starting AutoROLL watcher."); lastSwitchAt = Date.now(); tryChangeCaptchaType(); setInterval(poll, POLL_INTERVAL); setTimeout(() => { if (!clicked) { log("Fallback reload — no claim detected in time window."); location.reload(); } }, FALLBACK_RELOAD); } if (document.readyState === 'complete' || document.readyState === 'interactive') { setTimeout(start, 1500); } else { window.addEventListener('DOMContentLoaded', () => setTimeout(start, 1500)); } })();