HTTP リクエストヘッダーを、 あなたの思いどおりに
ルールを定義すれば——ヘッダー名、値、URL パターン——Chrome が一致するリクエストに適用します。作業しながら個々のルールをオン・オフしたり、マスタースイッチで一括停止したりできます。ルールはそのまま残り、削除されることはありません。
Chrome または Chromium ベースのブラウザが必要です
ルールの実際の中身
3 つのフィールド。モデルはこれで全部です。スクリプトも設定ファイルも、動かしておくプロキシも要りません。
X-Debug-Mode: verbose — URL パターン: https://staging.example.com/*
Authorization: Bearer eyJhbGciOi… — URL パターン: https://api.example.com/v2/*
X-Feature-Flag: new-checkout — URL パターン: https://*.example.com/*
1 行が 1 つのルールです。右のトグルはそのルールだけを無効にし、ポップアップのマスタースイッチはすべてのルールを一括で無効にしますが、内容はそのまま残ります。
できること
- ヘッダーの追加と上書き — 存在しないヘッダーを設定することも、ブラウザが送るはずのヘッダーを置き換えることもできます。ルールから見れば、どちらも同じ操作です。
- URL パターンで対象を限定 — 各ルールを狙ったオリジンとパスだけに限定できるので、ステージング専用のヘッダーが本番に届くことはありません。
- ルールごとのトグル — 仮説を確かめるために 1 つだけオフにして、また戻す。編集も打ち直しも、コメントアウトした行も要りません。
- マスタースイッチ — ひとつの操作ですべてのルールを一括停止。きれいな状態で不具合を再現する直前に便利です。ルールが削除されることはありません。
- ついてくるルール — ルールは Chrome の同期ストレージに保存されるため、再起動しても残り、同じ Chrome プロファイルでログインしている他のマシンにも表示されます。
- Manifest V3 — declarativeNetRequest を基盤にしているため、ルールを適用するのは Chrome 自身です。拡張機能が通信経路に入ってリクエストを読むことはありません。
権限について
Chrome は、この拡張機能が「すべてのウェブサイト上のすべてのデータの読み取りと変更」ができると警告します。この警告は拡張機能が要求した権限から生成されるもので、実際の動作から生成されるものではありません。要求する権限とその理由をすべて挙げます。
- declarativeNetRequest — ヘッダールールを適用する API です。Chrome が内部でルールを評価し、自らリクエストを変更します。拡張機能がリクエストの中身を受け取ることはありません。
- storage — ルールを保存し、ブラウザを再起動しても残るようにし、ログイン中の Chrome プロファイル間で同期します。保存されるのはルールだけです。
- <all_urls> — あの恐ろしげな警告を出しているのがこれです。どの URL にルールを当てるかを決めるのはあなたなので、対象ホストの集合は事前にはわかりません。拡張機能は、あなたがルールに書きうるあらゆる URL に対して動作できる必要があります。これを狭めるということは、固定のサイト一覧を同梱し、それ以外では動かないと突っぱねるということです。
やらないこと
- ページの内容や DOM を読みません。
- 閲覧履歴を読むことも記録することもありません。
- 分析データ、利用データ、識別子のたぐいを一切収集しません。
- 独自のネットワークリクエストを行わず、リモートコードも読み込みません。
- 当方のサーバーにも第三者にも、何も送信しません。
インストール前に知っておきたい制限
デバッグの途中で気づくより、ここで読んでおくほうがいいはずです。
- このブラウザのみ — ルールが適用されるのは、このブラウザが送るリクエストだけです。サーバー間の呼び出し、curl、Postman、CI ランナー、バックエンドからの送信リクエストはいずれも影響を受けません。
- リクエストヘッダーのみ — レスポンスヘッダーは変更されません。返ってくる内容を変えたいのであれば、これは適したツールではありません。
- 設定できないヘッダーがあります — Chrome は一部のヘッダーを拡張機能による変更から保護しています。それらを狙ったルールはエラーも警告も出ないまま黙って破棄されます。ルールが正しく見えるのに何も起きない場合、たいていこれが原因です。
よくある質問
私に関するデータを収集しますか?
いいえ。分析もテレメトリも識別子もなく、広告やアトリビューションの SDK もありません。拡張機能は独自のネットワークリクエストを行いません。保存するのはあなたが作ったルールだけで、保存先は Chrome 自身のストレージです。
なぜすべてのウェブサイトへのアクセスが必要なのですか?
どの URL にルールを当てるかを選ぶのはあなたなので、対象ホストの集合は事前にわかりません。今日書いたルールが、私たちの知らない URL にも効くのは、この権限があるからです。ページの内容も閲覧履歴も読みません。
レスポンスヘッダーは変更できますか?
いいえ、リクエストヘッダーのみです。レスポンスの変更は別の機能で、この拡張機能は持っていません。
ルールが効かないのはなぜですか?
よくある原因は、Chrome がそのヘッダーを拡張機能による設定から保護していて、変更を黙って破棄している場合です。そうでなければ、URL パターンが本当にそのリクエストに一致しているか、ルールのトグルがオンか、マスタースイッチがオフになっていないかを確認してください。
ブラウザの外で発生するリクエストにも影響しますか?
いいえ。影響を受けるのはこのブラウザが送るリクエストだけです。サーバー間の通信は、あなた自身のバックエンドが送るリクエストも含めて、そのまま送信されます。
ルールはどこに保存されますか?
Chrome 自身のストレージである chrome.storage.sync です。そのため再起動しても残り、同じ Chrome プロファイルでログインしている他のマシンにも同期されます。当方に送信されることは一切ありません。