您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
替换重定向的链接
当前为
// ==UserScript== // @name 自动重定向 // @namespace http://tampermonkey.net/ // @version 0.3.0 // @description 替换重定向的链接 // @author share121 // @match *://*/* // @run-at document-start // @license MIT // @connect * // @grant GM_xmlhttpRequest // ==/UserScript== (() => { /* function changHref(ele) { try { if (ele.href) { fetch(new URL(ele.href, location.href).toString(), { method: "HEAD", }) .then((e) => { if (e.url && e.url !== ele.href) { ele.href = e.url; } }) .catch((e) => console.error(e)); } } catch (e) { console.error(e); } } */ function changHref(ele) { try { if (ele.href) { GM.xmlHttpRequest({ method: "HEAD", url: new URL(ele.href, location.href).toString(), onload: function (response) { if ( response.finalUrl && response.finalUrl !== ele.href ) { ele.href = response.finalUrl; } }, onerror: function (response) { console.error(response); }, }); } } catch (e) { console.error(e); } } function isA(ele) { while (ele) { if (ele instanceof HTMLAnchorElement) { return ele; } ele = ele.parentNode; } return false; } new MutationObserver((mutationList) => { mutationList.forEach((e) => { if (e.type === "attributes") { if (e.target instanceof HTMLAnchorElement) { changHref(e.target); } } else { e.addedNodes.forEach((ele) => { if (ele instanceof HTMLAnchorElement) { changHref(ele); } }); } }); }).observe(document, { subtree: true, childList: true, attributeFilter: ["href"], }); window.addEventListener("mouseover", (e) => { let a = isA(e.target); if (a) { changHref(a); } }); })();