链接管理

绕过搜索引擎(百度、搜狗、360、必应、谷歌)搜索结果中的重定向链接,直链访问原始网站,删除网站重定向到安全页面,自动跳转中文文档,减少操作步骤和响应时间;长期维护、PC+手机全平台支持:CSDN+掘金+简书+知乎+知乎专栏+百度贴吧+开源中国+码云gitee+扣丁leetcode+51CTO+百度搜索+360搜索+搜狗搜索+必应搜索+423down+酷安+eslint+微软文档+火狐MDN+tampermonkey文档;

安装此脚本
作者推荐脚本

您可能也喜欢骚扰拦截

安装此脚本
  1. // ==UserScript==
  2. // @name 链接管理
  3. // @version 1.3.27
  4. // @namespace airbash/LinkManager
  5. // @homepageURL https://github.com/AirBashX/UserScript
  6. // @author airbash
  7. // @description 绕过搜索引擎(百度、搜狗、360、必应、谷歌)搜索结果中的重定向链接,直链访问原始网站,删除网站重定向到安全页面,自动跳转中文文档,减少操作步骤和响应时间;长期维护、PC+手机全平台支持:CSDN+掘金+简书+知乎+知乎专栏+百度贴吧+开源中国+码云gitee+扣丁leetcode+51CTO+百度搜索+360搜索+搜狗搜索+必应搜索+423down+酷安+eslint+微软文档+火狐MDN+tampermonkey文档;
  8. // @match *://link.csdn.net/*
  9. // @match *://link.juejin.cn/*
  10. // @match *://juejin.cn/*
  11. // @match *://www.jianshu.com/p/*
  12. // @match *://www.jianshu.com/go-wild?*
  13. // @match *://*.zhihu.com/*
  14. // @match *://tieba.baidu.com/*
  15. // @match *://*.oschina.net/*
  16. // @match *://gitee.com/*
  17. // @match *://leetcode.cn/link/*
  18. // @match *://blog.51cto.com/*
  19. // @match *://*.baidu.com/*
  20. // @match *://m.so.com/s?*
  21. // @match *://www.so.com/s?*
  22. // @match *://www.sogou.com/web?*
  23. // @match *://*.bing.com/search*
  24. // @match *://www.423down.com/*
  25. // @match *://www.coolapk.com/link*
  26. // @match *://*.eslint.org/docs/latest/*
  27. // @match *://learn.microsoft.com/*
  28. // @match *://developer.mozilla.org/*
  29. // @match *://www.tampermonkey.net/*
  30. // @icon data:image/png;base64,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
  31. // @grant GM_registerMenuCommand
  32. // @grant GM_setValue
  33. // @grant GM_getValue
  34. // @grant GM_xmlhttpRequest
  35. // @grant GM_info
  36. // @license GPL-3.0
  37. // @run-at document-body
  38. // ==/UserScript==
  39. ///<reference path="./tampermonkey-reference.d.ts" />
  40.  
  41. (function () {
  42. "use strict";
  43.  
  44. /**
  45. * 安全页面重定向列表
  46. * @type {安全页面网站}
  47. */
  48. const safePages = [
  49. {
  50. //https://blog.csdn.net/weixin_50829653/article/details/118119039
  51. //https://link.csdn.net/?from_id=118119039&target=https://baidu.com
  52. name: "CSDN",
  53. url: "link.csdn.net",
  54. handlers: [
  55. {
  56. type: "forward",
  57. start: "&target=",
  58. },
  59. ],
  60. },
  61. {
  62. //https://link.zhihu.com/?target=https://www.apifox.cn/
  63. name: "知乎",
  64. url: "link.zhihu.com/?target=",
  65. handlers: [
  66. {
  67. type: "forward",
  68. start: "?target=",
  69. },
  70. ],
  71. },
  72. {
  73. //https://link.juejin.cn/?target=https://baidu.com
  74. name: "掘金",
  75. url: "link.juejin.cn/?target=",
  76. handlers: [
  77. {
  78. type: "forward",
  79. start: "?target=",
  80. },
  81. ],
  82. },
  83. {
  84. //https://www.jianshu.com/go-wild?ac=2&url=https://baidu.com
  85. name: "简书",
  86. url: "www.jianshu.com/go-wild?",
  87. handlers: [
  88. {
  89. type: "forward",
  90. start: "&url=",
  91. },
  92. ],
  93. },
  94. {
  95. //https://www.oschina.net/action/GoToLink?url=https://baidu.com
  96. name: "开源中国",
  97. url: "www.oschina.net/action/GoToLink?url=",
  98. handlers: [
  99. {
  100. type: "forward",
  101. start: "GoToLink?url=",
  102. },
  103. ],
  104. },
  105. {
  106. //https://gitee.com/link?target=https://baidu.com
  107. name: "码云",
  108. url: "gitee.com/link?target=",
  109. handlers: [
  110. {
  111. type: "forward",
  112. start: "?target=",
  113. },
  114. ],
  115. },
  116. {
  117. //https://leetcode.cn/link/?target=https://www.baidu.com
  118. name: "扣丁",
  119. url: "leetcode.cn",
  120. handlers: [
  121. {
  122. type: "forward",
  123. start: "link/?target=",
  124. },
  125. ],
  126. },
  127. {
  128. //https://blog.51cto.com/u_15127617/4063137
  129. //https://blog.51cto.com/transfer?https://baidu.com
  130. name: "51CTO",
  131. url: "blog.51cto.com/transfer?",
  132. handlers: [
  133. {
  134. type: "forward",
  135. start: "transfer?",
  136. },
  137. ],
  138. },
  139. {
  140. //https://www.coolapk.com/link?url=https%3A%2F%2Flanzoux.com
  141. name: "酷安",
  142. url: "www.coolapk.com/link?url=",
  143. handlers: [
  144. {
  145. type: "forward",
  146. start: "link?url=",
  147. },
  148. ],
  149. },
  150. {
  151. //https://mail.qq.com/cgi-bin/readtemplate?t=safety&check=false&gourl=https://www.baidu.com
  152. name: "酷安",
  153. url: "mail.qq.com/cgi-bin/readtemplate?",
  154. handlers: [
  155. {
  156. type: "forward",
  157. start: "gourl=",
  158. },
  159. ],
  160. },
  161. ];
  162.  
  163. /**
  164. * 去除页面重定向列表
  165. * @type {重定向网站}
  166. */
  167. const websites = [
  168. {
  169. //https://www.zhihu.com/question/465346075/answer/2048804228
  170. //https://zhuanlan.zhihu.com/p/95937067
  171. name: "知乎",
  172. url: "zhihu.com",
  173. handlers: [
  174. {
  175. selector: ".external,.LinkCard",
  176. start: "?target=",
  177. type: "sub",
  178. },
  179. ],
  180. },
  181. {
  182. //https://juejin.cn/post/6844903688524267534
  183. name: "掘金",
  184. url: "juejin.cn",
  185. handlers: [
  186. {
  187. selector: "a[href]",
  188. start: "?target=",
  189. type: "sub",
  190. },
  191. ],
  192. },
  193. {
  194. //https://www.jianshu.com/p/cf7dc734dd6d
  195. name: "简书",
  196. url: "www.jianshu.com/p/",
  197. handlers: [
  198. {
  199. selector: "a[href]",
  200. start: "go?to=",
  201. type: "sub",
  202. },
  203. ],
  204. },
  205. {
  206. //https://tieba.baidu.com/p/6313991324
  207. name: "百度贴吧",
  208. url: "tieba.baidu.com/p/",
  209. handlers: [
  210. //PC版
  211. {
  212. selector: ".j-no-opener-url",
  213. start: "jump.bdimg.com",
  214. type: "text",
  215. },
  216. {
  217. selector: ".j-no-opener-url",
  218. start: "jump2.bdimg.com",
  219. type: "text",
  220. },
  221. //手机版
  222. {
  223. selector: ".rich-link",
  224. start: "checkurl?url=",
  225. end: "&urlrefer=",
  226. type: "sub",
  227. },
  228. ],
  229. },
  230. {
  231. //https://my.oschina.net/lorryluMyRest/blog/731722
  232. name: "开源中国",
  233. url: "oschina.net",
  234. handlers: [
  235. {
  236. selector: "a[href]",
  237. start: "GoToLink?url=",
  238. type: "sub",
  239. },
  240. ],
  241. },
  242. {
  243. //https://gitee.com/iflytek/iflearner
  244. name: "gitee",
  245. url: "gitee.com",
  246. handlers: [
  247. {
  248. selector: "a[href]",
  249. start: "link?target=",
  250. type: "sub",
  251. },
  252. ],
  253. },
  254. {
  255. //https://www.so.com/s?ie=UTF-8&q=123
  256. name: "360搜索PC版",
  257. url: "www.so.com/s",
  258. handlers: [
  259. {
  260. selector: "a[data-mdurl]",
  261. start: "link?m=",
  262. attribute: "data-mdurl",
  263. type: "attribute",
  264. },
  265. ],
  266. },
  267. {
  268. //https://m.so.com/s?q=%E4%BD%A0%E5%A5%BD
  269. name: "360搜索手机版",
  270. url: "m.so.com",
  271. handlers: [
  272. {
  273. selector: "a[href]",
  274. start: "jump?u=",
  275. end: "&m=",
  276. type: "sub",
  277. },
  278. ],
  279. },
  280. {
  281. //https://www.423down.com/10579.html
  282. name: "423down",
  283. url: "www.423down.com",
  284. handlers: [
  285. {
  286. selector: "p>a[href]",
  287. start: "/go.php?url=",
  288. type: "text",
  289. },
  290. ],
  291. },
  292. ];
  293.  
  294. /**
  295. * 百度单独规则
  296. */
  297. if (location.href.includes("m.baidu.com") || location.href.includes("www.baidu.com")) {
  298. let interval = setInterval(() => {
  299. let flag = baidu_static();
  300. }, 100);
  301. }
  302. /**
  303. * 百度静态规则
  304. */
  305. function baidu_static() {
  306. //pc端
  307. let item1s = document.querySelectorAll("#content_left>div");
  308. for (let item of item1s) {
  309. let a = item.querySelector("a");
  310. if (a.href.includes("www.baidu.com/link?url=")) {
  311. let url = item.getAttribute("mu");
  312. //https://www.baidu.com/s?wd=一夜醒来欠地铁600多万?官方回应
  313. //智能精选
  314. if (url && url != "null" && !url.includes("nourl.ubs.baidu.com") && !url.includes("nourl.baidu.com")) {
  315. a.href = url;
  316. console.log(url);
  317. }
  318. }
  319. //single-card-wrapper: https://www.baidu.com/s?ie=UTF-8&wd=es6 xxx的最新相关信息
  320. //group-wrapper: https://www.baidu.com/s?ie=UTF-8&wd=五一消费成绩单折射市场活力 资讯
  321. let item_news = item.querySelectorAll("[class^=single-card-wrapper] div,[class^=group-wrapper] div");
  322. for (let item_new of item_news) {
  323. let data_url;
  324. let divs = item_new.querySelectorAll("div");
  325. for (let div of divs) {
  326. if ((data_url = div.getAttribute("data-url"))) {
  327. let a = item_new.querySelector("a");
  328. a.setAttribute("href", data_url);
  329. }
  330. }
  331. }
  332. }
  333.  
  334. //移动端
  335. let item2s = document.querySelectorAll("#results>div");
  336. for (let item of item2s) {
  337. let rl_link_href = item.querySelector("[rl-link-href]");
  338. if (rl_link_href && rl_link_href != null) {
  339. let str = item.getAttribute("data-log");
  340. let json = JSON.parse(str);
  341. let url = json.mu;
  342. if (!url.startsWith("https://ks.baidu.com") && url) {
  343. //ks.baidu.com https://www.baidu.com/s?word=赵匡胤
  344. rl_link_href.setAttribute("rl-link-href", url);
  345. let as = item.querySelectorAll("a");
  346. for (let a of as) {
  347. a.href = url;
  348. }
  349. }
  350. }
  351. }
  352. return false;
  353. }
  354.  
  355. /**
  356. * 必应单独规则
  357. * https://www.bing.com/search?q=必应
  358. */
  359. if (location.href.includes("bing.com/search")) {
  360. function handlerAnchor(a) {
  361. let url_ = a.href;
  362. if (url_.includes(".bing.com/ck/a?")) {
  363. // 截取 u= 及其后面的字符
  364. let tmp = url_.slice(url_.lastIndexOf("u="));
  365. // 找到 u= 后的第一个 `&`, 精确提取出 u
  366. tmp = tmp.slice("u=a1".length, tmp.indexOf("&"));
  367. const paddingNeeded = 4 - tmp.length % 4;
  368. // 如果长度不是4的倍数,则需要补充'='
  369. if (paddingNeeded != 4) {
  370. tmp += '='.repeat(paddingNeeded);
  371. }
  372. try {
  373. let ori_url = atob(tmp.replace('-', '+').replace('_', '/'));
  374. a.href = ori_url;
  375. } catch (e) {
  376. console.log("Error parsing", tmp);
  377. }
  378. }
  379. }
  380.  
  381. function afterLoaded(f_) {
  382. if (document.readyState === 'loading') {
  383. document.addEventListener('DOMContentLoaded', f_);
  384. } else {
  385. typeof f_ === 'function' && f_();
  386. }
  387. }
  388.  
  389. afterLoaded(() => {
  390. console.log("Started");
  391. document.querySelectorAll('a').forEach(handlerAnchor);
  392. // 使用 MutationObserver 监控 DOM 变化
  393. const observer = new MutationObserver((mutationsList) => {
  394. for (const mutation of mutationsList) {
  395. if (mutation.type === 'childList') {
  396. mutation.addedNodes.forEach(node => {
  397. if (node.nodeType === Node.ELEMENT_NODE) {
  398. node.querySelectorAll('a').forEach(handlerAnchor);
  399. }
  400. });
  401. }
  402. }
  403. });
  404.  
  405. // 观察整个文档的 DOM 变化
  406. observer.observe(document.body, {
  407. childList: true,
  408. subtree: true
  409. });
  410. });
  411. }
  412.  
  413. /**
  414. * 安全页面跳转:处理
  415. */
  416. for (let safePage of safePages) {
  417. if (location.href.includes(safePage.url)) {
  418. for (let handler of safePage.handlers) {
  419. let str = location.href.split(handler.start)[1];
  420. console.log(str);
  421. let url = decodeURIComponent(str);
  422. console.log(url);
  423. location.replace(url);
  424. }
  425. }
  426. }
  427.  
  428. /**
  429. * 页面重定向跳转:处理
  430. */
  431. for (let website of websites) {
  432. if (location.href.includes(website.url)) {
  433. let time = 0;
  434. let interval = setInterval(() => {
  435. if (++time == 100) {
  436. clearInterval(interval);
  437. }
  438. for (let handler of website.handlers) {
  439. let items = document.querySelectorAll(handler.selector);
  440. for (let item of items) {
  441. //进一步校验需要修改的元素,防止修改错元素
  442. if (item.getAttribute("href").includes(handler.start)) {
  443. if (handler.type == "sub") {
  444. //从属性中截取地址
  445. let href = item.getAttribute("href");
  446. let start_index = href.indexOf(handler.start) + handler.start.length;
  447. let str;
  448. if (handler.end != null) {
  449. let end_index = href.indexOf(handler.end);
  450. str = href.substring(start_index, end_index);
  451. } else {
  452. str = href.substring(start_index);
  453. }
  454. let url = decodeURIComponent(str);
  455. item.setAttribute("href", url);
  456. } else if (handler.type == "attribute") {
  457. //从属性中获取地址
  458. item.setAttribute("href", item.getAttribute(handler.attribute));
  459. } else {
  460. //从文本中获取地址
  461. item.setAttribute("href", item.innerText);
  462. }
  463. }
  464. }
  465. }
  466. }, 100);
  467. }
  468. }
  469.  
  470. /**
  471. * 跳转中文文档规则
  472. */
  473. const otherSites = [
  474. {
  475. //https://eslint.org/docs/latest/user-guide/configuring/configuration-files
  476. //https://zh-hans.eslint.org/docs/latest/user-guide/configuring/configuration-files
  477. name: "eslint",
  478. url: "https://eslint.org/docs/latest/",
  479. type: "host",
  480. zh_str: "zh-hans",
  481. },
  482. {
  483. //https://learn.microsoft.com/zh-cn/powershell/scripting/how-to-use-docs
  484. name: "microsoft",
  485. url: "https://learn.microsoft.com/",
  486. type: "pathName",
  487. zh_str: "zh-cn",
  488. },
  489. {
  490. //https://developer.mozilla.org/zh-CN/
  491. name: "MDN",
  492. url: "https://developer.mozilla.org/",
  493. type: "pathName",
  494. zh_str: "zh-CN",
  495. },
  496. {
  497. //https://www.tampermonkey.net/faq.php?locale=zh
  498. name: "tampermonkey",
  499. url: "https://www.tampermonkey.net",
  500. type: "search",
  501. zh_str: "locale=zh",
  502. },
  503. ];
  504.  
  505. /**
  506. * GM相关APi的操作
  507. */
  508. if (GM_info) {
  509. const scriptHandler = GM_info.scriptHandler;
  510. /**
  511. * 仅在油侯插件上运行,避免无法点击注册开关
  512. */
  513. if (scriptHandler == "Tampermonkey" || scriptHandler == "Violentmonkey" || scriptHandler == "ScriptCat" || scriptHandler == "Via") {
  514. /**
  515. * 自动跳转中文文档
  516. */
  517. if (GM_getValue("forward_zh")) {
  518. GM_registerMenuCommand("[√]跳转中文文档", function () {
  519. GM_setValue("forward_zh", false);
  520. location.reload();
  521. });
  522. let web_url = location.href;
  523. for (let otherSite of otherSites) {
  524. if (web_url.startsWith(otherSite.url)) {
  525. let zh_index = location.href.search(otherSite.zh_str);
  526. // 当前页面不是中文文档
  527. if (zh_index == -1) {
  528. if (otherSite.type == "pathName") {
  529. let pathname = location.pathname;
  530. let str = pathname.split("/")[1];
  531. if (str != otherSite.zh_str) {
  532. let new_url = web_url.replace(str, otherSite.zh_str);
  533. location.replace(new_url);
  534. }
  535. } else if (otherSite.type == "host") {
  536. let host = location.host;
  537. let str = host.split(".")[0];
  538. if (str != otherSite.zh_str) {
  539. let new_host = otherSite.zh_str + "." + host;
  540. let new_url = web_url.replace(host, new_host);
  541. location.replace(new_url);
  542. }
  543. } else if (otherSite.type == "search") {
  544. let search = location.search;
  545. if (search) {
  546. //有参数
  547. let key = otherSite.zh_str.split("=")[0];
  548. let start_index = search.search(key);
  549. let end_index = start_index + otherSite.zh_str.length;
  550. if (start_index != -1) {
  551. //有指定参数
  552. let str = search.substring(start_index, end_index);
  553. if (str != otherSite.zh_str) {
  554. //数值不对
  555. let url = web_url.replace(str, otherSite.zh_str);
  556. location.replace(url);
  557. }
  558. } else {
  559. //没有指定参数
  560. let url = web_url + "&" + otherSite.zh_str;
  561. location.replace(url);
  562. }
  563. } else {
  564. //没有参数
  565. let url = web_url + "?" + otherSite.zh_str;
  566. location.replace(url);
  567. }
  568. }
  569. }
  570. }
  571. }
  572. } else {
  573. GM_registerMenuCommand("[x]跳转中文文档", function () {
  574. GM_setValue("forward_zh", true);
  575. location.reload();
  576. });
  577. }
  578. }
  579. }
  580. })();