kxBypass Shortlinks Bypasser

Bypass annoying shortlinks and get to your destination!

  1. // ==UserScript==
  2. // @name kxBypass Shortlinks Bypasser
  3. // @namespace https://discord.gg/pqEBSTqdxV
  4. // @version v1.5
  5. // @description Bypass annoying shortlinks and get to your destination!
  6. // @author awaitlol.
  7. // @match https://bstlar.com/*
  8. // @match https://lootlinks.co/*
  9. // @match https://loot-links.com/*
  10. // @match https://loot-link.com/*
  11. // @match https://linksloot.net/*
  12. // @match https://lootdest.com/*
  13. // @match https://lootlink.org/*
  14. // @match https://lootdest.info/*
  15. // @match https://lootdest.org/*
  16. // @match https://links-loot.com/*
  17. // @match https://rekonise.com/*
  18. // @match https://mboost.me/*
  19. // @icon https://i.pinimg.com/736x/aa/2a/e5/aa2ae567da2c40ac6834a44abbb9e9ff.jpg
  20. // @grant none
  21. // @run-at document-end
  22. // ==/UserScript==
  23.  
  24. (function() {
  25. "use strict";
  26.  
  27. const modalHTML = `
  28. <div id="kxBypass-modal">
  29. <div id="kxBypass-modal-content">
  30. <img src="https://i.pinimg.com/736x/aa/2a/e5/aa2ae567da2c40ac6834a44abbb9e9ff.jpg" id="kxBypass-logo">
  31. <h1>kxBypass Development</h1>
  32. <p>Bypass Successful! Here is your link:</p>
  33. <input type="text" id="kxBypass-link" value="" readonly>
  34. <button id="kxBypass-redirect">Redirect</button>
  35. <button id="kxBypass-close">✕</button>
  36. </div>
  37. </div>
  38. `;
  39.  
  40. const overlayHTML = `
  41. <div id="kxBypass-overlay">
  42. <div id="kxBypass-content">
  43. <img src="https://i.pinimg.com/736x/aa/2a/e5/aa2ae567da2c40ac6834a44abbb9e9ff.jpg" id="kxBypass-logo">
  44. <div id="kxBypass-text">
  45. <h1>kxBypass Lootlinks Bypasser!</h1>
  46. <p>Please wait, bypassing...</p>
  47. <div id="kxBypass-timer">
  48. <div id="kxBypass-time-left">Estimated time: <span id="kxBypass-seconds">40</span>s</div>
  49. <div class="kxBypass-progress-bar">
  50. <div class="kxBypass-progress"></div>
  51. </div>
  52. </div>
  53. <div id="kxBypass-logs"></div>
  54. <button id="kxBypass-redirect" disabled>Waiting...</button>
  55. <a href="https://discord.gg/pqEBSTqdxV" class="kxBypass-invite">Join our Discord</a>
  56. </div>
  57. </div>
  58. </div>
  59. `;
  60.  
  61. const styleCSS = `
  62. @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;600&display=swap');
  63.  
  64. #kxBypass-modal {
  65. position: fixed;
  66. top: 0;
  67. left: 0;
  68. width: 100%;
  69. height: 100%;
  70. background: rgba(0, 0, 0, 0.7);
  71. display: flex;
  72. justify-content: center;
  73. align-items: center;
  74. z-index: 10000;
  75. font-family: 'Poppins', sans-serif;
  76. }
  77.  
  78. #kxBypass-modal-content {
  79. background: #fff;
  80. padding: 20px;
  81. border-radius: 12px;
  82. text-align: center;
  83. box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
  84. max-width: 400px;
  85. width: 100%;
  86. position: relative;
  87. }
  88.  
  89. #kxBypass-logo {
  90. width: 50px;
  91. height: 50px;
  92. border-radius: 50%;
  93. margin-bottom: 10px;
  94. }
  95.  
  96. #kxBypass-modal-content h1 {
  97. font-size: 20px;
  98. font-weight: 600;
  99. margin-bottom: 10px;
  100. color: #333;
  101. }
  102.  
  103. #kxBypass-modal-content p {
  104. font-size: 14px;
  105. color: #666;
  106. margin-bottom: 15px;
  107. }
  108.  
  109. #kxBypass-link {
  110. width: 100%;
  111. padding: 8px;
  112. border: 1px solid #ddd;
  113. border-radius: 6px;
  114. text-align: center;
  115. font-size: 14px;
  116. color: #333;
  117. margin-bottom: 15px;
  118. }
  119.  
  120. #kxBypass-modal-content button {
  121. width: 100%;
  122. padding: 10px;
  123. margin-top: 5px;
  124. border: none;
  125. border-radius: 6px;
  126. cursor: pointer;
  127. font-weight: 600;
  128. transition: 0.3s ease;
  129. }
  130.  
  131. #kxBypass-redirect {
  132. background: #3498db;
  133. color: #fff;
  134. }
  135.  
  136. #kxBypass-redirect:hover {
  137. background: #2980b9;
  138. }
  139.  
  140. #kxBypass-overlay {
  141. position: fixed !important;
  142. top: 0 !important;
  143. left: 0 !important;
  144. width: 100% !important;
  145. height: 100vh !important;
  146. background: rgba(255, 255, 255, 0.95) !important;
  147. display: flex !important;
  148. justify-content: center !important;
  149. align-items: center !important;
  150. z-index: 2147483647 !important;
  151. font-family: 'Poppins', sans-serif !important;
  152. animation: fadeIn 0.5s ease-in-out !important;
  153. }
  154.  
  155. @keyframes fadeIn {
  156. from { opacity: 0; }
  157. to { opacity: 1; }
  158. }
  159.  
  160. #kxBypass-content {
  161. display: flex !important;
  162. align-items: center !important;
  163. gap: 15px !important;
  164. max-width: 80% !important;
  165. background: white !important;
  166. padding: 20px !important;
  167. border-radius: 10px !important;
  168. box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.2) !important;
  169. }
  170.  
  171. #kxBypass-text h1 {
  172. font-size: 18px !important;
  173. font-weight: 600 !important;
  174. margin: 0 !important;
  175. color: #333 !important;
  176. }
  177.  
  178. #kxBypass-text p {
  179. font-size: 14px !important;
  180. margin: 5px 0 !important;
  181. color: #666 !important;
  182. }
  183.  
  184. #kxBypass-timer {
  185. margin: 10px 0;
  186. width: 100%;
  187. }
  188.  
  189. #kxBypass-time-left {
  190. font-size: 13px;
  191. color: #555;
  192. margin-bottom: 5px;
  193. text-align: center;
  194. }
  195.  
  196. #kxBypass-time-left span {
  197. font-weight: 600;
  198. color: #3498db;
  199. }
  200.  
  201. .kxBypass-progress-bar {
  202. height: 4px;
  203. background: #e0e0e0;
  204. border-radius: 2px;
  205. overflow: hidden;
  206. }
  207.  
  208. .kxBypass-progress {
  209. height: 100%;
  210. width: 100%;
  211. background: #3498db;
  212. border-radius: 2px;
  213. transition: width 1s linear;
  214. }
  215.  
  216. #kxBypass-logs {
  217. max-height: 100px !important;
  218. overflow-y: auto !important;
  219. font-size: 12px !important;
  220. padding: 5px !important;
  221. background: #f4f4f4 !important;
  222. border-radius: 5px !important;
  223. width: 100% !important;
  224. margin-bottom: 10px !important;
  225. }
  226.  
  227. #kxBypass-overlay #kxBypass-redirect {
  228. background: #3498db !important;
  229. color: white !important;
  230. border: none !important;
  231. padding: 10px 20px !important;
  232. border-radius: 5px !important;
  233. cursor: pointer !important;
  234. font-size: 14px !important;
  235. font-weight: 600 !important;
  236. transition: background 0.2s ease-in-out !important;
  237. }
  238.  
  239. #kxBypass-overlay #kxBypass-redirect:disabled {
  240. background: #999 !important;
  241. cursor: not-allowed !important;
  242. }
  243.  
  244. #kxBypass-overlay #kxBypass-redirect:not(:disabled):hover {
  245. background: #2980b9 !important;
  246. }
  247.  
  248. .kxBypass-invite {
  249. font-size: 14px !important;
  250. color: #3498db !important;
  251. text-decoration: none !important;
  252. font-weight: 600 !important;
  253. }
  254.  
  255. .kxBypass-invite:hover {
  256. text-decoration: underline !important;
  257. }
  258. `;
  259.  
  260. function showBypassModal(link) {
  261. const modalContainer = document.createElement("div");
  262. modalContainer.innerHTML = modalHTML;
  263. document.body.appendChild(modalContainer);
  264.  
  265. const linkInput = document.getElementById("kxBypass-link");
  266. if (linkInput) linkInput.value = link;
  267.  
  268. document.getElementById("kxBypass-redirect").addEventListener("click", () => {
  269. window.location.href = link;
  270. });
  271.  
  272. document.getElementById("kxBypass-close").addEventListener("click", () => {
  273. document.getElementById("kxBypass-modal").remove();
  274. });
  275. }
  276.  
  277. function hasCloudflare() {
  278. const pageText = document.body.innerText || "";
  279. const pageHTML = document.documentElement.innerHTML;
  280. return pageText.includes("Just a moment") || pageHTML.includes("Just a moment");
  281. }
  282.  
  283. function handleBstlar() {
  284. if (hasCloudflare()) return;
  285.  
  286. const path = new URL(window.location.href).pathname.substring(1);
  287.  
  288. fetch(`https://bstlar.com/api/link?url=${path}`, {
  289. headers: {
  290. "accept": "application/json, text/plain, */*",
  291. "accept-language": "en-US,en;q=0.9",
  292. "authorization": "null",
  293. "Referer": window.location.href,
  294. "Referrer-Policy": "same-origin"
  295. },
  296. method: "GET"
  297. })
  298. .then(response => response.json())
  299. .then(data => {
  300. if (data.tasks && data.tasks.length > 0) {
  301. const linkId = data.tasks[0].link_id;
  302. return fetch("https://bstlar.com/api/link-completed", {
  303. headers: {
  304. "accept": "application/json, text/plain, */*",
  305. "content-type": "application/json;charset=UTF-8",
  306. "authorization": "null",
  307. "Referer": window.location.href,
  308. "Referrer-Policy": "same-origin"
  309. },
  310. body: JSON.stringify({ link_id: linkId }),
  311. method: "POST"
  312. });
  313. }
  314. throw new Error("No tasks found in response!");
  315. })
  316. .then(response => response.text())
  317. .then(finalLink => showBypassModal(finalLink))
  318. .catch(console.error);
  319. }
  320.  
  321. function handleLootlinks() {
  322. alert("KxBypass Lootlinks [Expect Bugs]")
  323.  
  324. const originalFetch = window.fetch;
  325. window.fetch = async function(...args) {
  326. const [resource] = args;
  327. const url = typeof resource === 'string' ? resource : resource.url;
  328.  
  329. if (url.includes('/tc')) {
  330. try {
  331. const response = await originalFetch(...args);
  332. const data = await response.clone().json();
  333.  
  334. if (Array.isArray(data) && data.length > 0) {
  335. const { urid, task_id, action_pixel_url, session_id } = data[0];
  336. const shard = parseInt(urid.slice(-5)) % 3;
  337.  
  338. const ws = new WebSocket(`wss://${shard}.${INCENTIVE_SERVER_DOMAIN}/c?uid=${urid}&cat=${task_id}&key=${KEY}&session_id=${session_id}&is_loot=1&tid=${TID}`);
  339.  
  340. ws.onopen = () => setInterval(() => ws.send('0'), 1000);
  341.  
  342. ws.onmessage = e => {
  343. if (e.data.startsWith('r:')) {
  344. const encodedString = e.data.slice(2);
  345. try {
  346. const destinationUrl = decodeURI(encodedString);
  347. showBypassResult(destinationUrl);
  348. } catch (err) {
  349. console.error('Decryption error:', err);
  350. showErrorUI('Failed to decrypt the URL');
  351. }
  352. }
  353. };
  354.  
  355. navigator.sendBeacon(`https://${shard}.${INCENTIVE_SERVER_DOMAIN}/st?uid=${urid}&cat=${task_id}`);
  356. fetch(`https:${action_pixel_url}`);
  357. fetch(`https://${INCENTIVE_SYNCER_DOMAIN}/td?ac=auto_complete&urid=${urid}&cat=${task_id}&tid=${TID}`);
  358. }
  359.  
  360. return response;
  361. } catch (err) {
  362. console.error('Bypass error:', err);
  363. showErrorUI('Bypass failed - please try again');
  364. return originalFetch(...args);
  365. }
  366. }
  367.  
  368. return originalFetch(...args);
  369. };
  370.  
  371. window.open = () => null;
  372.  
  373. setTimeout(() => {
  374. document.open();
  375. document.write("");
  376. document.close();
  377. createBypassUI();
  378. }, 4000);
  379.  
  380. function decodeURI(encodedString, prefixLength = 5) {
  381. let decodedString = '';
  382. const base64Decoded = atob(encodedString);
  383. const prefix = base64Decoded.substring(0, prefixLength);
  384. const encodedPortion = base64Decoded.substring(prefixLength);
  385.  
  386. for (let i = 0; i < encodedPortion.length; i++) {
  387. const encodedChar = encodedPortion.charCodeAt(i);
  388. const prefixChar = prefix.charCodeAt(i % prefix.length);
  389. const decodedChar = encodedChar ^ prefixChar;
  390. decodedString += String.fromCharCode(decodedChar);
  391. }
  392.  
  393. return decodedString;
  394. }
  395.  
  396. function createBypassUI() {
  397. const overlay = document.createElement('div');
  398. overlay.id = 'kxBypass-overlay';
  399. overlay.style.cssText = `
  400. position: fixed;
  401. top: 0;
  402. left: 0;
  403. width: 100%;
  404. height: 100%;
  405. background: rgba(0, 0, 0, 0.95);
  406. display: flex;
  407. flex-direction: column;
  408. justify-content: center;
  409. align-items: center;
  410. z-index: 999999;
  411. color: white;
  412. font-family: 'Poppins', sans-serif;
  413. `;
  414. overlay.innerHTML = `
  415. <div style="font-size: 24px; margin-bottom: 20px;">Bypassing Lootlinks...</div>
  416. <div style="width: 50px; height: 50px; border: 5px solid #f3f3f3; border-top: 5px solid #3498db; border-radius: 50%; animation: spin 1s linear infinite;"></div>
  417. <div style="margin-top: 20px; font-size: 16px;">This may take up to 60 seconds</div>
  418. `;
  419. document.body.appendChild(overlay);
  420.  
  421. const style = document.createElement('style');
  422. style.textContent = `@keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }`;
  423. document.head.appendChild(style);
  424. }
  425.  
  426. function showBypassResult(destinationUrl) {
  427. let overlay = document.getElementById('kxBypass-overlay');
  428. if (!overlay) {
  429. createBypassUI();
  430. overlay = document.getElementById('kxBypass-overlay');
  431. }
  432.  
  433. overlay.innerHTML = `
  434. <div style="font-size: 24px; margin-bottom: 20px;">Bypass Successful!</div>
  435. <div style="font-size: 16px; margin-bottom: 20px; word-break: break-all; max-width: 80%;">${destinationUrl}</div>
  436. <button style="padding: 10px 20px; background: #3498db; color: white; border: none; border-radius: 5px; cursor: pointer;">Continue to Link</button>
  437. `;
  438. overlay.querySelector('button').onclick = () => {
  439. window.location.href = destinationUrl;
  440. };
  441. }
  442.  
  443. function showErrorUI(message) {
  444. let overlay = document.getElementById('kxBypass-overlay');
  445. if (!overlay) {
  446. createBypassUI();
  447. overlay = document.getElementById('kxBypass-overlay');
  448. }
  449.  
  450. overlay.innerHTML = `
  451. <div style="font-size: 24px; margin-bottom: 20px; color: #e74c3c;">Error Occurred</div>
  452. <div style="font-size: 16px; margin-bottom: 20px;">${message}</div>
  453. <div style="font-size: 14px; color: #aaa;">Check console for details</div>
  454. `;
  455. }
  456. }
  457.  
  458. function handleRekonise() {
  459. if (hasCloudflare()) return;
  460.  
  461. fetch(`https://api.rekonise.com/social-unlocks${location.pathname}/unlock`, {
  462. headers: {
  463. "accept": "application/json, text/plain, */*",
  464. "content-type": "application/json;charset=UTF-8",
  465. "authorization": "null",
  466. "Referer": window.location.href,
  467. "Referrer-Policy": "same-origin"
  468. },
  469. method: "GET"
  470. })
  471. .then(response => response.json())
  472. .then(data => {
  473. const responseText = JSON.stringify(data);
  474. const urlMatch = responseText.match(/(https?:\/\/[^\s"]+)/);
  475. const foundUrl = urlMatch ? urlMatch[0] : null;
  476.  
  477. if (foundUrl) {
  478. showBypassModal(foundUrl);
  479. } else {
  480. showBypassModal("Error, please join Discord Server in the Greasyfork script.");
  481. }
  482. })
  483. .catch(console.error);
  484. }
  485.  
  486. function handleMboost() {
  487.  
  488. const pageContent = document.documentElement.outerHTML;
  489. const targetUrlMatches = [...pageContent.matchAll(/"targeturl\\":\\"(https?:\/\/[^\\"]+)/g)];
  490.  
  491. targetUrlMatches.forEach((match, index) => {
  492. const url = match[1];
  493. showBypassModal(url);
  494. });
  495.  
  496. if (targetUrlMatches.length === 0) {
  497. showBypassModal('Could not find destination! Please join our Discord.');
  498. }
  499.  
  500. }
  501.  
  502. const style = document.createElement('style');
  503. style.textContent = styleCSS;
  504. document.head.appendChild(style);
  505.  
  506. if (window.location.href.includes("bstlar.com")) handleBstlar();
  507. else if (window.location.href.includes("loot")) handleLootlinks();
  508. else if (window.location.href.includes("rekonise.com/")) handleRekonise();
  509. else if (window.location.href.includes("mboost.me/")) handleMboost()
  510. })();