liteonion

Autoclaim faucet, login manual

  1. // ==UserScript==
  2. // @name liteonion
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.0.2
  5. // @description Autoclaim faucet, login manual
  6. // @author iewilmaestro
  7. // @license Copyright iewilmaestro
  8. // @match *://liteonion.online/instant/*
  9. // @icon https://www.google.com/s2/favicons?sz=64&domain=liteonion.online
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. 'use strict';
  15.  
  16. // Pilih semua elemen <a> di halaman
  17. const links = document.querySelectorAll('a');
  18. // Ambil href dan filter yang mengandung '/faucet/'
  19. const faucetList = Array.from(links)
  20. .map(link => link.href) // Ambil href dari tiap link
  21. .filter(href => href.includes('/faucet/')); // Filter yang mengandung '/faucet/'
  22. //let faucetLinks = [...new Set(faucetList)] // Menghilangkan duplikat
  23. //.filter(url => !url.includes('#faucet') && !url.includes('#links')); // Menyaring URL yang mengandung '#faucet' atau '#links'
  24. //console.log(faucetLinks);
  25.  
  26. let faucetLinks = [
  27. "https://liteonion.online/instant/faucet/currency/ltc",
  28. "https://liteonion.online/instant/faucet/currency/doge",
  29. "https://liteonion.online/instant/faucet/currency/usdt",
  30. "https://liteonion.online/instant/faucet/currency/sol",
  31. "https://liteonion.online/instant/faucet/currency/trx",
  32. "https://liteonion.online/instant/faucet/currency/bnb",
  33. "https://liteonion.online/instant/faucet/currency/bch",
  34. "https://liteonion.online/instant/faucet/currency/dash",
  35. "https://liteonion.online/instant/faucet/currency/dgb",
  36. "https://liteonion.online/instant/faucet/currency/eth",
  37. "https://liteonion.online/instant/faucet/currency/fey",
  38. "https://liteonion.online/instant/faucet/currency/zec",
  39. "https://liteonion.online/instant/faucet/currency/matic",
  40. "https://liteonion.online/instant/faucet/currency/xmr",
  41. "https://liteonion.online/instant/faucet/currency/ton"
  42. ];
  43.  
  44. if (faucetLinks.length > 0) {
  45. let currentIndex = localStorage.getItem('currentIndex') ? parseInt(localStorage.getItem('currentIndex')) : 0;
  46.  
  47. function navigateToNextLink() {
  48.  
  49. checkForFirewall();
  50.  
  51. if (document.querySelector('a[href="https://liteonion.online/instant/withdraw"]')) {
  52. window.location.href = faucetLinks[currentIndex];
  53. }
  54.  
  55. // Cek jika faucet memiliki batas klaim harian yang tercapai
  56. const Daily = document.body.outerText.includes('Daily claim limit');
  57. const Bankrut = document.body.outerText.includes("The faucet does not have");
  58. const Please = document.body.outerText.includes("Please wait");
  59. const Invalid = document.body.outerText.includes("Invalid");
  60. const go = document.body.outerText.includes("Go Claim");
  61. const success = document.body.outerText.includes("has been sent to you");
  62.  
  63. if(Daily || Bankrut){
  64. faucetLinks = faucetLinks.filter(link => link !== window.location.href);
  65.  
  66. console.log(faucetLinks); // Cek hasil setelah filter
  67. }
  68.  
  69. if (Daily || Bankrut || Please || Invalid || go || success) {
  70. // Pindah ke URL faucet berikutnya jika ada
  71. if (faucetLinks.length > 0) {
  72. let currentAwal = currentIndex;
  73. currentIndex = (currentIndex + 1) % faucetLinks.length; // Naikkan currentIndex
  74. localStorage.setItem('currentIndex', currentIndex); // Simpan currentIndex ke localStorage
  75. if(currentAwal == currentIndex){
  76. currentIndex = (currentIndex + 1) % faucetLinks.length; // Naikkan currentIndex
  77. localStorage.setItem('currentIndex', currentIndex); // Simpan currentIndex ke localStorage
  78. }
  79. console.log(`Menavigasi ke: ${faucetLinks[currentIndex]}`);
  80. window.location.href = faucetLinks[currentIndex];
  81. }
  82. return; // Jangan lanjutkan lebih jauh jika faucet ini sudah diblokir
  83. }
  84.  
  85. const currentUrl = window.location.href;
  86. const urlStorage = localStorage.getItem('currentUrl');
  87. let isClaimClicked = localStorage.getItem('isClaimClicked') === 'true';
  88. if (faucetLinks.length > 1 && currentUrl !== urlStorage) {
  89. localStorage.removeItem('isClaimClicked');
  90. localStorage.removeItem('currentUrl');
  91. console.log('URL saat ini berbeda dengan yang ada di localStorage.');
  92. // Lakukan aksi sesuai kebutuhan di sini
  93. } else {
  94. console.log('URL saat ini sama dengan yang ada di localStorage.');
  95. return;
  96. }
  97.  
  98. // Mengecek apakah faucet saat ini sudah selesai CAPTCHA-nya
  99. const recaptchav3 = document.querySelector('input[name="recaptchav3"]')?.value;
  100. const turnstile = document.querySelector('input[name="cf-turnstile-response"]')?.value;
  101. const recaptcha = document.querySelector('input[name="g-recaptcha-response"]')?.value;
  102. const hcaptcha = document.querySelector('input[name="h-captcha-response"]')?.value;
  103.  
  104. // Cek apakah salah satu captcha sudah terisi
  105. if ((!recaptchav3 || recaptchav3.trim() === "") && (!turnstile || turnstile.trim() === "") && (!recaptcha || recaptcha.trim() === "") && (!hcaptcha || hcaptcha.trim() === "")) {
  106. console.log('Captcha belum diselesaikan. Tunggu...');
  107. return; // Tunggu tanpa reload halaman jika keduanya belum diisi
  108. }
  109.  
  110. setTimeout(() => {
  111. const claimButton = document.querySelector('#subbutt');
  112.  
  113. if (claimButton && claimButton.innerText.includes('Claim Now') && !isClaimClicked) {
  114. console.log('Captcha selesai, mengklik tombol Claim Now');
  115. claimButton.click();
  116.  
  117. localStorage.setItem('currentUrl', window.location.href);
  118. localStorage.setItem('isClaimClicked', 'true');
  119.  
  120. // Tambahkan observer untuk memantau perubahan halaman
  121. observePageLoad();
  122. checkPageTransition(); // Memeriksa apakah halaman berpindah
  123. } else {
  124. console.log('Tombol Claim Now tidak ditemukan atau sudah diklik sebelumnya');
  125. }
  126. }, 6000); // Tunggu 6 detik setelah halaman dimuat
  127. }
  128.  
  129. // Fungsi untuk mengecek adanya firewall atau proteksi berdasarkan pathname URL
  130. function checkForFirewall() {
  131. setTimeout(() => {
  132. // Mengecek apakah pathname URL mengandung 'firewall'
  133. if (document.location.pathname.includes('firewall')) {
  134. console.log('Firewall atau proteksi terdeteksi berdasarkan pathname URL.');
  135.  
  136. // Mengambil nilai dari input captcha berdasarkan 'name'
  137. const turnstile = document.querySelector('input[name="cf-turnstile-response"]')?.value;
  138. const iframeHcap = document.querySelector('iframe[src*="hcaptcha.com"]');
  139. const hcaptcha = iframeHcap?.getAttribute('data-hcaptcha-response');
  140.  
  141. // Recaptcha ribet
  142. console.log("hcaptcha " + hcaptcha)
  143. console.log("turnstile " + turnstile)
  144. // Cek apakah salah satu captcha sudah terisi
  145. if ((!turnstile || turnstile.trim() === "") && (!hcaptcha || hcaptcha.trim() === "")) {
  146. console.log('Captcha firewall belum diselesaikan. Tunggu...');
  147. return; // Tunggu tanpa reload halaman jika keduanya belum diisi
  148. }
  149.  
  150. // Cari tombol 'Unlock' dan klik
  151. const unlockButton = document.querySelector('button.btn.btn-primary.w-md');
  152. if (unlockButton && unlockButton.innerText.includes('Unlock')) {
  153. console.log('Captcha firewall selesai, mengklik tombol Unlock');
  154. unlockButton.click(); // Klik tombol Unlock
  155. }
  156.  
  157. } else {
  158. console.log('Tidak ada indikasi firewall pada pathname URL.');
  159. // Lanjutkan dengan alur berikutnya
  160. }
  161. }, 6000); // Tunggu 6 detik setelah tombol diklik untuk memeriksa firewall
  162. }
  163.  
  164. setInterval(navigateToNextLink, 10000);
  165. } else {
  166. console.log('Tidak ditemukan URL faucet!');
  167. }
  168. })();