Free coins from Bitgames.io

free autoroll faucet

  1. // ==UserScript==
  2. // @name Free coins from Bitgames.io
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description free autoroll faucet
  6. // @author elmer76
  7. // @license MIT
  8. // @match https://faucet.bitgames.io/*
  9. // @match https://www.bitgames.io/*
  10. // @icon https://www.google.com/s2/favicons?domain=bitgames.io
  11. // @connect faucet.bitgames.io
  12. // @connect www.bitgames.io
  13. // @grant GM_xmlhttpRequest
  14. // ==/UserScript==
  15. /*
  16. ================================================================================================================================================== |
  17. | donate please btc : 36v6NbQCeDp1LHDtpJgoBMq7u3J5zWipDW TY and enjoy |
  18. | Please use my referal link https://www.bitgames.io/?affid=12352291 |
  19. ==================================================================================================================================================
  20. */
  21.  
  22. (function() {
  23. 'use strict';
  24.  
  25. var clicked = false;
  26. var websiteData = [{url : "https://www.bitgames.io/offerwalls/faucet/", regex: "faucet"},{url : "https://www.bitgames.io/offerwalls/"},];
  27. var websiteMap = [{website: ["bitgames.io"],additionalFunctions: bitgames,allMessageSelectors: ["div.title"],messagesToCheckBeforeMovingToNextUrl: ["You can mine in"],timeoutbeforeMovingToNextUrl: 270000},];
  28.  
  29. function triggerEvent(el, type) {
  30. try{
  31. var e = document.createEvent('HTMLEvents');
  32. e.initEvent(type, false, true);
  33. el.dispatchEvent(e);
  34. }catch(exception){
  35. console.log(exception);
  36. }
  37. }
  38.  
  39. function toggleCaptcha(selector, index){
  40. document.querySelector(selector).selectedIndex = index;
  41. var targetNode = document.querySelector(selector);
  42. if (targetNode) {
  43. setTimeout(function() {
  44. triggerEvent(targetNode, 'change');
  45. }, 5000);
  46. }
  47. }
  48.  
  49. String.prototype.includesOneOf = function(arrayOfStrings) {
  50.  
  51. if (!Array.isArray(arrayOfStrings)) {
  52. return this.toLowerCase().includes(arrayOfStrings.toLowerCase());
  53. }
  54.  
  55. for (var i = 0; i < arrayOfStrings.length; i++) {
  56. if (this.toLowerCase().includes(arrayOfStrings[i].toLowerCase())) {
  57. return true;
  58. }
  59. }
  60. return false;
  61. }
  62.  
  63. var websiteDataValues = {};
  64.  
  65. for (let value of Object.values(websiteMap)) {
  66. if(window.location.href.includesOneOf(value.website)){
  67. websiteDataValues.inputTextSelector= value.inputTextSelector;
  68. websiteDataValues.inputTextSelectorButton = value.inputTextSelectorButton;
  69. websiteDataValues.defaultButtonSelectors = value.defaultButtonSelectors;
  70. websiteDataValues.claimButtonSelector = value.claimButtonSelector;
  71. websiteDataValues.captchaButtonSubmitSelector = value.captchaButtonSubmitSelector;
  72. websiteDataValues.allMessageSelectors = value.allMessageSelectors;
  73. websiteDataValues.messagesToCheckBeforeMovingToNextUrl = value.messagesToCheckBeforeMovingToNextUrl;
  74. websiteDataValues.successMessageSelectors = value.successMessageSelectors;
  75. websiteDataValues.toggleCaptchaSelector = value.toggleCaptchaSelector;
  76. websiteDataValues.toggleCaptchaSelectorIndex = value.toggleCaptchaSelectorIndex;
  77. websiteDataValues.timeoutbeforeMovingToNextUrl = value.timeoutbeforeMovingToNextUrl;
  78. websiteDataValues.additionalFunctions = value.additionalFunctions;
  79. break;
  80. }
  81. }
  82.  
  83. var count = 0;
  84. var addressAssigned = false;
  85. for (let value of Object.values(websiteData)) {
  86. count = count + 1;
  87. if(value.url.includes(window.location.hostname) && window.location.href.includes("/" + value.regex)){
  88. addressAssigned = true;
  89. break;
  90. }
  91. }
  92.  
  93. if(!addressAssigned){
  94. count = 0;
  95. for (let value of Object.values(websiteData)) {
  96. count = count + 1;
  97. if(value.url.includes(window.location.hostname) && !value.regex){
  98. addressAssigned = true;
  99. break;
  100. }
  101. }
  102. }
  103.  
  104. async function getNextUrl(){
  105. if(count >= websiteData.length){
  106. count = 0;
  107. websiteDataValues.nextUrl = websiteData[count].url;
  108. }else{
  109. websiteDataValues.nextUrl = websiteData[count].url;
  110. }
  111. pingTest(websiteDataValues.nextUrl);
  112. }
  113.  
  114. var isNextUrlReachable = false;
  115.  
  116. function pingTest(websiteUrl) {
  117. console.log(websiteUrl);
  118. GM_xmlhttpRequest({
  119. method: "GET",
  120. url: websiteUrl,
  121. headers: {
  122. "Content-Type": "application/x-www-form-urlencoded"
  123. },
  124. timeout: 5000,
  125. onload: function(response) {
  126.  
  127. console.log("reachable");
  128. isNextUrlReachable = true;
  129. },
  130. onerror: function(e) {
  131. console.log("error");
  132. count=count+1;
  133. getNextUrl();
  134. },
  135. ontimeout: function() {
  136. console.log("timeout");
  137. count=count+1;
  138. getNextUrl();
  139. },
  140. });
  141. }
  142.  
  143. async function delay(ms) {
  144. return new Promise(resolve => setTimeout(resolve, ms))
  145. }
  146.  
  147. var movingToNextUrl = false;
  148. async function goToNextUrl() {
  149. if((window && window.self == top) || (unsafeWindow && unsafeWindow.self == top)){
  150. console.log("Going to next Url");
  151. if(!movingToNextUrl){
  152. movingToNextUrl = true;
  153. getNextUrl();
  154. while (!isNextUrlReachable) {
  155. await delay(3000);
  156. }
  157. console.log("Done");
  158. window.location.href = websiteDataValues.nextUrl;
  159. }
  160. }
  161. }
  162.  
  163. async function goToWithdrawPage() {
  164. if(!movingToNextUrl){
  165. movingToNextUrl = true;
  166. window.location.href = websiteDataValues.withdrawPageUrl;
  167. }
  168. }
  169.  
  170. var delayBeforeMovingToNextUrl = 120000;
  171. if(websiteDataValues.timeoutbeforeMovingToNextUrl){
  172. delayBeforeMovingToNextUrl = websiteDataValues.timeoutbeforeMovingToNextUrl;
  173. }
  174.  
  175. setTimeout(function(){
  176. goToNextUrl();
  177. },delayBeforeMovingToNextUrl);
  178.  
  179. function messageSelectorsPresent(){
  180. if(websiteDataValues.allMessageSelectors){
  181. for(var j=0;j<websiteDataValues.allMessageSelectors.length;j++){
  182. for(var k=0; k< document.querySelectorAll(websiteDataValues.allMessageSelectors[j]).length;k++){
  183. if(document.querySelectorAll(websiteDataValues.allMessageSelectors[j])[k] &&
  184. (document.querySelectorAll(websiteDataValues.allMessageSelectors[j])[k].innerText.includesOneOf(websiteDataValues.messagesToCheckBeforeMovingToNextUrl) ||
  185. (document.querySelectorAll(websiteDataValues.allMessageSelectors[j])[k].value &&
  186. document.querySelectorAll(websiteDataValues.allMessageSelectors[j])[k].value.includesOneOf(websiteDataValues.messagesToCheckBeforeMovingToNextUrl)))){
  187. return true;
  188. }
  189. }
  190. }
  191. }
  192. return false;
  193. }
  194.  
  195. function successMessageSelectorsPresent(){
  196. if(websiteDataValues.successMessageSelectors){
  197. for(var j=0;j<websiteDataValues.successMessageSelectors.length;j++){
  198. for(var k=0; k< document.querySelectorAll(websiteDataValues.successMessageSelectors[j]).length;k++){
  199. if(document.querySelectorAll(websiteDataValues.successMessageSelectors[j])[k] && document.querySelectorAll(websiteDataValues.successMessageSelectors[j])[k].innerText.includesOneOf(websiteDataValues.messagesToCheckBeforeMovingToNextUrl)){
  200. return true;
  201. }
  202. }
  203. }
  204. }
  205. return false;
  206. }
  207.  
  208. function bitgames(){
  209. var clicked = false;
  210. var formSubmitted = false;
  211. var modalFormClicked = false;
  212.  
  213. if(document.querySelector(".level-easy.enabled") && document.querySelector(".level-easy.enabled").innerText.includes("HCaptcha")){
  214. document.querySelector(".level-easy.enabled").click();
  215. }
  216.  
  217. if(document.querySelector("div.--hcaptcha-insticator-center > div > form > center:nth-child(3) > div > div > p")){
  218. var ranquestion = document.querySelector("div.--hcaptcha-insticator-center > div > form > center:nth-child(3) > div > div > p").innerText;
  219. ranquestion= ranquestion.replace("What is ","");
  220. ranquestion= ranquestion.split("+");
  221. document.querySelector("#humanverify").value = Number(ranquestion[0].trim()) + Number(ranquestion[1].trim())
  222. }
  223.  
  224. setInterval(function(){
  225. if(!clicked && document.querySelector("button.btn.btn-primary.btn-show")){
  226. document.querySelector("button.btn.btn-primary.btn-show").click()
  227. clicked = true;
  228. }
  229. if(document.querySelector(".btn-mine") && document.querySelector(".btn-mine").style.display =="inline"){
  230. document.querySelector(".btn-mine").click();
  231. }
  232. if(formSubmitted && !modalFormClicked && document.querySelector("#insticator-modal button.btn.btn-primary.btn-show")){
  233. document.querySelector("#insticator-modal button.btn.btn-primary.btn-show").click();
  234. modalFormClicked = true;
  235. }
  236. if(document.querySelector("iframe") && document.querySelector("iframe").getAttribute("data-hcaptcha-response") &&
  237. document.querySelector("iframe").getAttribute("data-hcaptcha-response").length > 0) {
  238. if(document.querySelector(".btn-solve")){
  239. document.querySelector(".btn-solve").click();
  240. }
  241. if(document.querySelector(".btn.btn-primary.btn-solve-insticator")){
  242. document.querySelector(".btn.btn-primary.btn-solve-insticator").click();
  243. }
  244. if(!formSubmitted && document.querySelector("form.puzzle-form")){
  245. formSubmitted = true;
  246. clicked = false;
  247. document.querySelector(".form.puzzle-form").submit();
  248. }
  249. if(document.querySelector("#btn-verify")){
  250. document.querySelector("#btn-verify").click();
  251. }
  252. }
  253. },5000);
  254. }
  255. setTimeout(function(){
  256. if( websiteDataValues.additionalFunctions){
  257. websiteDataValues.additionalFunctions();
  258. }
  259.  
  260. if(!movingToNextUrl && messageSelectorsPresent()){
  261. goToNextUrl();
  262. }
  263.  
  264. if(!movingToNextUrl && websiteDataValues.defaultButtonSelectors){
  265. for(var i=0;i<websiteDataValues.defaultButtonSelectors.length ;i++){
  266. if(document.querySelector(websiteDataValues.defaultButtonSelectors[i])){
  267. triggerEvent(document.querySelector(websiteDataValues.defaultButtonSelectors[i]), 'mousedown');
  268. triggerEvent(document.querySelector(websiteDataValues.defaultButtonSelectors[i]), 'mouseup');
  269. document.querySelector(websiteDataValues.defaultButtonSelectors[i]).click();
  270. break;
  271. }
  272. }
  273. }
  274.  
  275. if(!movingToNextUrl && websiteDataValues.toggleCaptchaSelector && Number.isInteger(websiteDataValues.toggleCaptchaSelectorIndex)){
  276. toggleCaptcha(websiteDataValues.toggleCaptchaSelector,websiteDataValues.toggleCaptchaSelectorIndex);
  277. }
  278. if(!movingToNextUrl && document.querySelector(websiteDataValues.inputTextSelector)){
  279. document.querySelector(websiteDataValues.inputTextSelector).value = websiteDataValues.address;
  280. setTimeout(function(){
  281. if(websiteDataValues.inputTextSelectorButton && document.querySelector(websiteDataValues.inputTextSelectorButton)){
  282. document.querySelector(websiteDataValues.inputTextSelectorButton).click();
  283. }
  284. },5000);
  285. }
  286.  
  287. var captchaInterval = setInterval(function(){
  288. try{
  289. if(!clicked && unsafeWindow.grecaptcha && unsafeWindow.grecaptcha.getResponse().length > 0){
  290. document.querySelector(websiteDataValues.captchaButtonSubmitSelector).click();
  291. clicked = true;
  292. clearInterval(captchaInterval);
  293. setTimeout(function(){
  294. if(messageSelectorsPresent()){
  295. goToNextUrl();
  296. }
  297. },5000);
  298. }
  299. }catch(e){
  300. }
  301. for(var hc=0; hc < document.querySelectorAll("iframe").length; hc++){
  302. if(! clicked && document.querySelectorAll("iframe")[hc] &&
  303. document.querySelectorAll("iframe")[hc].getAttribute("data-hcaptcha-response") &&
  304. document.querySelectorAll("iframe")[hc].getAttribute("data-hcaptcha-response").length > 0) {
  305. document.querySelector(websiteDataValues.captchaButtonSubmitSelector).click();
  306. clicked = true;
  307. clearInterval(captchaInterval);
  308. setTimeout(function(){
  309. if(messageSelectorsPresent()){
  310. goToNextUrl();
  311. }
  312. },5000);
  313. }
  314. }
  315. },5000);
  316. },5000);
  317.  
  318.  
  319.  
  320. })();