您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Dynamically checks for and removes nuisance/tracking parameters on links within YouTube pages. This helps to reduce tracking and helps keep your history clean, making visited links work properly.
// ==UserScript== // @name YouTube Tracking Param Remover // @namespace YTParams // @namespace http://tampermonkey.net/ // @version 1.0.0 // @description Dynamically checks for and removes nuisance/tracking parameters on links within YouTube pages. This helps to reduce tracking and helps keep your history clean, making visited links work properly. // @author BoffinBrain // @license MIT // @match https://www.youtube.com/* // @icon https://icons.duckduckgo.com/ip2/youtube.com.ico // @grant none // ==/UserScript== (function() { 'use strict'; const ytEvents = ["yt-action", "yt-enable-lockup-interaction", "yt-renderidom-finished"]; const badParams = ["pp", "si"]; const query = badParams.map(p => 'a[href*="&' + p + '="]').join(); const cleaner = ev => { const links = document.querySelectorAll(query); if (links.length) { console.log("YouTube Tracking Param Remover found " + links.length + " link(s) after event " + ev.type); links.forEach(link => { const urlParts = link.href.split("?"); const params = new URLSearchParams(urlParts[1]); badParams.forEach(param => params.delete(param)); link.href = urlParts[0] + "?" + params.toString(); }); } }; ytEvents.forEach(e => {document.addEventListener(e, cleaner)}); // Utility function to disover custom events firing on a webpage (@grant unsafeWindow required) // const dispatchEventOriginal = EventTarget.prototype.dispatchEvent; // unsafeWindow.EventTarget.prototype.dispatchEvent = function (event) { // console.log(event.type); // dispatchEventOriginal.apply(this, arguments); // }; // List of discovered events that fire on YT: // active-changed // active-endpoint-changed // can-show-more-changed // dom-change // guide-persistent-and-visible-changed // guide-persistent-changed // image-loaded // image-unloaded // iron-request-resize-notifications // iron-resize // mini-guide-visible-changed // render-guide-changed // shown-items-changed // yt-action // yt-autonav-pause-guide-closed // yt-enable-lockup-interaction // yt-get-context-provider // yt-guide-hover // yt-navigate-finish // yt-page-data-fetched // yt-page-data-updated // yt-rendererstamper-finished // yt-renderidom-finished // yt-request-elements-per-row // yt-service-request-sent // yt-set-fullerscreen-styles // yt-text-inline-expander-expanded-changed // yt-update-title })();