コピーしたリンクのURLのトラッキングコードを削除するブックマークレット

Firefox 120からトラッキングコードが削除可能に

Firefox 120からコピーしたリンクのURLのトラッキングコードが削除可能になりました。

使い方はリンクの右クリックメニューにある「サイト追跡を除いたリンクをコピー」を選択するだけです。

一見すると便利な機能に見えますが、Googleアナリティクスのパラメーター(utm_sourceなど)は削除されず、何のパラメーターが削除されるのかがわからないという問題があります。

また、削除したいパラメーターを自分でカスタマイズできないです。

トラッキングコードを削除するブックマークレットを作成

前述の問題は自身でトラッキングコードを削除するブックマークレットを作成すれば解決します。

ブックマークレットとはブラウザのブックマークバーに保存できるJavaScriptプログラムです。

例えば以下のブックマークレットは実行するとalertで「Hello」と表示されます。

試しに「Helloと表示するブックマークレット」をブラウザのブックマークバーに保存して実行してみて下さい。

Helloと表示するブックマークレット

javascript:(() => { alert('Hello'); })();

クリップボードに保存されているテキストを置換する

JavaScriptにはクリップボードのテキストを読み込む「Clipboard.readText()」と、テキストを書き込む「Clipboard.writeText()」があるので、こちらを利用します。

やり方は以下のようにしてクリップボードのトラッキングコードをreplaceメソッドで除去したあとクリップボードに保存し直すだけです。

navigator.clipboard.readText()
  .then(url => {
    const paramRegex = /([?&])(utm_[^=]+|fbclid|gclid|_hsenc|p[df]_rd_[a-z]{1,2}|content-id)=[^&]+/g
    const replaceUrl = url.replace(paramRegex, '');
    const cleanUrl = replaceUrl.replace(/(?<=\/)&/, '?').replace(/[?&]$/, '');
    navigator.clipboard.writeText(cleanUrl);
  })
  .catch(err => console.error(err));

これをjavascript:で始まる1行のブックマークレットに変換すると以下のようになります。

javascript:navigator.clipboard.readText().then((e=>{const c=e.replace(/([?&])(utm_[^=]+|fbclid|gclid|_hsenc|p[df]_rd_[a-z]{1,2}|content-id)=[^&]+/g,"").replace(/(?<=\/)&/,"?").replace(/[?&]$/,"");navigator.clipboard.writeText(c)})).catch((e=>console.error(e)));

これを実行するとコピーしてクリップボードに保存したURLがトラッキングコードを除去した状態に保存し直されるので試して見て下さい。

トラッキングコードを除去するブックマークレット