コンテンツにスキップ

プロセス単位のキャプチャ

たった1つのプログラムのトラフィックだけを見たいのに、「グローバルプロキシを変更し、証明書をインストールし、キャプチャ後にすべて元に戻す」という一連の面倒な手続きは踏みたくない、そんなことはありませんか。起動コマンドを渡すだけで、ツールがそのプログラムを代わりに起動し、そのプログラム1つだけをキャプチャして起動時から平文を表示します。システム上の他のソフトウェアへの干渉はゼロ。単一のプログラムをキャプチャする、最も軽量でクリーンな方法です。


1. プロキシキャプチャとの違い

Section titled “1. プロキシキャプチャとの違い”

単一のプログラムをプロキシ経由でキャプチャするには、通常はシステムプロキシを変更し、そのプログラム用に証明書をインストールし、終わったらすべて元に戻す必要があります。しかも不注意だと他のソフトウェアにまで影響が及ぶリスクがあります。プロセス単位のキャプチャは、こうした手間をすべて省きます。

単一プログラムをプロキシ経由でキャプチャ(従来の方法) プロセス単位のキャプチャ
システム全体のプロキシ 変更が必要で、後で元に戻す必要もある 変更なし
証明書のインストール インストールが必要で、プログラムがそれを信頼する必要もある 不要
他のソフトウェアへの影響 あり得る(グローバルプロキシが波及する) 干渉ゼロ(このプログラム1つだけに作用)
平文が見えるか プログラムが証明書を信頼している場合のみ 起動時から平文(一般的なプログラムは自動復号)
キャプチャ後の後始末 プロキシの復元/証明書の削除が必要 停止するだけ、元に戻すものは何もない

ひとことで言えば、プロキシキャプチャは「マシン全体」に手を入れ、プロセス単位のキャプチャは「このプログラム1つ」だけに手を入れます。 単一のプログラムが何を送っているのかをクリーンに見たいなら、これが最も手間のかからない方法です。


  • このプログラム1つだけをキャプチャし、侵入はゼロ:システムプロキシの変更も、証明書のインストールも、NIC への操作も行いません。キャプチャされるのはあなたが起動したプログラムだけ。システム上の他のソフトウェアはまったく影響を受けず、キャプチャ後の後始末もありません。
  • 起動時から平文、広いカバー範囲:ブラウザ、Electron 系のデスクトップアプリ、Node、Python、デスクトップ版 Java、そして一般的な暗号ライブラリを使うコマンドラインツールは、どれも1つのコマンドで起動した瞬間から平文が表示されます。プログラム側の設定は何も不要で、証明書のインストールもいりません。
  • 子プロセスも自動で追跡:プログラムが内部で生成する子プロセスもまとめてキャプチャされ、取りこぼしはありません。
  • いつでもすぐ使える:スクリプトのデバッグや API の検証なら、コマンドを入力するだけでキャプチャを開始できます。プロキシを設定して証明書をインストールするよりはるかに高速です。

「起動コマンド」に実行したいコマンド(例:python3 app.py)を入力すると、ツールがそれを起動し、そのトラフィックだけをキャプチャします。ワンクリックで使える例が3つ組み込まれており、クリックすると自動入力されるので、必要に応じて編集してください。

  • ブラウザの例まっさらな独立したブラウザウィンドウを起動し(普段使っているブラウザには手を触れません)、それを直接キャプチャします。HTTP/3 (QUIC) は通常の接続にフォールバックするようすでに設定済みなので、キャプチャしやすく復号も可能です。
  • Python の例:1つのコマンドでリクエストを送り、平文を確認できます。
  • コマンドラインの例:コマンドラインから送った HTTPS リクエストがそのままキャプチャされます。

新規セッション・プロセス単位のキャプチャ:起動コマンドを入力するとツールがプログラムを代わりに起動し、そのプログラム1つだけをキャプチャして自動で復号する。ブラウザ/Python/コマンドラインのワンクリック例が組み込まれている

キャプチャ中の別のプログラムが HTTP/3 を使っている場合は、セッション単位の「HTTP/3 をブロック」をオンにすると通常の接続にフォールバックし、同じくキャプチャしやすく復号も可能になります。


4. 平文を見る:うまくいくもの、別の方法が必要なもの

Section titled “4. 平文を見る:うまくいくもの、別の方法が必要なもの”
  • 一般的なプログラム:起動時から平文。ブラウザ、Electron アプリ、Node、Python、デスクトップ版 Java、そして一般的な暗号ライブラリを使うコマンドラインツールは、起動後そのまま平文が表示され、追加の手順は不要です。

実際の結果:1つのコマンドで起動したプログラムの HTTPS リクエストがキャプチャされ復号される。詳細には TLS「復号済み」と表示され、リクエストヘッダーと JSON レスポンスがきれいに整理されている

  • 一部のプログラムは復号できない(キャプチャは可能だが暗号文のみ):特殊な暗号ライブラリを使う一部のプログラムは、この方法では平文が得られません。最も典型的なのが macOS 内蔵の curl(および同じシステム暗号ライブラリをベースにしたツール)です。純粋に Go で書かれた一部のプログラムも同様です。

    コマンドラインから送った HTTPS の平文を見たい場合は、「Python の例」が最も確実です。あるいは OpenSSL ベースの curl に切り替えてください。

  • プロキシ設定を完全に無視するプログラム:この方法ではそのトラフィックをキャプチャできません。

こうした「防御が固い」または特殊なプログラムには、アプリ層キャプチャに切り替えてください。プログラムの内部から直接平文を読み取る方式で、証明書ピンニング、独自暗号、システム暗号ライブラリのいずれにも対応できます。


5. キャプチャ後:理解し、デコードする

Section titled “5. キャプチャ後:理解し、デコードする”

キャプチャしたデータは、他のすべてのキャプチャ方法と同じ処理を経るため、同じように簡単に理解・デコードできます。

  • 複数の表示方法:構造化表示、整形テキスト、16進、そして自動判別があり、送受信それぞれの方向で個別に切り替えられます。詳しくはデータの表示とデコードを参照してください。
  • 自動展開と自動判別:gzip / brotli / deflate / zstd を自動展開し(多重に重なった圧縮も含む)、JSON、XML、フォーム、protobuf / gRPC などを自動判別して整形します。
  • カスタムコーデック:独自・社内プロトコルには、短いスクリプトを書いて読み方を教えられます。詳しくはカスタムプロトコルのデコードを参照してください。

6. 4つのローカルキャプチャ方法の選び方

Section titled “6. 4つのローカルキャプチャ方法の選び方”
あなたの状況 使うべき方法
コマンドで起動できる通常のプログラム(ブラウザ/スクリプト/CLI) プロセス単位のキャプチャ(このページ、最も手軽)
マシン上のすべてのトラフィック、非 HTTP トラフィック、あるプログラムがネットワーク上で行うすべてを見たい NIC キャプチャ
すでに実行中のプログラム/証明書ピンニングを使う/プロキシを無視する/独自暗号を使う/システム暗号ライブラリを使うプログラム アプリ層キャプチャ
macOS の内蔵システムアプリ/手ごわいアプリ システムレベルキャプチャ

  • スクリプトのデバッグ/API の検証:Python / Node のスクリプトを書いて、それが実際に何を送受信しているのかを正確に見たい。コマンドを入力すればそのまま平文が見えます。
  • 1つのプログラムだけを監視:システム設定を変えたり他のソフトウェアに影響を与えたりせずに、このプログラム1つが誰と通信しているのかだけを見たい。
  • クリーンなブラウザセッションのキャプチャ:例を使って独立したブラウザウィンドウを起動すれば、普段のブラウザにあるプラグインやタブのノイズがない状態でキャプチャできます。

関連:プロキシキャプチャ · アプリ層キャプチャ · データの表示とデコード