// ==UserScript== // @name ACT.Google.DM.Trackless // @name:zh-CN ACT.谷歌.DM.直链无跟踪 // @description Make links direct and track less. // @description:zh-CN 直接的链接,更少的跟踪。 // @author ACTCD // @version 20220420.1 // @license GPL-3.0-or-later // @namespace ACTCD/Userscripts // @supportURL https://github.com/ACTCD/Userscripts#contact // @homepageURL https://github.com/ACTCD/Userscripts // @match *://www.google.com/* // @grant none // @run-at document-start // @downloadURL none // ==/UserScript== (function () { 'use strict'; window.addEventListener('click', event => { const anchor = event.target.closest('a'); if (!anchor) return; anchor.removeAttribute('ping'); anchor.setAttribute('rel', 'noopener noreferrer'); const href = anchor.getAttribute('href'); if (!href || href == '#') return; if (['button'].includes(anchor.getAttribute('role'))) return; const url = new URL(href, location); if (href.slice(0, 5) == '/url?') { anchor.href = url.searchParams.get('url') || href; } event.stopImmediatePropagation(); }, true); window.addEventListener('contextmenu', event => { event.stopImmediatePropagation(); }, true); window.addEventListener('mousedown', event => { event.stopImmediatePropagation(); }, true); window.addEventListener('mouseup', event => { event.stopImmediatePropagation(); }, true); const inline_script = () => { window.navigator.sendBeacon = () => console.log('BAN: Beacon'); }; const script = document.createElement("script"); script.textContent = '(' + inline_script + ')();'; if (document.head) { document.head.append(script); } else { new MutationObserver((mutationList, observer) => { document.head && (observer.disconnect(), document.head.append(script)); }).observe(document, { subtree: true, childList: true }); } })();