Remove URL Tracking Parameters

移除網址中的跟踪參數

当前为 2024-08-17 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Remove URL Tracking Parameters
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.1
  5. // @description 移除網址中的跟踪參數
  6. // @author abc0922001
  7. // @match *://*/*
  8. // @grant none
  9. // @license MIT
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. // 使用 Set 來存儲跟踪參數
  16. const trackingParams = new Set([
  17. 'utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',
  18. 'fbclid', 'gclid', 'yclid', 'mc_cid', 'mc_eid', 'dclid'
  19. ]);
  20.  
  21. function removeTrackingParams(url) {
  22. try {
  23. const urlObj = new URL(url);
  24. let params = urlObj.searchParams;
  25. let removed = false;
  26.  
  27. trackingParams.forEach(param => {
  28. if (params.has(param)) {
  29. params.delete(param);
  30. removed = true;
  31. }
  32. });
  33.  
  34. return removed ? urlObj.toString() : url;
  35. } catch (error) {
  36. console.error('Error processing URL:', error);
  37. return url;
  38. }
  39. }
  40.  
  41. function cleanURL() {
  42. const currentUrl = window.location.href;
  43. const cleanedUrl = removeTrackingParams(currentUrl);
  44. if (cleanedUrl !== currentUrl) {
  45. try {
  46. window.history.replaceState({}, document.title, cleanedUrl);
  47. } catch (error) {
  48. console.error('Error updating URL:', error);
  49. }
  50. }
  51. }
  52.  
  53. // 初始清理
  54. cleanURL();
  55.  
  56. // 監聽 URL 變化
  57. window.addEventListener('popstate', cleanURL);
  58.  
  59. // 對於單頁應用,可以考慮額外監聽自定義事件
  60. // 例如:window.addEventListener('routechange', cleanURL);
  61. })();