Auto BTC Rotator with PTC Support

auto faucets

当前为 2024-03-08 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Auto BTC Rotator with PTC Support
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.3
  5. // @description auto faucets
  6. // @author vikiweb
  7. // @match https://btcadspace.com/*
  8. // @match https://firefaucet.win/*
  9. // @icon https://www.google.com/s2/favicons?sz=64&domain=btcadspace.com
  10. // @grant GM_xmlhttpRequest
  11. // @grant GM_setValue
  12. // @grant GM_getValue
  13. // @license MIT
  14. // ==/UserScript==
  15.  
  16. (function() {
  17. 'use strict';
  18.  
  19. let sites = [
  20. {faucetUrl: "https://btcadspace.com/faucet", username: "", password: "", enableFaucet:true, enableSurf:false, faucetCaptcha:false},
  21. {faucetUrl: "https://firefaucet.win/faucet/", username: "", password: "",},
  22. ];
  23.  
  24. let sitesMap = [
  25. {
  26. websiteUrl:"https://btcadspace.com",
  27. homePageCheck : "body section.slider",
  28. claimPopupOpen : ".btn-primary.btn-lg",
  29. loginCaptchaCheck : true,
  30. surfSelectors:".card:not(.visited-link)",
  31. surfStartBtn:".card-body #box .start-btn",
  32. },
  33. {
  34. websiteUrl:"https://firefaucet.win",
  35. homePageCheck : "form[action='/login']",
  36. claimPopupOpen : "",
  37. loginCaptchaCheck : true,
  38. surfSelectors:".card.ptc-advert-card .watch-btn",
  39. surfStartBtn:".card-body #box .start-btn",
  40. additionalFunction : fireFaucet,
  41. },
  42. ]
  43.  
  44.  
  45. let check_address = window.location.origin;
  46. let currentFaucetUrl = new URL(window.location.href);
  47. let currentOrigin = currentFaucetUrl.origin;
  48. let currentIndex = sites.findIndex(site => site.faucetUrl.includes(currentOrigin));
  49. let websiteIndex = sitesMap.findIndex(website => website.websiteUrl.includes(currentOrigin));
  50. let oldfunction = unsafeWindow.open;
  51. let windowName = "";
  52. let interval = 1;
  53.  
  54. function movetonext() {
  55. if (currentIndex === sites.length - 1) {
  56. currentIndex = 0;
  57. console.log("All sites visited. Starting from 0 again.");
  58. } else {
  59. currentIndex++;
  60. }
  61. window.location.href = sites[currentIndex].faucetUrl;
  62. }
  63.  
  64. function checkWindow(params1, params2) {
  65. console.log(params1 + params2);
  66. if (!params2 || params2 == "_blank") {
  67. windowName = "popUpWindow";
  68. } else {
  69. windowName = params2;
  70. }
  71. console.log("WindowName is::" + windowName);
  72. return oldfunction(params1, windowName);
  73. };
  74.  
  75. function movetosurf() {
  76. window.location.href = check_address +'/surf'
  77. }
  78.  
  79. // Check if captcha is checked
  80. function isCaptchaChecked() {
  81. return grecaptcha && grecaptcha.getResponse().length !== 0;
  82. }
  83.  
  84. // Check if on faucet page and claim button is disabled
  85. function isFaucetClaimButtonDisabled(claimPopup) {
  86. return document.querySelector(claimPopup) && document.querySelector(claimPopup).disabled;
  87. }
  88.  
  89. // Check if on faucet page is fully claimed
  90. function isFaucetFullyClaimed() {
  91. return document.querySelector(".notyf-announcer") && document.querySelector(".notyf-announcer").innerText.includes('You reached the maximum')
  92. }
  93.  
  94. function visibleCheck(elm) {
  95. if(!elm.offsetHeight && !elm.offsetWidth) { return false; }
  96. if(getComputedStyle(elm).visibility === 'hidden') { return false; }
  97. return true;
  98. }
  99.  
  100. function websiteLogin(site){
  101. setInterval(function() {
  102. if (document.querySelector("#username")) {
  103. document.querySelector("#username").value = site.username;
  104. }
  105. if (document.querySelector("#password")) {
  106. document.querySelector("#password").value = site.password;
  107. }
  108. if (sitesMap[websiteIndex].loginCaptchaCheck){
  109. if (isCaptchaChecked()) {
  110. if (document.querySelector("button[type='submit']")) {
  111. document.querySelector("button[type='submit']").click();
  112. }
  113. }
  114. }else{
  115. if (document.querySelector("button[type='submit']")) {
  116. document.querySelector("button[type='submit']").click();
  117. }
  118. }
  119.  
  120. }, 6000);
  121. }
  122.  
  123. function fireFaucet(site) {
  124. if (document.querySelector(sitesMap[websiteIndex].homePageCheck)) {
  125. websiteLogin(site)
  126. }
  127.  
  128. if(document.querySelector(".dashboard-action-btns")){
  129. if(document.querySelector("[href='/daily']") && !document.querySelector("[href='/daily']").classList.contains('disabled')){
  130. document.querySelector("[href='/daily']").click();
  131. }else if(document.querySelector(".dashboard-action-btns [href='/faucet/']") && !document.querySelector(".dashboard-action-btns [href='/faucet/']").classList.contains('disabled')){
  132. document.querySelector(".dashboard-action-btns [href='/faucet/']").click();
  133. }else{
  134. movetonext()
  135. }
  136. }
  137.  
  138. if (window.location.href.includes(check_address +'/daily') || window.location.href.includes(check_address +'/faucet/')) {
  139. setInterval(function() {
  140. if (document.querySelector("button[type='submit']")) {
  141. if (isCaptchaChecked()) {
  142. document.querySelector("button[type='submit']").click();
  143. }
  144. }
  145. if(document.querySelector(".btn.earn-btns") && document.querySelector(".btn.earn-btns").innerText.includes("Continue") || document.querySelector(".btn.earn-btns").innerText.includes("Go Home")){
  146. document.querySelector(".btn.earn-btns").click();
  147. }
  148. }, 6000);
  149. }
  150. }
  151.  
  152. // Process current site
  153. function processSite(site) {
  154. if (sitesMap[websiteIndex].additionalFunction) {
  155. sitesMap[websiteIndex].additionalFunction(site);
  156. }else{
  157. if(document.querySelector(sitesMap[websiteIndex].homePageCheck) && (window.location.href.includes(check_address))) {
  158. window.location.replace(check_address + "/login");
  159. }
  160.  
  161. if (window.location.href.includes(check_address +'/login')) {
  162. console.log(sitesMap[websiteIndex], websiteIndex)
  163. websiteLogin(site)
  164. }
  165.  
  166. if(window.location.href.includes(check_address +'/account')) {
  167. if(site.enableFaucet){
  168. window.location.replace(check_address +'/faucet');
  169. }else{
  170. window.location.replace(check_address +'/surf');
  171. }
  172. }
  173.  
  174.  
  175. if (window.location.href.includes(check_address +'/faucet')) {
  176.  
  177. let fauceClick = false;
  178.  
  179. setInterval(function() {
  180. if (document.querySelector(sitesMap[websiteIndex].claimPopupOpen) && fauceClick === false) {
  181. document.querySelector(sitesMap[websiteIndex].claimPopupOpen).click();
  182. fauceClick = true;
  183. }
  184. }, 5000);
  185.  
  186. setInterval(function() {
  187. if(document.querySelector("button[type='submit']")){
  188. if(site.faucetCaptcha == true){
  189. if (isCaptchaChecked()) {
  190. document.querySelector("button[type='submit']").click();
  191. }
  192. }else{
  193. document.querySelector("button[type='submit']").click();
  194. }
  195. }
  196. if(isFaucetFullyClaimed()){
  197. movetonext();
  198. }
  199. }, 5000);
  200. setInterval(function() {
  201. if (isFaucetClaimButtonDisabled(sitesMap[websiteIndex].claimPopupOpen) && site.enableSurf == true) {
  202. movetosurf()
  203. }else if(isFaucetClaimButtonDisabled(sitesMap[websiteIndex].claimPopupOpen)){
  204. movetonext()
  205. }
  206. }, interval * 60000);
  207. }
  208.  
  209. if(window.location.href.includes(check_address +'/surf')){
  210.  
  211. let surflink = document.querySelectorAll(sitesMap[websiteIndex].surfSelectors);
  212. let surfLinkClick = false;
  213.  
  214. if(surflink.length || surflink.length != 0){
  215. if(surflink.length >= 1 && surfLinkClick == false){
  216. //surflink[0].style.backgroundColor = "red";
  217. surflink[0].click()
  218. surfLinkClick = true
  219. }
  220. }else{
  221. movetonext()
  222. }
  223.  
  224. setTimeout(function(){
  225. let surfNext = document.querySelectorAll(sitesMap[websiteIndex].surfStartBtn);
  226. let surfNextClick = false;
  227. if(surfNext.length){
  228. if(surfNext.length >= 1 && surfNextClick == false){
  229. surfNext[0].click();
  230. surfNextClick = true
  231. }
  232. }
  233. }, 3000);
  234.  
  235. unsafeWindow.open = checkWindow;
  236.  
  237. unsafeWindow.onbeforeunload = function() {
  238. unsafeWindow.open('', windowName).close();
  239. };
  240.  
  241. if( document.querySelector("#timer") ){
  242. setInterval(function () {
  243. if (document.querySelector("#timer").innerText.includes("Great")){
  244. unsafeWindow.open('', windowName).close();
  245. }else if (document.querySelector("#timer").innerText.includes("Oops!")){
  246. unsafeWindow.open('', windowName).close();
  247. movetosurf()
  248. }
  249. }, 1500);
  250. }
  251.  
  252. if(document.querySelector("#tryCaptcha")){
  253. setInterval(function() {
  254. if (isCaptchaChecked()) {
  255. document.querySelector("#tryCaptcha").click();
  256. }
  257. }, 5000);
  258. }
  259.  
  260. }
  261. }
  262. }
  263.  
  264. // Start processing the first site
  265. processSite(sites[currentIndex]);
  266. })();