Greasy Fork is available in English.

跳转链接修复(移除重定向外链直达)

修复跳转链接为站外直链(移除重定向),免去拦截页面点击步骤可直达站外;拦截页面自动跳转;已适配爱发电、百度、CSDN、豆瓣、码云、花瓣网、简书、掘金、力扣(Leetcode)、51CTO 博客、牛客网、开源中国、pixiv、微信、微信开放社区、QQ 邮箱、PC 版 QQ、腾讯文档、360 搜索、少数派、腾讯云开发者社区、微博、YouTube、语雀、知乎、知乎专栏

Od 20.10.2023.. Pogledajte najnovija verzija.

// ==UserScript==
// @name        跳转链接修复(移除重定向外链直达)
// @description 修复跳转链接为站外直链(移除重定向),免去拦截页面点击步骤可直达站外;拦截页面自动跳转;已适配爱发电、百度、CSDN、豆瓣、码云、花瓣网、简书、掘金、力扣(Leetcode)、51CTO 博客、牛客网、开源中国、pixiv、微信、微信开放社区、QQ 邮箱、PC 版 QQ、腾讯文档、360 搜索、少数派、腾讯云开发者社区、微博、YouTube、语雀、知乎、知乎专栏
// @namespace   maomao1996.remove-redirect
// @version     2.0.1
// @author      maomao1996
// @homepage    https://github.com/maomao1996/tampermonkey-scripts
// @supportURL  https://github.com/maomao1996/tampermonkey-scripts/issues
// @license     MIT
// @match       *://*/*
// @grant       none
// ==/UserScript==
(function() {
  "use strict";
  var r = Array.isArray;
  var isFunction = function(r) {
    return typeof r === "function";
  };
  var isString = function(r) {
    return typeof r === "string";
  };
  var t = location.hostname.replace(/^www\./, "");
  function validateUrl(r) {
    if (!isString("string")) return false;
    try {
      new URL(r);
      return true;
    } catch (r) {
      return false;
    }
  }
  var e = [ [ "51CTO \u535a\u5ba2", "blog.51cto.com", {
    autojump: {
      validator: function(r) {
        var t = r.pathname;
        return t === "/transfer";
      },
      separator: "?"
    }
  } ] ];
  var a = [ [ "\u7231\u53d1\u7535", "afdian.net", {
    transform: {
      selector: '[href*="afdian.net/link?target="]'
    },
    autojump: {
      validator: function(r) {
        var t = r.pathname;
        return t === "/link";
      }
    }
  } ] ];
  var o = [ [ "\u767e\u5ea6", "baidu.com", {
    transform: {
      selector: "#content_left > [mu]",
      customTransform: function customTransform(r) {
        var t = r.getAttribute("mu");
        if (validateUrl(t) && !t.includes(".baidu.com")) r.querySelectorAll("a[href]").forEach((function(r) {
          return r.setAttribute("href", t);
        }));
      }
    }
  } ] ];
  var n = [ [ "CSDN", "link.csdn.net", {
    autojump: {}
  } ] ];
  var u = [ [ "\u8c46\u74e3", "douban.com", {
    autojump: {
      validator: function(r) {
        var t = r.pathname;
        return t === "/link2/";
      },
      queryName: "url"
    }
  } ] ];
  var i = [ [ "\u7801\u4e91", "gitee.com", {
    transform: {
      selector: '[href*="/link?target="]'
    },
    autojump: {
      validator: function(r) {
        var t = r.pathname;
        return t === "/link";
      }
    }
  } ] ];
  var l = [ [ "\u82b1\u74e3\u7f51", "huaban.com", {
    autojump: {
      validator: function(r) {
        var t = r.pathname;
        return t === "/go";
      },
      selector: ".wrapper button.ant-btn"
    }
  } ] ];
  var c = [ [ "\u7b80\u4e66", "jianshu.com", {
    transform: {
      selector: '[href*="links.jianshu.com/go?to="]',
      separator: "go?to="
    },
    autojump: {
      validator: function(r) {
        var t = r.pathname;
        return t === "/go-wild";
      },
      queryName: "url"
    }
  } ] ];
  var m = [ [ "\u6398\u91d1", "juejin.cn", {
    transform: {
      selector: '[href*="link.juejin.cn?target="]'
    }
  } ], [ , "link.juejin.cn", {
    autojump: {}
  } ] ];
  var f = [ [ "\u529b\u6263\uff08Leetcode\uff09", "leetcode.cn", {
    transform: {
      selector: '[href*="/link/?target="]'
    }
  } ] ];
  var s = [ [ "\u725b\u5ba2\u7f51", "nowcoder.com", {
    transform: {
      selector: [ '[href*="gw-c.nowcoder.com/api/sparta/jump/link?link="]', '[href*="hd.nowcoder.com/link.html?target="]' ].join(","),
      separator: /\?target|link\=/
    }
  } ], [ , "hd.nowcoder.com", {
    autojump: {}
  } ] ];
  var v = [ [ "\u5f00\u6e90\u4e2d\u56fd", /^(?:my\.)?oschina\.net$/, {
    transform: {
      selector: '[href*="oschina.net/action/GoToLink?url="]',
      separator: "GoToLink?url="
    },
    autojump: {
      validator: function(r) {
        var t = r.pathname;
        return t === "/action/GoToLink";
      },
      queryName: "url"
    }
  } ] ];
  var p = [ [ "pixiv", "pixiv.net", {
    transform: {
      selector: '[href*="/jump.php?"]',
      separator: "?"
    },
    autojump: {
      validator: function(r) {
        var t = r.pathname;
        return t === "/jump.php";
      },
      selector: "a[href]",
      separator: "?"
    }
  } ] ];
  var d = [ [ "\u5fae\u4fe1", "weixin110.qq.com", {
    autojump: {
      validator: function(r) {
        var t = r.pathname;
        return t === "/cgi-bin/mmspamsupport-bin/newredirectconfirmcgi";
      },
      getOriginalUrl: function() {
        return document.querySelector(".weui-msg p.weui-msg__desc").textContent;
      },
      selector: "a.weui-btn.weui-btn_default"
    }
  } ], [ "\u5fae\u4fe1\u5f00\u653e\u793e\u533a", "developers.weixin.qq.com", {
    autojump: {
      validator: function(r) {
        var t = r.pathname;
        return t === "/community/middlepage/href";
      },
      queryName: "href"
    }
  } ], [ "QQ \u90ae\u7bb1", "mail.qq.com", {
    autojump: {
      validator: function(r) {
        var t = r.pathname;
        return t === "/cgi-bin/readtemplate";
      },
      selector: "div.c-footer a.c-footer-a1",
      queryName: "gourl"
    }
  } ], [ "PC \u7248 QQ", "c.pc.qq.com", {
    autojump: {
      validator: function(r) {
        var t = r.pathname;
        return t === "/middlem.html";
      },
      queryName: "pfurl"
    }
  } ], [ "\u817e\u8baf\u6587\u6863", "docs.qq.com", {
    autojump: {
      validator: function(r) {
        var t = r.pathname;
        return t === "/scenario/link.html";
      },
      queryName: "url"
    }
  } ] ];
  var h = [ [ "360 \u641c\u7d22", "so.com", {
    transform: {
      selector: 'a[href*="so.com/link?"][data-mdurl]',
      customTransform: function customTransform(r) {
        var t = r.getAttribute("data-mdurl");
        if (validateUrl(t)) r.setAttribute("href", t);
      }
    }
  } ] ];
  var y = [ [ "\u5c11\u6570\u6d3e", "sspai.com", {
    transform: {
      selector: '[href*="sspai.com/link?target="]'
    },
    autojump: {
      validator: function(r) {
        var t = r.pathname;
        return t === "/link";
      }
    }
  } ] ];
  var _ = [ [ "\u817e\u8baf\u4e91\u5f00\u53d1\u8005\u793e\u533a", "cloud.tencent.com", {
    transform: {
      selector: '[href*="/developer/tools/blog-entry?target="]'
    },
    autojump: {
      validator: function(r) {
        var t = r.pathname;
        return t === "/developer/tools/blog-entry";
      }
    }
  } ] ];
  var b = [ [ "\u5fae\u535a", "weibo.com", {
    transform: {
      selector: '[href*="weibo.cn/sinaurl?u="]',
      queryName: "u"
    }
  } ], [ , "weibo.cn", {
    autojump: {
      validator: function(r) {
        var t = r.pathname;
        return t === "/sinaurl";
      },
      queryName: "u"
    }
  } ] ];
  var g = [ [ "YouTube", "youtube.com", {
    transform: {
      selector: '[href*="youtube.com/redirect?event="]',
      queryName: "q"
    }
  } ] ];
  var j = [ [ "\u8bed\u96c0", "yuque.com", {
    autojump: {
      validator: function(r) {
        var t = r.pathname;
        return t === "/r/goto";
      },
      queryName: "url"
    }
  } ] ];
  var q = [ [ "\u77e5\u4e4e\u3001\u77e5\u4e4e\u4e13\u680f", /^(?:zhuanlan\.)?zhihu\.com$/, {
    transform: {
      selector: '[href*="link.zhihu.com/?target="]'
    }
  } ], [ , "link.zhihu.com", {
    autojump: {}
  } ] ];
  var w = Object.freeze({
    __proto__: null,
    afdianNet: a,
    baiduCom: o,
    csdnNet: n,
    doubanCom: u,
    giteeCom: i,
    huabanCom: l,
    jianshuCom: c,
    juejinCn: m,
    leetcodeCn: f,
    m_51CtoCom: e,
    nowcoderCom: s,
    oschinaNet: v,
    pixivNet: p,
    qqCom: d,
    soCom: h,
    sspaiCom: y,
    tencentCom: _,
    weiboCom: b,
    youtubeCom: g,
    yuqueCom: j,
    zhihuCom: q
  });
  function _array_like_to_array(r, t) {
    if (t == null || t > r.length) t = r.length;
    for (var e = 0, a = new Array(t); e < t; e++) a[e] = r[e];
    return a;
  }
  function _array_with_holes(r) {
    if (Array.isArray(r)) return r;
  }
  function _iterable_to_array_limit(r, t) {
    var e = r == null ? null : typeof Symbol !== "undefined" && r[Symbol.iterator] || r["@@iterator"];
    if (e == null) return;
    var a = [];
    var o = true;
    var n = false;
    var u, i;
    try {
      for (e = e.call(r); !(o = (u = e.next()).done); o = true) {
        a.push(u.value);
        if (t && a.length === t) break;
      }
    } catch (r) {
      n = true;
      i = r;
    } finally {
      try {
        if (!o && e["return"] != null) e["return"]();
      } finally {
        if (n) throw i;
      }
    }
    return a;
  }
  function _non_iterable_rest() {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }
  function _sliced_to_array(r, t) {
    return _array_with_holes(r) || _iterable_to_array_limit(r, t) || _unsupported_iterable_to_array(r, t) || _non_iterable_rest();
  }
  function _unsupported_iterable_to_array(r, t) {
    if (!r) return;
    if (typeof r === "string") return _array_like_to_array(r, t);
    var e = Object.prototype.toString.call(r).slice(8, -1);
    if (e === "Object" && r.constructor) e = r.constructor.name;
    if (e === "Map" || e === "Set") return Array.from(e);
    if (e === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)) return _array_like_to_array(r, t);
  }
  var k = Object.values(w).flat();
  var C = k.find((function(r) {
    var e = _sliced_to_array(r, 2), a = e[1];
    if (isString(a)) return a === t;
    return a.test(t);
  }));
  if (r(C)) {
    var N = C[2], A = N.transform, U = N.autojump;
    if (A) {
      var S = A.selector, T = A.queryName, L = A.separator, O = L === void 0 ? "?target=" : L, x = A.customTransform, z = x === void 0 ? function(r) {
        var t = T ? new URL(r.href).searchParams.get(T) : r.href.split(O)[1];
        if (t) r.href = decodeURIComponent(t);
      } : x;
      var I = new MutationObserver((function() {
        document.querySelectorAll(S).forEach(z);
      }));
      I.observe(document.body, {
        childList: true,
        subtree: true
      });
    }
    if (U) (function() {
      var r;
      var t = U.validator, e = U.getOriginalUrl, a = U.selector, o = U.separator, n = U.queryName, u = n === void 0 ? "target" : n;
      if (t && !t(location)) return;
      if (isFunction(e)) {
        var i = e();
        if (i && validateUrl(i)) return location.replace(i);
      }
      if (a && document.querySelector(a)) return document.querySelector(a).click();
      var l = location.search;
      var c = decodeURIComponent(o ? (r = l.split(o)) === null || r === void 0 ? void 0 : r[1] : new URLSearchParams(l).get(u) || "");
      validateUrl(c) && location.replace(c);
    })();
  }
})();