在您安裝前,Greasy Fork希望您了解本腳本包含“可能不受歡迎的功能”,可能幫助腳本的作者獲利,而不能給你帶來任何收益。
作者從這份腳本獲得佣金, 例如透過重寫連結或提供優惠券代碼以加入推薦或附屬代碼
Earn unlimited free crypto using this script instantly
// ==UserScript== // @name Faucet Rotator - Crypto Mimi // @namespace Faucet Rotator - Crypto Mimi // @version 1.41 // @description Earn unlimited free crypto using this script instantly // @author Turske Serije // @match https://cryptomimi.org/* // @connect cryptomimi.org // @icon https://www.google.com/s2/favicons?sz=64&domain=crab-coins.com // @noframes // @grant GM_setValue // @grant GM_getValue // @grant GM_xmlhttpRequest // @antifeature referral-link // ==/UserScript== //Block All Pop ups unsafeWindow.open = function() { }; (function() { 'use strict'; //=============================================================================================== //User configuration var faucetpayEmail = "ENTER_YOUR_FAUCETPAY_EMAIL_ADDRESS"; var btc = "ENTER_YOUR_FAUCETPAY_BITCOIN_ADDRESS"; var doge = "ENTER_YOUR_FAUCETPAY_DOGE_ADDRESS"; var ltc = "ENTER_YOUR_FAUCETPAY_LITECOIN_ADDRESS"; var trx = "ENTER_YOUR_FAUCETPAY_TRON_ADDRESS"; var bnb = "ENTER_YOUR_FAUCETPAY_BINANCE_ADDRESS"; var sol = "ENTER_YOUR_FAUCETPAY_SOLANA_ADDRESS"; var usdt = "ENTER_YOUR_FAUCETPAY_TETHER_ADDRESS"; var ada = "ENTER_YOUR_FAUCETPAY_CARDANO_ADDRESS"; var matic = "ENTER_YOUR_FAUCETPAY_POLYGON_ADDRESS"; var eth = "ENTER_YOUR_FAUCETPAY_ETHEREUM_ADDRESS"; var bch = "ENTER_YOUR_FAUCETPAY_BITCOINCASH_ADDRESS"; var dash = "ENTER_YOUR_FAUCETPAY_DASH_ADDRESS"; var zec = "ENTER_YOUR_FAUCETPAY_ZCASH_ADDRESS"; var dgb = "ENTER_YOUR_FAUCETPAY_DIGIBYTE_ADDRESS"; //You can now save the file and start using //=============================================================================================== //List of the faucet websites along with address //coin parameter is used as regex from the url //If url has */bitcoin/* then use "bitcoin" as coin, if it is */ETH/*, use "ETH" as coin //If there is no regex for coin, use only address // Comment the faucets which you do not wish to use or which don't have sufficient funds // Always add bitcoin before bitcoincash if you using same domains var websiteData = [ { url: "https://cryptomimi.org/bitcoin-faucet/?r=abdulkerim.bosnia@gmail.com", coin: "bitcoin-faucet", address: faucetpayEmail }, { url: "https://cryptomimi.org/dogecoin-faucet/?r=abdulkerim.bosnia@gmail.com", coin: "dogecoin-faucet", address: faucetpayEmail }, { url: "https://cryptomimi.org/litecoin-faucet/?r=abdulkerim.bosnia@gmail.com", coin: "litecoin-faucet", address: faucetpayEmail }, { url: "https://cryptomimi.org/tron-faucet/?r=abdulkerim.bosnia@gmail.com", coin: "tron-faucet", address: faucetpayEmail }, { url: "https://cryptomimi.org/bnb-faucet/?r=abdulkerim.bosnia@gmail.com", coin: "bnb-faucet", address: faucetpayEmail }, { url: "https://cryptomimi.org/solana-faucet/?r=abdulkerim.bosnia@gmail.com", coin: "solana-faucet", address: faucetpayEmail }, { url: "https://cryptomimi.org/tether-faucet/?r=abdulkerim.bosnia@gmail.com", coin: "tether-faucet", address: faucetpayEmail }, { url: "https://cryptomimi.org/cardano-faucet/?r=abdulkerim.bosnia@gmail.com", coin: "cardano-faucet", address: faucetpayEmail}, { url: "https://cryptomimi.org/polygon-faucet/?r=abdulkerim.bosnia@gmail.com", coin: "polygon-faucet", address: faucetpayEmail }, { url: "https://cryptomimi.org/ethereum-faucet/?r=abdulkerim.bosnia@gmail.com", coin: "ethereum-faucet", address: faucetpayEmail }, { url: "https://cryptomimi.org/bch-faucet/?r=abdulkerim.bosnia@gmail.com", coin: "bch-faucet", address: faucetpayEmail }, { url: "https://cryptomimi.org/dash-faucet/?r=abdulkerim.bosnia@gmail.com", coin: "dash-faucet", address: faucetpayEmail }, { url: "https://cryptomimi.org/zcash-faucet/?r=abdulkerim.bosnia@gmail.com", coin: "zcash-faucet", address: faucetpayEmail }, { url: "https://cryptomimi.org/digibyte-faucet/?r=abdulkerim.bosnia@gmail.com", coin: "digibyte-faucet", address: faucetpayEmail }, ]; //Add data for any new website with single pages //Message selectors are for success or failure to move on to the next website //AutoWithdraw is disabled by default(for bagi and keran) //Add only domain name in website as mentioned below. Follow the same pattern. //Use arrays wherever it is required //ToDo:Instead of reading messages, either visibility or length of the messages can be checked var websiteMap = [{ website: ["cryptomimi.org"], inputTextSelector: ["#address"], inputTextSelectorButton: ["button[data-target='#captchaModal']"], defaultButtonSelectors: ["a.btn"], captchaButtonSubmitSelector: ["input[type='submit'][name='login'][id='login']"], // Selector for the "Verify Captcha" button allMessageSelectors: [".alert.alert-warning", ".alert.alert-success", ".alert.alert-danger", "#cf-error-details"], successMessageSelectors: [".alert.alert-success"], messagesToCheckBeforeMovingToNextUrl: ["invalid", "sufficient", "you have reached", "tomorrow", "wrong order", "locked", "was sent to your", "You have to wait", "Login not valid", "You have already claimed", "claimed successfully", "Claim not Valid", "rate limited"], ablinks: true, }, ]; var ablinksSolved = false; //HtmlEvents dispatcher function triggerEvent(el, type) { try { var e = document.createEvent('HTMLEvents'); e.initEvent(type, false, true); el.dispatchEvent(e); } catch (exception) { console.log(exception); } } //Check if a string is present in Array String.prototype.includesOneOf = function(arrayOfStrings) { //If this is not an Array, compare it as a String if (!Array.isArray(arrayOfStrings)) { return this.toLowerCase().includes(arrayOfStrings.toLowerCase()); } for (var i = 0; i < arrayOfStrings.length; i++) { if (this.toLowerCase().includes(arrayOfStrings[i].toLowerCase())) { return true; } } return false; } var websiteDataValues = {}; //Get selector details from the websiteMap for (let value of Object.values(websiteMap)) { if (window.location.href.includesOneOf(value.website)) { websiteDataValues.inputTextSelector = value.inputTextSelector; websiteDataValues.inputTextSelectorButton = value.inputTextSelectorButton; websiteDataValues.defaultButtonSelectors = value.defaultButtonSelectors; websiteDataValues.claimButtonSelectors = value.claimButtonSelectors; websiteDataValues.captchaButtonSubmitSelector = value.captchaButtonSubmitSelector; websiteDataValues.allMessageSelectors = value.allMessageSelectors; websiteDataValues.messagesToCheckBeforeMovingToNextUrl = value.messagesToCheckBeforeMovingToNextUrl; websiteDataValues.withdrawPageUrl = value.withdrawPageUrl; websiteDataValues.withdrawEnabled = value.withdrawEnabled; websiteDataValues.balanceSelector = value.balanceSelector; websiteDataValues.withdrawMinAmount = value.withdrawMinAmount; websiteDataValues.successMessageSelectors = value.successMessageSelectors; websiteDataValues.additionalFunctions = value.additionalFunctions; websiteDataValues.timeoutbeforeMovingToNextUrl = value.timeoutbeforeMovingToNextUrl; websiteDataValues.formSubmit = value.formSubmit; websiteDataValues.ablinks = value.ablinks; break; } } //Identify which coin to input, based on the url input //If the URL does not contain the coin, then use the default from the domain name var count = 0; var addressAssigned = false; for (let value of Object.values(websiteData)) { count = count + 1; if (value.url.includes(window.location.hostname) && (window.location.href.includes("/" + value.coin + "/") || window.location.href.includes("/" + value.coin + "-") || window.location.href.endsWith("/" + value.coin))) { websiteDataValues.address = value.address; addressAssigned = true; break; } } //If URL does not have coin, check the default from the domain name if (!addressAssigned) { count = 0; for (let value of Object.values(websiteData)) { count = count + 1; if (value.url.includes(window.location.hostname)) { if (value.regex) { if (GM_getValue("UrlRegex")) { if (GM_getValue("UrlRegex") == value.regex) { websiteDataValues.address = value.address; break; } } else { GM_setValue("UrlRegex", value.regex); websiteDataValues.address = value.address; break; } } else { websiteDataValues.address = value.address; break; } } } } //Get the next Url from the website data map async function getNextUrl() { //Go to the beginning if the end of the array is reached if (count >= websiteData.length) { count = 0; } websiteDataValues.nextUrl = websiteData[count].url; websiteDataValues.regex = websiteData[count].regex; //Ping Test to check if a website is up before proceeding to next url pingTest(websiteDataValues.nextUrl); } var isNextUrlReachable = false; //Get the next Url from the website function pingTest(websiteUrl) { console.log(websiteUrl); GM_xmlhttpRequest({ method: "GET", url: websiteUrl, headers: { "Content-Type": "application/x-www-form-urlencoded" }, timeout: 2000, onload: function(response) { //Website is reachable if (response && response.status == 200) { isNextUrlReachable = true; } else { count = count + 1; getNextUrl(); } }, onerror: function(e) { count = count + 1; getNextUrl(); }, ontimeout: function() { count = count + 1; getNextUrl(); }, }); } async function delay(ms) { return new Promise(resolve => setTimeout(resolve, ms)) } var movingToNextUrl = false; async function goToNextUrl() { if (!movingToNextUrl) { movingToNextUrl = true; getNextUrl(); while (!isNextUrlReachable) { await delay(2000); } if (websiteDataValues.regex) { GM_setValue("UrlRegex", websiteDataValues.regex); } window.location.href = websiteDataValues.nextUrl; movingToNextUrl = true; } } async function goToWithdrawPage() { if (!movingToNextUrl) { movingToNextUrl = true; window.location.href = websiteDataValues.withdrawPageUrl; } } //Default Setting: After 180 seconds go to next Url var delayBeforeMovingToNextUrl = 100000; if (websiteDataValues.timeoutbeforeMovingToNextUrl) { delayBeforeMovingToNextUrl = websiteDataValues.timeoutbeforeMovingToNextUrl; } setTimeout(function() { movingToNextUrl = false; goToNextUrl(); }, delayBeforeMovingToNextUrl); //Move to next URL if address is not mentioned above if (window.location.href.includes("to=FaucetPay") || (websiteDataValues.address) && (websiteDataValues.address.length < 5 || websiteDataValues.address.includes("YOUR_"))) { goToNextUrl(); } //Returns true if message selectors are present function messageSelectorsPresent() { if (websiteDataValues.allMessageSelectors) { for (var j = 0; j < websiteDataValues.allMessageSelectors.length; j++) { for (var k = 0; k < document.querySelectorAll(websiteDataValues.allMessageSelectors[j]).length; k++) { if (document.querySelectorAll(websiteDataValues.allMessageSelectors[j])[k] && (document.querySelectorAll(websiteDataValues.allMessageSelectors[j])[k].innerText.includesOneOf(websiteDataValues.messagesToCheckBeforeMovingToNextUrl) || (document.querySelectorAll(websiteDataValues.allMessageSelectors[j])[k].value && document.querySelectorAll(websiteDataValues.allMessageSelectors[j])[k].value.includesOneOf(websiteDataValues.messagesToCheckBeforeMovingToNextUrl)))) { return true; } } } } return false; } //Returns true if any message is present in message selector function checkMessageSelectorsLength() { if (websiteDataValues.allMessageSelectors) { for (var j = 0; j < websiteDataValues.allMessageSelectors.length; j++) { for (var k = 0; k < document.querySelectorAll(websiteDataValues.allMessageSelectors[j]).length; k++) { if (document.querySelectorAll(websiteDataValues.allMessageSelectors[j])[k] && (document.querySelectorAll(websiteDataValues.allMessageSelectors[j])[k].innerText.length > 0) || (document.querySelectorAll(websiteDataValues.allMessageSelectors[j])[k].value && document.querySelectorAll(websiteDataValues.allMessageSelectors[j])[k].value.length > 0)) { return true; } } } } return false; } //Returns true if message selectors are present function successMessageSelectorsPresent() { if (websiteDataValues.successMessageSelectors) { for (var j = 0; j < websiteDataValues.successMessageSelectors.length; j++) { for (var k = 0; k < document.querySelectorAll(websiteDataValues.successMessageSelectors[j]).length; k++) { if (document.querySelectorAll(websiteDataValues.successMessageSelectors[j])[k] && document.querySelectorAll(websiteDataValues.successMessageSelectors[j])[k].innerText.includesOneOf(websiteDataValues.messagesToCheckBeforeMovingToNextUrl)) { return true; } } } } return false; } function ablinksCaptcha() { setInterval(function() { if (document.querySelector("#switch") && document.querySelector("#switch").innerText.toLowerCase().includes("hcaptcha")) { document.querySelector("#switch").click(); } else if (document.querySelector("#switch") && document.querySelector("#switch").innerText.toLowerCase().includes("recaptcha")) { document.querySelector("#switch").click(); } var count = 0; var abModels = [".modal-content [href='/']", ".modal-body [href='/']", ".antibotlinks [href='/']"]; var abModelsImg = [".modal-content [href='/'] img", ".modal-body [href='/'] img", ".antibotlinks [href='/'] img"]; for (let j = 0; j < abModelsImg.length; j++) { if (document.querySelector(abModelsImg[j]) && document.querySelector(abModelsImg[j]).value == "####") { goToNextUrl(); break; } } for (let i = 0; i < 4; i++) { for (let j = 0; j < abModels.length; j++) { if (document.querySelectorAll(abModelsImg[j]).length == 4 && document.querySelectorAll(abModels[j])[i] && document.querySelectorAll(abModels[j])[i].style && document.querySelectorAll(abModels[j])[i].style.display == 'none') { count++; break; } } } if (count == 4) { ablinksSolved = true; } }, 2000); } setTimeout(function() { ablinksCaptcha(); if (window.name == "nextWindowUrl") { window.name = ""; goToNextUrl(); return; } else { window.name = window.location.href; } if (websiteDataValues.additionalFunctions) { websiteDataValues.additionalFunctions(); } if (websiteDataValues.withdrawEnabled) { if (websiteDataValues.balanceSelector && document.querySelector(websiteDataValues.balanceSelector)) { var currentBalance = document.querySelector(websiteDataValues.balanceSelector).innerText; if (currentBalance > websiteDataValues.withdrawMinAmount && !window.location.href.includes(websiteDataValues.withdrawPageUrl)) { goToWithdrawPage(); } } else { if (successMessageSelectorsPresent()) { goToWithdrawPage(); } } } if (!movingToNextUrl && messageSelectorsPresent()) { goToNextUrl(); } if (!movingToNextUrl && document.querySelector(websiteDataValues.inputTextSelector)) { document.querySelector(websiteDataValues.inputTextSelector).value = websiteDataValues.address; triggerEvent(document.querySelector(websiteDataValues.inputTextSelector), 'keypress'); triggerEvent(document.querySelector(websiteDataValues.inputTextSelector), 'change'); setTimeout(function() { if (websiteDataValues.inputTextSelectorButton && document.querySelector(websiteDataValues.inputTextSelectorButton)) { document.querySelector(websiteDataValues.inputTextSelectorButton).click(); } }, 2000); } if (!movingToNextUrl && websiteDataValues.defaultButtonSelectors) { for (let i = 0; i < websiteDataValues.defaultButtonSelectors.length; i++) { if (document.querySelector(websiteDataValues.defaultButtonSelectors[i])) { triggerEvent(document.querySelector(websiteDataValues.defaultButtonSelectors[i]), 'mousedown'); triggerEvent(document.querySelector(websiteDataValues.defaultButtonSelectors[i]), 'mouseup'); document.querySelector(websiteDataValues.defaultButtonSelectors[i]).click(); break; } } } setTimeout(function() { if (!movingToNextUrl && websiteDataValues.claimButtonSelectors) { for (let i = 0; i < websiteDataValues.claimButtonSelectors.length; i++) { if (document.querySelector(websiteDataValues.claimButtonSelectors[i])) { triggerEvent(document.querySelector(websiteDataValues.claimButtonSelectors[i]), 'mousedown'); triggerEvent(document.querySelector(websiteDataValues.claimButtonSelectors[i]), 'mouseup'); document.querySelector(websiteDataValues.claimButtonSelectors[i]).click(); break; } } } }, 2000); var clicked = false; var captchaInterval = setInterval(function() { if (websiteDataValues.ablinks && !ablinksSolved) { return; } try { if (!clicked && unsafeWindow.grecaptcha && unsafeWindow.grecaptcha.getResponse().length > 0 && websiteDataValues.captchaButtonSubmitSelector && document.querySelector(websiteDataValues.captchaButtonSubmitSelector) && document.querySelector(websiteDataValues.captchaButtonSubmitSelector).style.display != 'none' && !document.querySelector(websiteDataValues.captchaButtonSubmitSelector).disabled) { if (websiteDataValues.formSubmit) { document.querySelector(websiteDataValues.captchaButtonSubmitSelector).submit(); } else { document.querySelector(websiteDataValues.captchaButtonSubmitSelector).click(); } clicked = true; clearInterval(captchaInterval); setTimeout(function() { if (messageSelectorsPresent()) { goToNextUrl(); } }, 20000); } } catch (e) { } for (var hc = 0; hc < document.querySelectorAll("iframe").length; hc++) { if (!clicked && document.querySelectorAll("iframe")[hc] && document.querySelectorAll("iframe")[hc].hasAttribute("data-hcaptcha-response") && document.querySelectorAll("iframe")[hc].getAttribute("data-hcaptcha-response").length > 0 && websiteDataValues.captchaButtonSubmitSelector && document.querySelector(websiteDataValues.captchaButtonSubmitSelector) && document.querySelector(websiteDataValues.captchaButtonSubmitSelector).style.display != 'none' && !document.querySelector(websiteDataValues.captchaButtonSubmitSelector).disabled) { if (websiteDataValues.formSubmit) { document.querySelector(websiteDataValues.captchaButtonSubmitSelector).submit(); } else { document.querySelector(websiteDataValues.captchaButtonSubmitSelector).click(); } clicked = true; clearInterval(captchaInterval); setTimeout(function() { if (messageSelectorsPresent()) { goToNextUrl(); } }, 2000); } } }, 2000); }, 2000); })();