Greasy Fork

Free coin Faucet

Earn free coin

目前为 2022-01-30 提交的版本。查看 最新版本

// ==UserScript==
// @name         Free coin  Faucet
// @namespace    Earn free coin
// @version      0.1
// @description  Earn free coin
// @author       Inconito
// @match        https://faucet.bitgames.io*
// @match        https://www.bitgames.io/offerwalls/faucet*
// @icon         https://www.google.com/s2/favicons?domain=bitgames.io
// @connect      faucet.bitgames.io
// @connect      www.bitgames.io
// @grant        GM_xmlhttpRequest
// ==/UserScript==

/////////////////////////////////////////////////////////////////////////
//                                                                     //
//                                                                     //
//      VIEW https://www.bitgames.io/?affid=12346063 AND REGISTER      //
//                                                                     //
//                                                                     //
/////////////////////////////////////////////////////////////////////////
(function() {
    'use strict';

       var clicked = false;
       var websiteData = [{url : "https://www.bitgames.io/offerwalls/faucet/"},];
       var websiteMap = [ {website: ["www.bitgames.io","faucet.bitgames.io"],additionalFunctions: bitgames,allMessageSelectors: ["div.title"],}];

       function triggerEvent(el, type) {
       try{
            var e = document.createEvent('HTMLEvents');
            e.initEvent(type, false, true);
            el.dispatchEvent(e);
            }catch(exception){
            console.log(exception);
            }
            }

        function toggleCaptcha(selector, index){
        document.querySelector(selector).selectedIndex = index;
        var targetNode = document.querySelector(selector);
        if (targetNode) {
        setTimeout(function() {
         triggerEvent(targetNode, 'change');
        }, 5000);
        }
        }
        String.prototype.includesOneOf = function(arrayOfStrings) {


        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 = {};
          for (let value of Object.values(websiteMap)) {
          if(window.location.href.includesOneOf(value.website)){
            websiteDataValues.defaultButtonSelectors = value.defaultButtonSelectors;
            websiteDataValues.claimButtonSelector = value.claimButtonSelector;
            websiteDataValues.captchaButtonSubmitSelector = value.captchaButtonSubmitSelector;
            websiteDataValues.allMessageSelectors = value.allMessageSelectors;
            websiteDataValues.successMessageSelectors = value.successMessageSelectors;
            websiteDataValues.toggleCaptchaSelector = value.toggleCaptchaSelector;
            websiteDataValues.toggleCaptchaSelectorIndex = value.toggleCaptchaSelectorIndex;
            websiteDataValues.additionalFunctions = value.additionalFunctions;
            break;
           }
           }
          var count = 0;
          var addressAssigned = false;
          for (let value of Object.values(websiteData)) {
          count = count + 1;
          if(window.location.href.includes("/" + value.regex)){
            addressAssigned = true;
            break;
        }
        }

    if(!addressAssigned){
        count = 0;
        for (let value of Object.values(websiteData)) {
            count = count + 1;
            if(value.url.includes(window.location.hostname)){
                break;
            }
            }
            }

    async function getNextUrl(){


        if(count >= websiteData.length){
            count = 0;
            websiteDataValues.nextUrl = websiteData[count].url;
        }else{
            websiteDataValues.nextUrl = websiteData[count].url;
        }


        pingTest(websiteDataValues.nextUrl);
         }

         var isNextUrlReachable = false;

          function pingTest(websiteUrl) {
        console.log(websiteUrl);
        GM_xmlhttpRequest({
            method: "GET",
            url: websiteUrl,
            headers: {
                "Content-Type": "application/x-www-form-urlencoded"
            },
            timeout: 5000,
            onload: function(response) {

                console.log("reachable");
                isNextUrlReachable = true;
            },
            onerror: function(e) {
                console.log("error");
                count=count+1;
                getNextUrl();
            },
            ontimeout: function() {
                console.log("timeout");
                count=count+1;
                getNextUrl();
            },
            });

            }

             async function delay(ms) {
             return new Promise(resolve => setTimeout(resolve, ms))
             }

             var movingToNextUrl = false;
             async function goToNextUrl() {
             if((window && window.self == top) || (unsafeWindow && unsafeWindow.self == top)){
            console.log("Going to next Url");
            if(!movingToNextUrl){
                movingToNextUrl = true;
                getNextUrl();
                while (!isNextUrlReachable) {
                    await delay(3000);
                }
                console.log("Done");
                window.location.href = websiteDataValues.nextUrl;
            }
            }
            }

             async function goToWithdrawPage() {
           if(!movingToNextUrl){
            movingToNextUrl = true;
            window.location.href = websiteDataValues.withdrawPageUrl;
          }

         }

         var delayBeforeMovingToNextUrl = 120000;
         if(websiteDataValues.timeoutbeforeMovingToNextUrl){
        delayBeforeMovingToNextUrl = websiteDataValues.timeoutbeforeMovingToNextUrl;
        }

        setTimeout(function(){
        goToNextUrl();
         },delayBeforeMovingToNextUrl);

        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;
               }

            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 bitgames(){
        var clicked = false;
        var formSubmitted = false;
        var modalFormClicked = false;

        setInterval(function(){

        if(!clicked && document.querySelector("button.btn.btn-primary.btn-show")){
        document.querySelector("button.btn.btn-primary.btn-show").click()
        clicked = true;
        }


        if(document.querySelector(".btn-mine") && document.querySelector(".btn-mine").style.display =="inline"){
        document.querySelector(".btn-mine").click();
        }

       if(formSubmitted && !modalFormClicked && document.querySelector("#insticator-modal button.btn.btn-primary.btn-show")){
       document.querySelector("#insticator-modal button.btn.btn-primary.btn-show").click();
       modalFormClicked = true;

       }

      if(document.querySelector("iframe") && document.querySelector("iframe").getAttribute("data-hcaptcha-response") &&
      document.querySelector("iframe").getAttribute("data-hcaptcha-response").length > 0) {
      if(document.querySelector(".btn-solve")){
      document.querySelector(".btn-solve").click();

                }

                if(document.querySelector(".btn.btn-primary.btn-solve-insticator")){
                    document.querySelector(".btn.btn-primary.btn-solve-insticator").click();
                }

                if(!formSubmitted && document.querySelector("form.puzzle-form")){
                    formSubmitted = true;
                    clicked = false;
                    document.querySelector(".form.puzzle-form").submit();
                }

                if(document.querySelector("#btn-verify")){
                    document.querySelector("#btn-verify").click();
                }

                }

                },5000);
                }

               function btcadspace(){
               if(window.location.href.includes("faucet")){
               var anchors = document.getElementsByTagName("a");
               for (var i = 0; i < anchors.length; i++) {
               anchors[i].onclick = function() {return false;};
               }
               }
               }

            setInterval(function(){
            if(messageSelectorsPresent()){
            goToNextUrl();
            }
            },7000);

            setTimeout(function(){

            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 && websiteDataValues.defaultButtonSelectors){
             for(var 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;
                }
                }
                }

        if(!movingToNextUrl && websiteDataValues.toggleCaptchaSelector && Number.isInteger(websiteDataValues.toggleCaptchaSelectorIndex)){
        toggleCaptcha(websiteDataValues.toggleCaptchaSelector,websiteDataValues.toggleCaptchaSelectorIndex);
        }

        if(!movingToNextUrl && document.querySelector(websiteDataValues.inputTextSelector)){
        document.querySelector(websiteDataValues.inputTextSelector).value = websiteDataValues.address;
       setTimeout(function(){
         if(websiteDataValues.inputTextSelectorButton && document.querySelector(websiteDataValues.inputTextSelectorButton)){
         document.querySelector(websiteDataValues.inputTextSelectorButton).click();
            }

            },5000);
           }

        var captchaInterval = setInterval(function(){
            try{
                if(!clicked && unsafeWindow.grecaptcha && unsafeWindow.grecaptcha.getResponse().length > 0){
                    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].getAttribute("data-hcaptcha-response") &&
                   document.querySelectorAll("iframe")[hc].getAttribute("data-hcaptcha-response").length > 0) {
                    document.querySelector(websiteDataValues.captchaButtonSubmitSelector).click();
                    clicked = true;
                    clearInterval(captchaInterval);
                    setTimeout(function(){
                        if(messageSelectorsPresent()){
                            goToNextUrl();
                        }
                    },5000);
                    }
                    }
                    },5000);
                    },5000);

})();