🏠 Home 

链接管理

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