在您安装前,Greasy Fork 希望您知道此脚本声明其包含了一些负面功能。这些功能也许会使脚本作者获利,而不能给您带来任何直接的金钱收益。
作者可从这份脚本获得佣金,例如通过修改链接地址或提供优惠券代码以包含推荐或附属代码。
脚本作者的说明:
Directs to a referral link when not logged in
Auto Login, Auto Claim, Auto Redirect, Anti-Batas Klaim
// ==UserScript== // @name Cryptofuture.co.in Auto faucet // @namespace bekerja pada Tampermonkey maupun Violentmonkey // @version 0.8 // @description Auto Login, Auto Claim, Auto Redirect, Anti-Batas Klaim // @author Ojo Ngono // @grant GM_getValue // @grant GM_setValue // @grant GM_addStyle // @grant GM_setClipboard // @grant GM_registerMenuCommand // @require https://cdn.jsdelivr.net/npm/sweetalert2@11 // @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 // @icon https://i.ibb.co/XJSPdz0/large.png // ==/UserScript== const cfg = new MonkeyConfig({ title: 'Pengaturan Cryptoads', menuCommand: 'Buka Pengaturan', shadowWidth: '650px', shadowHeight: '500px', iframeWidth: '620px', iframeHeight: '450px', params: { Email: { label: "Email FaucetPay", type: "text", default: "", column: 'top' }, cryptoChoice: { label: "Pilih Crypto", type: "select", choices: { doge: "DOGE", ltc: "LTC", sol: "SOL", trx: "TRX", usdt: "USDT", pepe: "PEPE", dgb: "DGB", bnb: "BNB", eth: "ETH", dash: "DASH", zec: "ZEC", fey: "FEY" }, default: "LTC" } } }); (function () { 'use strict'; window.addEventListener('load', () => { const email = cfg.get('Email')?.trim(); const crypto = cfg.get('cryptoChoice')?.toUpperCase() || 'LTC'; const loginButton = document.querySelector('button[type="submit"].btn.btn-responsive'); const isLoggedIn = !loginButton || loginButton.textContent.trim().toLowerCase() !== 'login'; const hasReferral = location.search.includes('r=1857'); const currentUrl = window.location.href; // 🔁 Redirect if (!isLoggedIn && !hasReferral) { location.href = 'https://cryptofuture.co.in/?r=1857'; return; } // 🛑 Sudah if (isLoggedIn && (!email || email === '')) { Swal.fire({ icon: 'warning', title: 'Email FaucetPay belum diisi!', text: 'Anda sudah login, tetapi belum mengisi Email FaucetPay di pengaturan.', confirmButtonText: 'Ya, logout', confirmButtonColor: '#d33', allowOutsideClick: false, allowEscapeKey: false, allowEnterKey: false }).then(() => { window.location.href = "https://cryptofuture.co.in/logout"; }); return; } // 🔔 Belum if (!isLoggedIn && (!email || email === '')) { Swal.fire({ icon: 'info', title: 'Pengaturan Diperlukan', html: `Silakan buka menu <b>'Pengaturan Cryptoads'</b> dari ikon 🐵 userscript di browser Anda,<br>lalu isi Email FaucetPay.`, confirmButtonText: 'OK', }); return; } // ➡️ Redirect if (isLoggedIn && currentUrl.includes('/dashboard')) { const faucetUrl = `https://cryptofuture.co.in/faucet/currency/${crypto.toLowerCase()}`; if (currentUrl !== faucetUrl) { window.location.href = faucetUrl; return; } } // ✅ Auto if (isLoggedIn && currentUrl.includes('/faucet')) { const claimChecker = setInterval(() => { const claimBtn = document.querySelector('button#subbutt, button.claim-button'); const goClaimBtn = document.querySelector('a.btn.btn-primary[href*="/faucet/currency/"]'); const captchaBox = document.querySelector('.iconcaptcha-widget'); const captchaPassed = document.querySelector('.iconcaptcha-widget.iconcaptcha-success'); const captchaNotFound = !captchaBox; // 🔽 Scroll if (captchaBox && !captchaPassed) { captchaBox.scrollIntoView({ behavior: "smooth", block: "center" }); } // ✅ Jika if ((captchaPassed || captchaNotFound) && claimBtn && !claimBtn.disabled) { claimBtn.scrollIntoView({ behavior: "smooth", block: "center" }); setTimeout(() => { claimBtn.click(); }, 800); clearInterval(claimChecker); return; } // ✅ Jika if (goClaimBtn && goClaimBtn.offsetParent !== null) { goClaimBtn.scrollIntoView({ behavior: "smooth", block: "center" }); setTimeout(() => { goClaimBtn.click(); }, 800); clearInterval(claimChecker); } }, 1000); } // ✅ Auto if (!isLoggedIn && email) { const waitForElm = (sel, timeout = 15000) => new Promise((res, rej) => { const el = document.querySelector(sel); if (el) return res(el); const obs = new MutationObserver(() => { const found = document.querySelector(sel); if (found) { obs.disconnect(); res(found); } }); obs.observe(document.body, { childList: true, subtree: true }); setTimeout(() => { obs.disconnect(); rej(); }, timeout); }); (async () => { try { const emailInput = await waitForElm('#InputEmail, input[name="wallet"]'); const form = emailInput.closest('form'); const submitBtn = form?.querySelector('button[type="submit"]'); emailInput.value = email; ['input', 'change'].forEach(ev => emailInput.dispatchEvent(new Event(ev, { bubbles: true })) ); const check = setInterval(() => { const captchaOK = document.querySelector('.iconcaptcha-widget.iconcaptcha-success'); const noCaptcha = !document.querySelector('.iconcaptcha-widget'); if ((captchaOK || noCaptcha) && submitBtn) { submitBtn.click(); clearInterval(check); } }, 800); } catch (e) { console.warn('⏰ Input email tidak ditemukan!'); } })(); } // ✅ Deteksi function checkForMessage() { const messageSelectors = [ '.swal2-html-container', '.swal-text', '.swal-title' ]; const keywords = [ "After every", "faucet claims", "Shortlink must be completed" ]; for (const selector of messageSelectors) { const elements = document.querySelectorAll(selector); for (const el of elements) { const messageText = el.innerText?.replace(/\s+/g, " ").trim(); if (!messageText) continue; const isTargetMessage = keywords.some(kw => messageText.toLowerCase().includes(kw.toLowerCase())); if (isTargetMessage) { console.log("✅ Deteksi pesan batas klaim:", messageText); const match = window.location.href.match(/(?:currency\/|currency=)([a-z]+)/i); const currency = match ? match[1].toLowerCase() : 'doge'; setTimeout(() => { window.location.href = `https://cryptofuture.co.in/links/currency/${currency}`; }, 1500); return; } } } } setInterval(checkForMessage, 1000); }); })(); function removeAdblockOverlay() { const adblockDiv = document.getElementById('adblock-locker'); if (adblockDiv) { adblockDiv.remove(); console.log("🚫 Adblock overlay dihapus."); } } removeAdblockOverlay(); const adblockInterval = setInterval(removeAdblockOverlay, 1000); setTimeout(() => clearInterval(adblockInterval), 10000);