🏠 返回首頁 

Greasy Fork is available in English.

Remove URL trackers

removes annoying url trackers parameters like utm_*, ref, etc

// ==UserScript==
// @name Remove URL trackers
// @namespace https://github.com/insign/remove-url-trackers
// @version 202409181423
// @description removes annoying url trackers parameters like utm_*, ref, etc
// @match *://*/*
// @author Hélio <[email protected]>
// @license WTFPL
// ==/UserScript==
(function() {
'use strict'
// Parameters (that start with these prefixes) to strip from the URL.
const paramsToStrip = ['utm_', 'ref', 'gclid', 'gclsrc', 'gs_', 'ga_', '_ga', '_gaq', '__utm', 'fbclid', 'mc_', '_cid', 'epik', 'context']
/**
* Checks if a parameter should be removed from the URL.
* @param {string} param - The parameter name (key=value format).
* @returns {boolean} - True if the parameter should be preserved, false otherwise.
*/
function shouldPreserveParam(param) {
return !paramsToStrip.some(prefix => param.startsWith(prefix))
}
/**
* Cleans the URL by removing the specified parameters.
* @param {string} url - The original URL.
* @returns {string} - The cleaned-up URL with unwanted parameters removed.
*/
function cleanUrl(url) {
return url.replace(/\?([^#]*)/, (match, searchParams) => {
const updatedParams = searchParams
.split('&')
.filter(shouldPreserveParam) // Retain only non-matching params.
.join('&')
return updatedParams ? '?' + updatedParams : ''
})
}
/**
* Updates the browser's URL by replacing history state if needed.
*/
function updateUrl() {
const currentUrl = location.href
const cleanedUrl = cleanUrl(currentUrl)
if (currentUrl !== cleanedUrl && window.history.replaceState) {
window.history.replaceState({}, '', cleanedUrl)
}
}
// Only run if the URL contains parameters.
if (/[\?&]/.test(location.search)) {
updateUrl()
}
})()