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 1.5.1
  5. // @description Bypass annoying shortlinks and get to your destination!
  6. // @author awaitlol.
  7. // @match https://bstlar.com/*
  8. // @match *://loot-link.com/s?*
  9. // @match *://loot-links.com/s?*
  10. // @match *://lootlink.org/s?*
  11. // @match *://lootlinks.co/s?*
  12. // @match *://lootdest.info/s?*
  13. // @match *://lootdest.org/s?*
  14. // @match *://lootdest.com/s?*
  15. // @match *://links-loot.com/s?*
  16. // @match *://linksloot.net/s?*
  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. setTimeout(() => {
  323. document.open();
  324. document.write("");
  325. document.close();
  326. createBypassUI();
  327. }, 2500);
  328.  
  329. function createBypassUI() {
  330. const overlay = document.createElement('div');
  331. overlay.id = 'kxBypass-overlay';
  332. overlay.style.cssText = `
  333. position: fixed;
  334. top: 0;
  335. left: 0;
  336. width: 100%;
  337. height: 100%;
  338. background: rgba(0, 0, 0, 0.95);
  339. display: flex;
  340. flex-direction: column;
  341. justify-content: center;
  342. align-items: center;
  343. z-index: 999999;
  344. color: white;
  345. font-family: 'Poppins', sans-serif;
  346. text-align: center;
  347. padding: 20px;
  348. box-sizing: border-box;
  349. `;
  350. overlay.innerHTML = `
  351. <div style="font-size: 24px; margin-bottom: 30px; font-weight: 600;">Lootlinks has been removed temporarily</div>
  352. <div style="position: relative; width: 50px; height: 50px; margin-bottom: 30px;">
  353. <div style="position: absolute; width: 100%; height: 5px; background: red; transform: rotate(45deg); top: 50%;"></div>
  354. <div style="position: absolute; width: 100%; height: 5px; background: red; transform: rotate(-45deg); top: 50%;"></div>
  355. </div>
  356. <div style="font-size: 16px; max-width: 600px; line-height: 1.5;">
  357. Due to a DMCA complaint from Lootlabs, we have to temporarily remove the Lootlinks Bypass from our userscript.<br><br>
  358. Please downgrade to version 1.5 for the moment and join our Discord for updates:<br>
  359. <a href="https://discord.gg/pqEBSTqdxV" style="color: #3498db; text-decoration: none; font-weight: 500;">https://discord.gg/pqEBSTqdxV</a>
  360. </div>
  361. `;
  362. document.body.appendChild(overlay);
  363. }
  364. }
  365.  
  366. function handleRekonise() {
  367. if (hasCloudflare()) return;
  368.  
  369. fetch(`https://api.rekonise.com/social-unlocks${location.pathname}/unlock`, {
  370. headers: {
  371. "accept": "application/json, text/plain, */*",
  372. "content-type": "application/json;charset=UTF-8",
  373. "authorization": "null",
  374. "Referer": window.location.href,
  375. "Referrer-Policy": "same-origin"
  376. },
  377. method: "GET"
  378. })
  379. .then(response => response.json())
  380. .then(data => {
  381. const responseText = JSON.stringify(data);
  382. const urlMatch = responseText.match(/(https?:\/\/[^\s"]+)/);
  383. const foundUrl = urlMatch ? urlMatch[0] : null;
  384.  
  385. if (foundUrl) {
  386. showBypassModal(foundUrl);
  387. } else {
  388. showBypassModal("Error, please join Discord Server in the Greasyfork script.");
  389. }
  390. })
  391. .catch(console.error);
  392. }
  393.  
  394. function handleMboost() {
  395.  
  396. const pageContent = document.documentElement.outerHTML;
  397. const targetUrlMatches = [...pageContent.matchAll(/"targeturl\\":\\"(https?:\/\/[^\\"]+)/g)];
  398.  
  399. targetUrlMatches.forEach((match, index) => {
  400. const url = match[1];
  401. showBypassModal(url);
  402. });
  403.  
  404. if (targetUrlMatches.length === 0) {
  405. showBypassModal('Could not find destination! Please join our Discord.');
  406. }
  407.  
  408. }
  409.  
  410. const style = document.createElement('style');
  411. style.textContent = styleCSS;
  412. document.head.appendChild(style);
  413.  
  414. if (window.location.href.includes("bstlar.com")) handleBstlar();
  415. else if (window.location.href.includes("loot")) handleLootlinks();
  416. else if (window.location.href.includes("rekonise.com/")) handleRekonise();
  417. else if (window.location.href.includes("mboost.me/")) handleMboost()
  418. })();