您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
直接的链接,更少的跟踪。
当前为
- // ==UserScript==
- // @name ACT.Google.DM.Trackless
- // @name:zh-CN ACT.谷歌.DM.直链无跟踪
- // @description Make links direct and track less.
- // @description:zh-CN 直接的链接,更少的跟踪。
- // @author ACTCD
- // @version 20220419.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
- // ==/UserScript==
- (function () {
- 'use strict';
- window.addEventListener('click', event => {
- const anchor = event.target.closest('a');
- if (!anchor) return;
- anchor.removeAttribute('ping');
- 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?') {
- const r_url = url.searchParams.get('url');
- r_url && (url.href = anchor.href = r_url);
- }
- if (anchor.hasAttribute('target')) {
- window.open(url, anchor.getAttribute('target'), 'noopener,noreferrer');
- } else {
- location.assign(url);
- }
- event.preventDefault();
- 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 });
- }
- })();