Greasy Fork is available in English.
Amazon.co.jp URL 清理脚本:移除路径中的 /ref= 片段与常见跟踪参数。商品页规范为 /dp/ASIN;非商品页仅删已知跟踪参数并保留其它参数以确保筛选等功能可用。拦截 History/Location、链接点击与 SPA 路由,让 URL 始终更易读、更注重隐私。
Amazon.co.jp の長くて読みにくい URL から、/ref= や各種トラッキング用クエリパラメータを自動で取り除き、
短く・クリーンで・共有しやすく・プライバシーに配慮したリンクに変換する Userscript です。
https://www.amazon.co.jp/*ref などのトラッキングパラメータ削除次のような、非常に長い商品 URL:
https://www.amazon.co.jp/Example-Product/dp/B012345678/ref=sr_1_1?pf_rd_p=xxxx&pf_rd_r=yyyy&qid=1234567890&sr=8-1
を、自動的に以下のようなシンプルな形に変換します:
https://www.amazon.co.jp/dp/B012345678
/dp/ASIN / /gp/product/ASIN / /gp/aw/d/ASIN などのパターンを認識し、ASIN を抽出/-/en/, /-/es/ など) が付いている場合は、そのプレフィックスを維持検索ページやトップページ・カテゴリページ等では、 フィルタやソートなどの「機能に必要な」パラメータは残しつつ、トラッキング専用パラメータだけを削除します。
例:
https://www.amazon.co.jp/s?k=kindle&ref=nb_sb_noss_1&pf_rd_p=xxxx&pf_rd_r=yyyy&page=2&sort=price-asc-rank
を以下のようにクリーンアップ:
https://www.amazon.co.jp/s?k=kindle&page=2&sort=price-asc-rank
/ref=... はカットpf_rd_*, pd_rd_*, qid, sr など、明らかなトラッキング用パラメータを削除k, keywords, rh, page, sort, node など、検索条件やフィルタに必要なキーだけ特別に保持Amazon.co.jp はシングルページアプリケーション的な振る舞いが多く、 リンククリックや内部遷移で URL が何度も書き換えられます。
本スクリプトは以下をフックして、常に URL をクリーンな状態に保ちます:
history.pushState / history.replaceState + popstate イベントLocation.assign / Location.replace<a href="..."> の左クリック)これにより、
など様々なケースで、自然に・ほぼリアルタイムに URL が正規化されます。
@grant none で動作し、余計な権限を要求しませんdocument-start でできる限り早期に URL を正規化ご利用のブラウザに、以下のいずれかの拡張機能をインストールしてください:
https://raw.githubusercontent.com/koyasi777/amazon-jp-url-cleaner/main/amazon-jp-url-cleaner.user.jshttps://www.amazon.co.jp/ を開けば自動的にスクリプトが動作しますGitHub リポジトリ:
https://github.com/koyasi777/amazon-jp-url-cleaner
基本的には、インストールするだけで何も操作は不要です。
https://www.amazon.co.jp/ にアクセス共有したいときは、アドレスバーの URL をコピーするだけで OK です。 すでにトラッキング情報等が削除され、/dp/ASIN 形式や必要最低限のクエリだけが残った URL になっています。
*.amazon.co.jp のみを厳密に判定amazon.com, amazon.de など) には一切干渉しませんメイン関数は canonicalize(input) です。
new URL(input, location.href) で URL を厳密にパース*.amazon.co.jp でなければ何もしない/dp/ASIN, /gp/product/ASIN, /gp/aw/d/ASIN のいずれかにマッチした場合/dp/ASIN URL を生成const PRODUCT_ALLOW_KEYS = [];
/dp/ASIN?tag=... のように付与できます[] の場合は、クエリパラメータを完全に削除し、最もクリーンな URL になります例: アフィリエイトタグを残したい場合
const PRODUCT_ALLOW_KEYS = ['tag'];
商品ページでない場合は、トラッキングパラメータの除去に特化した処理を行います。
/ref= が含まれていれば、その手前までで切り捨てconst TRACKING_BLACKLIST = new Set([
'ref', 'ref_', 'pf_rd_r', 'pf_rd_p', 'pf_rd_m', 'pf_rd_s', 'pf_rd_t', 'pf_rd_i',
'pd_rd_r', 'pd_rd_w', 'pd_rd_wg', 'qid', 'sr', 'keywords', // keywordsは検索維持のため例外判定あり
'dchild', 'crid', 'sprefix', 'field-keywords', 'hvpos', 'hvexid', 'hvnetw',
'hvrand', 'hvqmt', 'hvbmt', 'hvdev', 'hvdvcmdl', 'hvlocint', 'hvlocphy',
'hvtargid', 'hydadcr', '_encoding', 'ie',
]);
ref, ref_ は全ページで無条件削除pf_rd_*, pd_rd_* など、典型的なリファラ / トラッキング系パラメータを削除/s で始まるパス) では、機能維持のため一部キーを例外的に残します:const FUNCTIONAL_KEYS_ON_SEARCH = new Set(['keywords', 'k', 'rh', 'page', 'sort', 'node']);
これにより、
k, keywords)rh, node)sort)page)などのユーザー操作に直結する機能は壊さず, トラッキングだけを削除できます。
document-start) に normalizeHere() を実行// 約 250ms 間隔で最大 ~10 秒
// 8 回連続で変化がない or 40 回経過で監視終了
setInterval(...);
また、次のタイミングでも補助的に正規化を実行:
DOMContentLoadedloadvisibilitychange (タブが再度可視状態になったとき)history.pushState = function (state, title, url) { ... }
history.replaceState = function (state, title, url) { ... }
window.addEventListener('popstate', normalizeHere, { capture: true });
pushState / replaceState される URL を事前に canonicalizereplaceState が URL なしで呼ばれた場合は、現在の location.href 自体を正規化Location.assign / Location.replace をフックし、
canonicalizeブラウザやセキュリティポリシーによって Location.prototype への書き込みができない場合は、
window.location インスタンス自身へのプロパティ定義でフォールバックを試みます。
document.addEventListener('click', (e) => { ... }, { capture: true });
button === 0)Ctrl / Shift / Meta / Alt キーが押されている場合はスキップ(新規タブ・複数選択などに配慮)<a href> を closest で探索し、Amazon.co.jp かつ http/https のみ対象download 属性付き / target="_blank" / rel="external" のリンクは除外<a> の href を 遷移前にクリーンな URL に書き換え上級ユーザー向けに、挙動を一部カスタマイズできるようになっています。 スクリプトの上部にある以下の定数を書き換えてください。
const PRODUCT_ALLOW_KEYS = [];
例: アフィリエイトタグ tag と、ユーザーの言語設定 language だけ残す:
const PRODUCT_ALLOW_KEYS = ['tag', 'language'];
[] にすると、クエリパラメータは一切残さず、
https://www.amazon.co.jp/dp/ASIN (+ #hash) のみになりますconst TRACKING_BLACKLIST = new Set([...]);
/s パス) では、次の FUNCTIONAL_KEYS_ON_SEARCH に含まれるキーは保持されますconst FUNCTIONAL_KEYS_ON_SEARCH = new Set(['keywords', 'k', 'rh', 'page', 'sort', 'node']);
TRACKING_BLACKLIST を上書きして保持されます@grant none で、追加の拡張権限を要求しません*.amazon.co.jp のみに限定していますAmazon 側の仕様変更により、今後新しいパラメータや URL パターンが追加される可能性があります
TRACKING_BLACKLIST や FUNCTIONAL_KEYS_ON_SEARCH を更新してください他の Amazon 向け拡張機能 / Userscript と URL 書き換えタイミングで競合する可能性があります
モバイルブラウザや一部の環境では、Location.prototype へのフックが制限されている場合があります
Q. 検索結果ページでフィルタが効かなくなった / 条件が消えることがありますか?
A. 既定では k / keywords / rh / node / page / sort など機能に必要なキーを残すようにしています。
特定のユースケースで問題が発生する場合は、発生した URL とともに Issue を報告していただけると助かります。
Q. アフィリエイトのタグは残せますか?
A. はい。PRODUCT_ALLOW_KEYS に tag を追加することで、商品ページのクエリに ?tag=... を残せます。
Q. 他の Amazon ドメイン (amazon.com / amazon.de など) でも使いたいです。
A. 現状は amazon.co.jp 専用です。@match とホスト判定 (\.amazon\.co\.jp$) を調整すれば拡張は可能ですが、
各国ドメインでのパラメータや動作確認が必要になります。
バグ報告・改善提案・PR は歓迎です。
https://github.com/koyasi777/amazon-jp-url-cleanerhttps://github.com/koyasi777/amazon-jp-url-cleaner/issues提案の際は、可能であれば:
などを記載いただけると、原因特定が非常にスムーズになります。
LICENSE を参照してください。This userscript cleans and canonicalizes Amazon.co.jp URLs by:
/dp/ASIN form/ref=... segments and tracking query parameters (pf_rd_*, pd_rd_*, qid, sr, etc.)k, keywords, page, sort, node)Just install it in Tampermonkey/Violentmonkey, visit https://www.amazon.co.jp/, and your URLs will automatically become shorter, cleaner, and more privacy-respecting.