Shortlink Dodger

Quickly bypasses shortlinks to enhance your browsing experience. This script automatically navigates through common URL shorteners, saving you time and hassle with every click.

目前为 2024-10-09 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Shortlink Dodger
  3. // @namespace Shortlink Dodger
  4. // @version 1.1
  5. // @description Quickly bypasses shortlinks to enhance your browsing experience. This script automatically navigates through common URL shorteners, saving you time and hassle with every click.
  6. // @author AmineDev
  7. // @license All Rights Reserved
  8. // @icon https://i.ibb.co/N3cwK3X/shortlink-dodger.png
  9. // @match *://*/recaptcha/*
  10. // @match *://tpi.li/*
  11. // @match *://blogmystt.com/*
  12. // @match *://cety.app/*
  13. // @match *://fc-lc.xyz/*
  14. // @match *://gamezizo.com/*
  15. // @match *://forex-trnd.com/*
  16. // @match *://falpus.com/*
  17. // @match *://oii.la/*
  18. // @match *://wp2hostt.com/*
  19. // @match *://expertvn.com/*
  20. // @match *://ielts-isa.edu.vn/*
  21. // @match *://handydecor.com.vn/*
  22. // @match *://top10cafe.se/*
  23. // @match *://*.mega*.in/*
  24. // @match *://mitly.us/*
  25. // @match *://*.sonjuegosgratis.com/*
  26. // @match *://autodime.com/*
  27. // @match *://linx.cc/*
  28. // @match *://surflink.tech/*
  29. // @match *://coincroco.com/*
  30. // @match *://sox.link/*
  31. // @match *://shrinkme.ink/*
  32. // @match *://themezon.net/*
  33. // @match *://en.mrproblogger.com/*
  34. // @match *://oii.io/*
  35. // @match *://tmail.io/*
  36. // @match *://*linksly.co/*
  37. // @match *://mrproblogger.com/*
  38. // @match *://m.imagenesderopaparaperros.com/*
  39. // @match *://fx4ever.com/*
  40. // @match *://fx-22.com/*
  41. // @match *://gold-24.net/*
  42. // @match *://forexrw7.com/*
  43. // @match *://linkjust.com/*
  44. // @match *://carewave.xyz/*
  45. // @match *://insfly.pw/*
  46. // @match *://pubprofit.in/*
  47. // @match *://worldnewsestate.com/*
  48. // @match *://sabarpratham.in/*
  49. // @match *://tlin.me/*
  50. // @match *://bioinflu.com/*
  51. // @match *://cryptosparatodos.com/*
  52. // @match *://go.tfly.link/*
  53. // @run-at document-idle
  54. // ==/UserScript==
  55.  
  56. (function() {
  57. 'use strict';
  58.  
  59. const elementSelectors = [
  60. { domain: 'tpi.li', selectors: ['Continue', 'Get Link'] },
  61. { domain: 'blogmystt.com', selectors: ['Get link here'] },
  62. { domain: 'shrinkme.ink', selectors: ['Click here to continue'] },
  63. { domain: 'themezon.net', selectors: ['Continue', 'Go To Url'] },
  64. { domain: 'en.mrproblogger.com', selectors: ['Get Link'] },
  65. { domain: 'cety.app', selectors: ['Continue', 'I am not a robot', 'Go ->'] },
  66. { domain: 'fc-lc.xyz', selectors: ['Click here to continue'] },
  67. { domain: 'gamezizo.com', selectors: ['Click To Verify', 'Continue...'] },
  68. { domain: 'forex-trnd.com', selectors: ['[type="submit"][name="verify"]', 'Get Link'] },
  69. { domain: 'falpus.com', selectors: ['Continue', 'I am not a robot', 'Get Link'] },
  70. { domain: 'oii.la', selectors: ['Continue', 'Get Link'] },
  71. { domain: 'wp2hostt.com', selectors: ['Get link here'] },
  72. { domain: 'get.megaurl.in', selectors: ['Get Link'] },
  73. { domain: 'get.megafly.in', selectors: ['Get Link'] },
  74. { domain: 'www.sonjuegosgratis.com', selectors: ['#shortShort'] },
  75. { domain: 'autodime.com', selectors: ['Next - Continue', 'Click here to Continue'] },
  76. { domain: 'linx.cc', selectors: ['Get Link'] },
  77. { domain: 'sox.link', selectors: ['Get Link'] },
  78. { domain: 'linksly.co', selectors: ['Human Verification'] },
  79. { domain: 'go.linksly.co', selectors: ['Get Link'] },
  80. { domain: 'm.imagenesderopaparaperros.com', selectors: ['Get Link', 'Ir al enlace'] },
  81. { domain: 'linkjust.com', selectors: ['#click'] },
  82. { domain: 'insfly.pw', selectors: ['Get Link'] },
  83. { domain: 'bioinflu.com', selectors: ['[alt="generate text"]', '[alt="image3"]'] },
  84. { domain: 'cryptosparatodos.com', selectors: ['[alt="generate text"]', '[alt="image3"]'] },
  85. { domain: 'tlin.me', selectors: ['Get Link'] },
  86. { domain: 'go.tfly.link', selectors: ['Get Link'] },
  87. ];
  88.  
  89. function autoClick() {
  90. const currentDomain = window.location.hostname;
  91.  
  92. elementSelectors.forEach(item => {
  93. if (item.domain === currentDomain) {
  94. item.selectors.forEach(selector => {
  95. if (selector.startsWith('#') || selector.startsWith('.') || selector.startsWith('[')) {
  96. const elements = document.querySelectorAll(selector);
  97. elements.forEach(element => {
  98. if (element.tagName.toLowerCase() === 'input' && element.type === 'hidden') {
  99. const shortLinkValue = element.value;
  100. window.location.href = shortLinkValue;
  101. } else {
  102. const link = element.getAttribute('href');
  103. if (link) {
  104. window.location.href = link;
  105. } else {
  106. element.click();
  107. }
  108. }
  109. });
  110. } else {
  111. const elements = [...document.body.querySelectorAll('*')].filter(el => el.textContent.trim() === selector);
  112. elements.forEach(element => {
  113. const link = element.getAttribute('href');
  114. if (link) {
  115. window.location.href = link;
  116. } else {
  117. element.click();
  118. }
  119. });
  120. }
  121. });
  122. }
  123. });
  124. }
  125.  
  126. function repeatedClick(selectorsWithInterval, targetDomain) {
  127. const currentDomain = window.location.hostname;
  128.  
  129. if (currentDomain === targetDomain) {
  130. selectorsWithInterval.forEach(({ selector, interval }) => {
  131. const elements = document.querySelectorAll(selector);
  132. const clickInterval = setInterval(() => {
  133. elements.forEach(element => {
  134. element.click();
  135. });
  136. }, interval);
  137.  
  138. if (typeof selector === 'string' && !selector.startsWith('#') && !selector.startsWith('.') && !selector.startsWith('[')) {
  139. const textElements = [...document.body.querySelectorAll('*')].filter(el => el.textContent.trim() === selector);
  140. const textInterval = setInterval(() => {
  141. textElements.forEach(element => {
  142. element.click();
  143. });
  144. }, interval);
  145. }
  146. });
  147. }
  148. }
  149.  
  150. function delayedClick(selectorsWithDelays, targetDomain) {
  151. const currentDomain = window.location.hostname;
  152.  
  153. if (currentDomain === targetDomain) {
  154. selectorsWithDelays.forEach(({ selector, delay }) => {
  155. const elements = document.querySelectorAll(selector);
  156. elements.forEach(element => {
  157. setTimeout(() => {
  158. const link = element.getAttribute('href');
  159. if (link) {
  160. window.location.href = link;
  161. } else {
  162. element.click();
  163. }
  164. }, delay);
  165. });
  166.  
  167. if (typeof selector === 'string' && !selector.startsWith('#') && !selector.startsWith('.') && !selector.startsWith('[')) {
  168. const textElements = [...document.body.querySelectorAll('*')].filter(el => el.textContent.trim() === selector);
  169. textElements.forEach(element => {
  170. setTimeout(() => {
  171. const link = element.getAttribute('href');
  172. if (link) {
  173. window.location.href = link;
  174. } else {
  175. element.click();
  176. }
  177. }, delay);
  178. });
  179. }
  180. });
  181. }
  182. }
  183.  
  184. autoClick();
  185.  
  186. repeatedClick([{ selector: 'a.btn.btn-sm.btn-success.m-2', interval: 5000 }], 'gamezizo.com');
  187. repeatedClick([{ selector: 'a.btn.btn-success.btn-lg.get-link', interval: 2000 }], 'mitly.us');
  188. repeatedClick([{ selector: 'Getlink', interval: 2000 }, { selector: 'Getlink', interval: 2000 }], 'handydecor.com.vn');
  189. repeatedClick([{ selector: 'Getlink', interval: 2000 }, { selector: 'Getlink', interval: 2000 }], 'expertvn.com');
  190. repeatedClick([{ selector: 'Getlink', interval: 2000 }, { selector: 'Getlink', interval: 2000 }], 'ielts-isa.edu.vn');
  191.  
  192. delayedClick([{ selector: 'Click here to continue', delay: 17000 }], 'gamezizo.com');
  193. delayedClick([{ selector: 'Click here to continue', delay: 27000 }], 'handydecor.com.vn');
  194. delayedClick([{ selector: 'Click here to continue', delay: 27000 }], 'expertvn.com');
  195. delayedClick([{ selector: 'Click here to continue', delay: 27000 }], 'ielts-isa.edu.vn');
  196. delayedClick([{ selector: 'Click here to continue', delay: 30000 }, { selector: 'Continue', delay: 30000 }], 'pubprofit.in');
  197. delayedClick([{ selector: 'Click here to continue', delay: 30000 }, { selector: 'Continue', delay: 30000 }], 'worldnewsestate.com');
  198. delayedClick([{ selector: 'Click here to continue', delay: 30000 }, { selector: 'Continue', delay: 30000 }], 'sabarpratham.in');
  199. delayedClick([{ selector: 'Click here to continue', delay: 1000 }], 'mitly.us');
  200. delayedClick([{ selector: 'Show Captcha Verification', delay: 17000 }, { selector: '[onclick="redirectfex()"]', delay: 17000 }], 'surflink.tech');
  201. delayedClick([{ selector: '[onclick="redirectfex()"]', delay: 12000 }], 'coincroco.com');
  202. delayedClick([{ selector: '#btn2', delay: 5000 }, { selector: '#tp-snp2', delay: 5000 }], 'mrproblogger.com');
  203. delayedClick([{ selector: 'Next', delay: 5000 }], 'fx4ever.com');
  204. delayedClick([{ selector: '#nextbutton', delay: 5000 }], 'fx-22.com');
  205. delayedClick([{ selector: '#nextbutton', delay: 5000 }], 'gold-24.net');
  206. delayedClick([{ selector: '#nextbutton', delay: 5000 }], 'forexrw7.com');
  207. delayedClick([{ selector: '#ad', delay: 24000 }], 'carewave.xyz');
  208.  
  209. function autoClickRecaptcha() {
  210. const recaptcha = document.querySelector('.recaptcha-checkbox-border');
  211. if (recaptcha) {
  212. recaptcha.click();
  213. }
  214. }
  215.  
  216. function isTurnstilePresent() {
  217. return document.querySelector('.zone-name-title.h1') !== null;
  218. }
  219.  
  220. const intervalId = setInterval(() => {
  221. if (isTurnstilePresent()) {
  222. clearInterval(intervalId);
  223. return;
  224. }
  225.  
  226. const recaptcha = document.querySelector('.recaptcha-checkbox-border');
  227. if (recaptcha) {
  228. autoClickRecaptcha();
  229. if (grecaptcha && grecaptcha.getResponse().length > 0) {
  230. autoClick();
  231. clearInterval(intervalId);
  232. }
  233. } else {
  234. autoClick();
  235. delayedClick([{ selector: 'Click here to continue', delay: 100 }], 'get.megaurl.in');
  236. delayedClick([{ selector: 'Click here to continue', delay: 100 }], 'get.megafly.in');
  237. delayedClick([{ selector: 'Click here to continue', delay: 100 }], 'mitly.us');
  238. delayedClick([{ selector: '#invisibleCaptchaShortlink', delay: 100 }], 'm.imagenesderopaparaperros.com');
  239. delayedClick([{ selector: 'Click here to continue', delay: 100 }], 'tlin.me');
  240. delayedClick([{ selector: 'Click here to continue', delay: 100 }], 'go.tfly.link');
  241. }
  242. }, 3000);
  243.  
  244. })();
  245.  
  246. (function() {
  247. 'use strict';
  248.  
  249. const domainSelectors = {
  250. 'tlin.me': [
  251. 'html:nth-of-type(1) > body:nth-of-type(1) > div:nth-of-type(2)',
  252. ],
  253. 'go.tfly.link': [
  254. 'html:nth-of-type(1) > body:nth-of-type(1) > div:nth-of-type(2)',
  255. ]
  256. };
  257.  
  258. function blockElements() {
  259. const currentDomain = window.location.hostname;
  260. const selectors = domainSelectors[currentDomain];
  261.  
  262. if (selectors) {
  263. selectors.forEach(selector => {
  264. const elements = document.querySelectorAll(selector);
  265. elements.forEach(element => {
  266. element.remove();
  267. });
  268. });
  269. }
  270. }
  271.  
  272. window.addEventListener('load', blockElements);
  273. })();