重定向链接转直链

将重定向式的链接替换为直链

目前为 2023-04-16 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name Direct Link
  3. // @name:zh-CN 重定向链接转直链
  4. // @namespace https://gf.qytechs.cn/en/scripts/463408/
  5. // @version 0.1.2
  6. // @description Replace the redirect links with direct links
  7. // @description:zh-CN 将重定向式的链接替换为直链
  8. // @author cilxe
  9. // @match *://www.landiannews.com/*
  10. // @match *://act.hoyolab.com/*
  11. // @match *://*.jianshu.com/*
  12. // @match *://*.juejin.cn/*
  13. // @match *://*.youtube.com/*
  14. // @match *://*.epicgames.com/*
  15. // @icon data:image/png;base64,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
  16. // @run-at document-end
  17. // @license MIT
  18. // ==/UserScript==
  19.  
  20. /*
  21. ## Main features
  22. - **Replace the redirect links with direct links**
  23.  
  24. ## Currently supported sites
  25. - www.landiannews.com
  26. - act.hoyolab.com (adjust.com)
  27. - juejin.cn
  28. - youtube.com
  29. - epicgames.com
  30.  
  31. This script has not been fully tested yet, so if you encounter broken links replaced by this script, you can submit feedback here.
  32. */
  33.  
  34. (() => {
  35. let timeoutID;
  36. const DELAY_TIME = { fast: 600, normal: 1000, slow: 2500 };
  37. const INDEX_LANDIAN = 'ourl.co'; // Landian
  38. const INDEX_ADJUST = 'redirect'; // Adjust
  39. const INDEX_JIANSHU = 'to'; // Jianshu
  40. const INDEX_JUEJIN = 'target'; // Juejin
  41. const INDEX_YOUTUBE = 'redirect'; // youtube
  42. const INDEX_YOUTUBE_S = 'q';
  43. const INDEX_EPIC = 'redirectTo'; // epicgame
  44. // eslint-disable-next-line max-len
  45. // const urlRegex = /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i;
  46. const urlRegex = /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/;
  47.  
  48. // replace to direct url
  49. function linkDirect(urlParam, delayTime) {
  50. timeoutID = setTimeout(() => {
  51. const links = document.getElementsByTagName('a');
  52. for (let i = 0; i < links.length; i += 1) {
  53. if (urlRegex.test(links[i].href)) {
  54. const url = new URL(links[i].href);
  55. const params = url.searchParams;
  56. if (params.has(urlParam)) { links[i].href = decodeURIComponent(params.get(urlParam)); }
  57. }
  58. }
  59. clearTimeout(timeoutID);
  60. }, delayTime);
  61. }
  62.  
  63. // Landiannews specifed actions
  64. function landianDirect(delayTime) {
  65. timeoutID = setTimeout(() => {
  66. const links = document.getElementsByTagName('a');
  67. for (let i = 0; i < links.length; i += 1) {
  68. if (links[i].href.includes(INDEX_LANDIAN) && links[i].innerText.includes('http')) {
  69. links[i].href = links[i].innerText;
  70. }
  71. }
  72. clearTimeout(timeoutID);
  73. }, delayTime);
  74. }
  75.  
  76. // Youtube extra actions
  77. function youtubeDirect() {
  78. function youtubeLinkDirect(urlParam, delayTime) {
  79. setTimeout(() => {
  80. let redirectLinks;
  81. switch (true) {
  82. case window.location.pathname === '/watch':
  83. redirectLinks = document.getElementsByClassName('yt-core-attributed-string__link');
  84. break;
  85. case window.location.pathname.includes('@'): // channels
  86. redirectLinks = document.getElementsByClassName('yt-simple-endpoint');
  87. break;
  88. default:
  89. break;
  90. }
  91. for (let i = 0; i < redirectLinks.length; i += 1) {
  92. if (urlRegex.test(redirectLinks[i].href) && redirectLinks[i].href.includes('youtube.com')) {
  93. const url = new URL(redirectLinks[i].href);
  94. const params = url.searchParams;
  95. if (params.has(urlParam)) { redirectLinks[i].href = decodeURIComponent(params.get(urlParam)); }
  96. }
  97. }
  98. }, delayTime);
  99. }
  100.  
  101. timeoutID = setTimeout(() => {
  102. document.getElementById('description-inner').addEventListener('click', () => {
  103. youtubeLinkDirect(INDEX_YOUTUBE_S, 200);
  104. }, true);
  105. const naviTabs = document.getElementsByClassName('ytd-c4-tabbed-header-renderer');
  106. for (let i = 0; i < naviTabs.length; i += 1) {
  107. naviTabs[i].addEventListener('click', () => {
  108. youtubeLinkDirect(INDEX_YOUTUBE_S, DELAY_TIME.fast);
  109. }, true);
  110. }
  111. youtubeLinkDirect(INDEX_YOUTUBE_S, 0);
  112. clearTimeout(timeoutID);
  113. }, DELAY_TIME.slow);
  114. }
  115.  
  116. window.onload = () => {
  117. const CUR_HOST = window.location.hostname;
  118. const isLandian = CUR_HOST.includes('landiannews.com');
  119. const isHoyolab = CUR_HOST.includes('act.hoyolab.com');
  120. const isJianshu = CUR_HOST.includes('jianshu.com');
  121. const isJuejin = CUR_HOST.includes('juejin.cn');
  122. const isYoutube = CUR_HOST.includes('youtube.com');
  123. const isEpicgame = CUR_HOST.includes('epicgames.com');
  124. switch (true) {
  125. case isLandian:
  126. landianDirect(DELAY_TIME.normal);
  127. landianDirect(DELAY_TIME.slow);
  128. break;
  129. case isHoyolab:
  130. linkDirect(INDEX_ADJUST, DELAY_TIME.normal);
  131. linkDirect(INDEX_ADJUST, DELAY_TIME.slow);
  132. break;
  133. case isJianshu:
  134. linkDirect(INDEX_JIANSHU, DELAY_TIME.normal);
  135. linkDirect(INDEX_JIANSHU, DELAY_TIME.slow);
  136. break;
  137. case isJuejin:
  138. linkDirect(INDEX_JUEJIN, DELAY_TIME.normal);
  139. linkDirect(INDEX_JUEJIN, DELAY_TIME.slow);
  140. break;
  141. case isYoutube:
  142. youtubeDirect();
  143. break;
  144. case isEpicgame:
  145. linkDirect(INDEX_EPIC, DELAY_TIME.normal);
  146. linkDirect(INDEX_EPIC, DELAY_TIME.slow);
  147. break;
  148. default:
  149. break;
  150. }
  151. };
  152. })();
  153.  
  154. /*
  155. v0.1.2 2023.04.15
  156. - Optimised link directing on youtube.com.
  157. - Performance optimisation.
  158.  
  159. v0.1.1 2023.04.06
  160. - Spelling correction.
  161.  
  162. v0.1.0 2023.04.06
  163. - Script optimisation.
  164. - Fix youtube matching.
  165.  
  166. v0.0.6 2023.03.27
  167. Replace direct url on Epicgames.com.
  168.  
  169. v0.0.5
  170. - Remove [Youtube.com] event redirection.
  171.  
  172. v0.0.4 2023.02.24
  173. - Added [Juejin.cn] redirecting.
  174.  
  175. v0.0.3 2023.01.25
  176. - Added [Jianshu.com] redirecting.
  177.  
  178. v0.0.2 2023.01.06
  179. - Clean Hoyolab [app.adjust.com] tracking urls.
  180.  
  181. v0.0.1 2022.12.27
  182. - Initial release, direct link for landiannews.com
  183. */

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址