// ==UserScript== // @name top top // @namespace top top // @version 2.6 // @description Earn free crypto using this script instantly // @author Md Ubeadulla // @match https://bagi.co.in/* // @match https://keran.co/* // @match https://bnbrain.club/* // @match https://www.bestchange.com/* // @match https://faucet.today/* // @match https://faucetclaimcoin.com/* // @match https://freeperfectmoney.com/* // @match https://bigbtc.win/* // @match https://dogecoinfaucet.top/* // @match https://ltcfaucet.top/* // @match https://tronfaucet.top/* // @match https://bnbfaucet.top/* // @match https://ethfaucet.top/* // @match https://zecfaucet.net/* // @match https://freedgb.club/* // @match https://freedash.club/* // @match https://freebch.club/* // @match https://dogeforfree.club/* // @match https://faucetnewub.000webhostapp.com* // @match https://faucetnewub.000webhostapp.com/* // @connect bagi.co.in // @connect keran.co // @connect bnbrain.club // @connect www.bestchange.com // @connect faucet.today // @connect faucetclaimcoin.com // @connect bigbtc.win // @connect cryptoearns.com // @connect getdoge.io // @connect freeperfectmoney.com // @connect dogecoinfaucet.top // @connect ltcfaucet.top // @connect bnbfaucet.top // @connect ethfaucet.top // @connect ethfaucet.top // @connect zecfaucet.net // @connect freedgb.club // @connect freedash.club // @connect freebch.club // @connect dogeforfree.club // @connect faucetnewub.000webhostapp.com // @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 // Enter Your FaucetPay Faucet Address and Express Crypto below as mentioned in the example and // save the entered text in user configuration in a file. This is to ensure that you // don't repeat entering whenever there is an update. var bitcoin="18q7vsxd8Xva1W5FYoe4ZJWA6mYGrW9nWn"; // Ex: var bitcoin="1HeD2a11n8d9zBTaznNWfVxtw1dKuW2vT5"; var binance="0xb0f8B375D6c97E836Ac445b4369A0edc1eF74000"; var bitcoincash ="bitcoincash:qr2ryu4m2vqcdjzwytynrahn3l4l6um3jsj6hkh0xp"; var dash ="XiPJZv4ScwGaKLwUYbTLeF86eprpY8Erdb"; var dogecoin ="DGwYWkTyi5Xsa453HTWJCmVuYMDC1MiCte"; var digibyte="DLbyVjE5u3H72B9D4spSwG13sM8c7qbsz8"; var ethereum="0xf44ea500abd7d4fb8b0bc5c42002e0eb58d0eb42"; var feyorra="0xf44ea500abd7d4fb8b0bc5c42002e0eb58d0eb42"; var litecoin ="MW62cSffYfKtoq6G8zM9pGmTQMhU3r34AS"; var solana ="DK1uTayED6sQznszmhpSe2J3NLpkKpC6TSwtDjXRECdi"; var tron ="TRP5SXG1AuhHny7PGN6UMvkCyCaHkB1btt"; var tether="TRP5SXG1AuhHny7PGN6UMvkCyCaHkB1btt"; var zcash ="t1grxxbt6RUXwM7YHFnwTebvt59727fegYS"; // var express_Crypto_id = "YOUR_EXPRESSCRYPTO_ID"; //Ex: var express_crypto_id = "EC-UserId-111499"; // Set the value to true if you want to autowithdraw after each claim // Set the value to false if you want to accumulate and withdraw later var autoWithdraw = true; //You can now save the file and start using //=============================================================================================== //Replacing bitcoincash default value from faucetpay, since bagi and keran don't accept this format bitcoincash = bitcoincash.replaceAll("bitcoincash:",""); //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 var websiteData = [ /// {url : "https://bagi.co.in/bitcoin/?ref=46726", coin: "bitcoin", address: bitcoin}, // {url : "https://keran.co/BTC/?ref=69008", coin: "BTC", address: bitcoin}, {url : "https://ltcfaucet.top/?r=MW62cSffYfKtoq6G8zM9pGmTQMhU3r34AS", coin: "litecoin", address: litecoin}, /// {url : "https://bagi.co.in/binance/?ref=10314", coin: "binance", address: binance}, // {url : "https://keran.co/BNB/?ref=18755", coin: "BNB", address: binance}, // {url : "https://bigbtc.win/?id=38510935", address: bitcoin, regex: "bigbtc1"}, // {url : "https://bagi.co.in/bitcoincash/?ref=56509", coin: "bitcoincash", address: bitcoincash}, // {url : "https://keran.co/DASH/?ref=44892", coin: "DASH", address: dash}, {url : "https://tronfaucet.top/?r=TRP5SXG1AuhHny7PGN6UMvkCyCaHkB1btt", coin: "tron", address: tron}, // {url : "https://bagi.co.in/dash/?ref=32370", coin: "dash", address: dash}, // {url : "https://keran.co/BCH/?ref=79528", coin: "BCH", address: bitcoincash}, // {url : "https://bigbtc.win/?id=38510935", address: bitcoin, regex: "bigbtc2"}, // {url : "https://bagi.co.in/dogecoin/?ref=44510", coin: "dogecoin", address: dogecoin}, // {url : "https://keran.co/DOGE/?ref=72921", coin: "DOGE", address: dogecoin}, {url : "https://zecfaucet.net/?r=t1grxxbt6RUXwM7YHFnwTebvt59727fegYS", coin: "zcash", address: zcash}, // {url : "https://bagi.co.in/litecoin/?ref=47765", coin: "litecoin", address: litecoin}, // {url : "https://keran.co/LTC/?ref=68599", coin: "LTC", address: litecoin}, // {url : "https://bigbtc.win/?id=38510935", address: bitcoin, regex: "bigbtc3"}, // {url : "https://bagi.co.in/digibyte/?ref=22244", coin: "digibyte", address: digibyte}, // {url : "https://keran.co/DGB/?ref=32468", coin: "DGB", address: digibyte}, {url : "https://ethfaucet.top/?r=0xf44ea500abd7d4fb8b0bc5c42002e0eb58d0eb42", coin: "ethereum", address: ethereum}, /// {url : "https://bagi.co.in/zcash/?ref=8796", coin: "zcash", address: zcash}, // {url : "https://keran.co/ZEC/?ref=11430", coin: "ZEC", address: zcash}, // {url : "https://bigbtc.win/?id=38510935", address: bitcoin, regex: "bigbtc4"}, // {url : "https://bagi.co.in/tron/?ref=22148", coin: "tron", address: tron}, // {url : "https://keran.co/TRX/?ref=58813", coin: "TRX", address: tron}, {url : "https://dogecoinfaucet.top/?r=DGwYWkTyi5Xsa453HTWJCmVuYMDC1MiCte", coin: "dogecoin", address: dogecoin}, // {url : "https://bagi.co.in/tether/?ref=25211", coin: "tether", address: tether}, // {url : "https://keran.co/USDT/?ref=40122", coin: "USDT", address: tether}, // {url : "https://bigbtc.win/?id=38510935", address: bitcoin, regex: "bigbtc5"}, // {url : "https://bagi.co.in/ethereum/?ref=17761", coin: "ethereum", address: ethereum}, // {url : "https://keran.co/ETH/?ref=22812", coin: "ETH", address: ethereum}, // {url : "https://faucetclaimcoin.com/freeTRX/?r=TLs3iQfXJs1rmUuG6pkLkUwcu32mFUwzgu", coin: "freeTRX", address: tron}, // {url : "https://bagi.co.in/feyorra/?ref=4937", coin: "feyorra", address: feyorra}, // {url : "https://keran.co/FEY/?ref=6172", coin: "FEY", address: feyorra}, // {url : "https://bigbtc.win/?id=38510935", address: bitcoin, regex: "bigbtc6"}, // {url : "https://bagi.co.in/solana/?ref=1843", coin: "solana", address: solana}, // {url : "https://keran.co/SOL/?ref=2744", coin: "SOL", address: solana}, {url : "https://bnbfaucet.top/?r=0xb0f8B375D6c97E836Ac445b4369A0edc1eF74000", coin: "binance", address: binance}, {url : "https://www.bestchange.com/?p=18q7vsxd8Xva1W5FYoe4ZJWA6mYGrW9nWn", address: bitcoin}, // {url : "https://faucet.today/?r=DPtBQG9GNTYHUFkjB2zYWYah4nCCogVAt9", address: dogecoin}, // {url : "https://bigbtc.win/?id=38510935", address: bitcoin, regex: "bigbtc7"}, {url : "https://freebch.club/?r=bitcoincash:qr2ryu4m2vqcdjzwytynrahn3l4l6um3jsj6hkh0xp", coin: "bitcoincash", address: bitcoincash}, // {url : "https://faucetnewub.000webhostapp.com", coin: "dogecoin", address: dogecoin}, ]; //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 : ["bagi.co.in","keran.co"], inputTextSelector: ".form-control", inputTextSelectorButton: ".modal-footer .btn.btn-primary.btn-block", defaultButtonSelectors: [".btn.btn-primary.btn-block.col-lg-3"], claimButtonSelector: [".modal-footer .btn.btn-primary.btn-block"], captchaButtonSubmitSelector: ".modal-footer .btn.btn-primary.btn-block", allMessageSelectors: [".alert.alert-warning",".alert.alert-success",".alert.alert-danger","#cf-error-details"], successMessageSelectors: [".alert.alert-success"], additionalFunctions : bagikeran, messagesToCheckBeforeMovingToNextUrl: ["Login not valid","You have already claimed","claimed successfully","Claim not Valid","rate limited"], withdrawPageUrl: "withdraw.php", withdrawEnabled: autoWithdraw}, {website : "bnbrain.club", inputTextSelector: "#claim-address", captchaButtonSubmitSelector: ["#claim-button", ".btn.btn-warning"], allMessageSelectors: [".alert.alert-success",".alert.alert-danger"], messagesToCheckBeforeMovingToNextUrl: ["You must to wait","has been sent"]}, */ {website : "bestchange.com", inputTextSelector: "#bonus_purse", defaultButtonSelectors: ["#tab_bonus > a"], captchaButtonSubmitSelector: "#bonus_button", allMessageSelectors: ["#bonus_status","#bonus_button"], messagesToCheckBeforeMovingToNextUrl: ["were added to your balance","Time left"]}, /* {website : ["-ok.net","faucet.today","faucetclaimcoin.com","faucetnewub.000webhostapp.com"], inputTextSelector: ".form-control", captchaButtonSubmitSelector: ".claim-button", allMessageSelectors: [".alert.alert-success",".alert.alert-danger",".alert.alert-info"], messagesToCheckBeforeMovingToNextUrl: ["was sent to you","You have to wait","sufficient","does not have"]}, {website : ["freeperfectmoney.com"], inputTextSelector: "#address", captchaButtonSubmitSelector: ["#login_button", "#roll"], allMessageSelectors: [".alert.alert-success",".alert.alert-danger",".alert.alert-info", "body", "#timer"], additionalFunctions : freePerfectMoneyCaptcha, messagesToCheckBeforeMovingToNextUrl: ["There might be Server's Fault", "Next Roll Waiting Time"], timeoutbeforeMovingToNextUrl: 60000}, */ {website : ["dogecoinfaucet.top","ltcfaucet.top","tronfaucet.top","bnbfaucet.top", "ethfaucet.top", "zecfaucet.net", "freedgb.club", "freedash.club", "freebch.club", "dogeforfree.club"], inputTextSelector: "input[type=text]", inputTextSelectorButton: "input[type=submit]", captchaButtonSubmitSelector: "input[type=submit]", allMessageSelectors: [".alert.alert-success",".alert.alert-danger","p.success", "p.warn"], additionalFunctions : faucetTop, checkMessageSelectorLength: true, messagesToCheckBeforeMovingToNextUrl: ["before claiming again", "Time between claims should", "has been transferred", "funds", "suspicious", "Address not linked"]}, /* {website : ["bigbtc.win"], inputTextSelector: "#login > input", inputTextSelectorButton: "#login > input.button", captchaButtonSubmitSelector: "input.button", allMessageSelectors: [".alert.alert-success","#content p",".alert.alert-error"], withdrawMinAmount: 50, balanceSelector: "#account > b", withdrawPageUrl: "withdraw", withdrawEnabled: autoWithdraw, messagesToCheckBeforeMovingToNextUrl: ["You won","You can claim again","Not enough funds","Your payment of"]}, {website : ["cryptobaggiver.com"], inputTextSelector: "#wpbf_address", captchaButtonSubmitSelector: "#wpbf-claim-form", allMessageSelectors: [".alert.alert-success",".alert.alert-danger",".alert.alert-info", "h1"], messagesToCheckBeforeMovingToNextUrl: ["Recharg", "You have to wait","was sent","sufficient","successfully","wrong","system","network", "Sorry"], formSubmit: true},*/ ]; //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.claimButtonSelector = value.claimButtonSelector; 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; 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 + "-"))){ 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; }else{ 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: 8000, onload: function(response) { //Website is reachable isNextUrlReachable = true; }, 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(3000); } 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 = 180000; 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.length < 5 || websiteDataValues.address.includes("YOUR_")){ goToNextUrl(); } //Returns true if message selectors are present function messageSelectorsPresent(){ if(websiteDataValues.allMessageSelectors){ for(var j=0;j 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=2 ){ movingToNextUrl = true; return; } //If the captcha changes, the page keeps on looping and moves to next url only when the message is seen if(document.querySelector(".h-captcha")) { movingToNextUrl = true; return; } //If the hcaptcha class is not present check for attributes for(var hc=0; hc < document.querySelectorAll("iframe").length; hc++){ if(document.querySelectorAll("iframe")[hc] && document.querySelectorAll("iframe")[hc].hasAttribute("data-hcaptcha-response")) { //Hcaptcha is present movingToNextUrl = true; } } } function bagikeran(){ if(!window.location.href.includes("index.php")){ for(let i=0;i websiteDataValues.withdrawMinAmount && !window.location.href.includes(websiteDataValues.withdrawPageUrl)) { goToWithdrawPage(); } }else{ if(successMessageSelectorsPresent()){ goToWithdrawPage(); } } } //Look for all the default messages or errors before proceeding to next url //For other languages difference in the length of the strings can be compared or visibility of the style element if(!movingToNextUrl && messageSelectorsPresent()){ goToNextUrl(); } //Check for all the default button selectors and click //This will only click the first selector found, so mention the selectors with parent element wherever required if(!movingToNextUrl && websiteDataValues.defaultButtonSelectors){ for(var i=0;i 0){ if(websiteDataValues.formSubmit){ document.querySelector(websiteDataValues.captchaButtonSubmitSelector).submit(); }else{ document.querySelector(websiteDataValues.captchaButtonSubmitSelector).click(); } clicked = true; clearInterval(captchaInterval); setTimeout(function(){ if(messageSelectorsPresent()){ goToNextUrl(); } },5000); } }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) { if(websiteDataValues.formSubmit){ document.querySelector(websiteDataValues.captchaButtonSubmitSelector).submit(); }else{ document.querySelector(websiteDataValues.captchaButtonSubmitSelector).click(); } clicked = true; clearInterval(captchaInterval); setTimeout(function(){ if(messageSelectorsPresent()){ goToNextUrl(); } },5000); } } },5000); },7000); })();