Fiddlerのインストール方法と使い方
Fiddlerは、Webトラフィックのキャプチャと解析を行うための強力なツールです。HTTPおよびHTTPSトラフィックを監視し、リクエストとレスポンスの詳細を確認することができます。特にHTTPSトラフィックをデコードする機能は非常に強力で、WebアプリケーションやREST APIのデバッグやトラブルシューティングに役立ちます。
Fiddlerの仕組み
Fiddlerは、クライアントコンピューターで動作するローカルプロキシーです。アプリケーションのトラフィックがFiddlerを経由し、Fiddlerがサーバーと通信します。これにより、FiddlerはすべてのHTTPおよびHTTPSリクエストとレスポンスをキャプチャし、解析することができます。
インストールと初期設定
Fiddler Classicのダウンロードページにアクセスします。
Fiddler End User License Agreement
の内容を確認した後に同意し、フォームに必要事項を記入してDownload For Windows
ボタンをクリックします。用途で
Corporate use
を選択した場合は警告が表示されますので、確認した後にContinue to Fiddler Classic
ボタンをクリックします。ダウンロードした
FiddlerSetup.xxxxx.exe
を実行し、インストールを開始します。Fiddler Classicのエンドユーザーライセンス契約書(EULA)が表示されますので、内容を確認した後に
I Agree
ボタンをクリックして同意します。インストール先のフォルダーを選択して
Install
ボタンをクリックします。インストールが完了したら
Close
ボタンをクリックしてインストールを完了します。スタートメニューから
Fiddler Classic
を起動します。初回起動時に
AppContainer Configuration
のダイアログが表示されます。特に必要なければCancel
ボタンをクリックして次回以降確認が求められないようにします。メニューから
Tools
>Options
を選択してFiddler Classicのオプション画面を開きます。HTTPS
タブを選択し、Decrypt HTTPS traffic
のチェックボックスをオンにします。Fiddler ClassicがHTTPSトラフィックをデコードするための証明書のインストール確認が求められますので、
Yes
ボタンをクリックします。その後さらに確認のダイアログが表示されますので、インストール操作を行います。
以上でFiddler Classicのインストールと初期設定が完了しました。これでWebトラフィックのキャプチャと解析を行う準備が整いました。
キャプチャ
Fiddler Classicを起動すると、デフォルトでWebトラフィックのキャプチャが開始されます。Fiddler Classicのメインウィンドウには、キャプチャされたHTTP/HTTPSリクエストとレスポンスの一覧が表示されます。ただし、キャプチャしたいトラフィックを行うアプリケーションによっては、Fiddler Classicが自動的にキャプチャできない場合があります。その場合は、以下の手順で設定を確認します。
ブラウザーおよびWinInet
Fiddler Classicは、起動時にユーザーのWinInetのプロキシー設定を自動的に書き換えます。この動作は、設定
>ネットワークとインターネット
>プロキシ
の設定からも確認することができます。
EdgeやChromeを含むWindows上の主要なブラウザー製品はWinInetのプロキシー設定を使用しますので、この動作によりHTTP/HTTPSトラフィックが自動的にキャプチャされるようになります。
変更された設定はFiddler Classicの終了時に自動的に元に戻りますが、Fiddler Classicがクラッシュした場合は元に戻らない場合がありますので、手動で元に戻す必要があります。Fiddler Classicの設定が残った状態のままブラウザーを起動すると、ブラウザーやアプリケーションでインターネットにアクセスできなくなることがありますので注意してください。
WinHTTPを使用するアプリケーション
Fiddler Classicは、主に非対話型のサービスアプリケーションなどで利用されるWinHTTPのプロキシー設定を変更しません。WinHTTPを使用するアプリケーションからのトラフィックをキャプチャするには、手動でWinHTTPのプロキシー設定をFiddlerに合わせる必要があります。WinHTTPを使用するアプリケーションからのトラフィックをキャプチャするには、以下の手順を実行します。
コマンドプロンプトを管理者として実行します。
次のコマンドを入力して、WinHTTPのプロキシ設定をFiddlerに合わせます。
netsh winhttp set proxy 127.0.0.1:8888
設定を確認するには、次のコマンドを入力します。
netsh winhttp show proxy
WinHTTPのプロキシ設定を元に戻すには、次のコマンドを入力します。
netsh winhttp reset proxy
.NET
.NETではプロキシー設定がHTTP_PROXYおよびHTTPS_PROXY環境変数から取得されます。Fiddler Classicはこれらの環境変数を自動的に設定しませんので、手動で設定する必要があります。
環境変数を永続化しない場合は、コマンドプロンプトを開いて次のコマンドを入力した後に、続けてコマンドプロンプトからアプリケーションを起動します。
set HTTP_PROXY=http://127.0.0.1:8888 set HTTPS_PROXY=http://127.0.0.1:8888
環境変数を永続化するには、システム環境変数に追加します。これには、
システムのプロパティ
>環境変数
から設定できます。
ループバックに関する注意
Fiddler Classicはループバックアドレス(127.0.0.1
)を使用しているアプリケーションのトラフィックをキャプチャできます。ただし、ループバックアドレスの場合には、アプリケーションがプロキシー設定を使用しないことがあります。特に、ローカルで動作するアプリケーションは、プロキシー設定を無視して直接通信を行うことがあります。そのため、ループバックアドレスを使用するアプリケーションのトラフィックをキャプチャするには、アプリケーションの設定を確認し、必要に応じてプロキシー設定を明示的に指定する必要があります。
トラフィック解析の例
ここでは例として、任意のバージョンのVisual Studioのオフラインレイアウトを作成するためのMinimalLayout.exeのトラフィックをキャプチャしてみます。あらかじめドキュメントの手順に沿ってツールをインストールしておいてください。
Fiddler Classicを起動し、キャプチャを開始します。
他のプロセスの通信もキャプチャされるので、フィルターを追加して
MinimalLayout.exe
の通信のみを表示するようにします。メニューからRules
>Custom Rules
を選択します。CustomRules.js
ファイルがエディターで開きますので、以下のようにOnBeforeRequestハンドラーに条件を追加して保存します。(不要になったらフィルターはコメントアウトしておきましょう。)static function OnBeforeRequest(oSession: Session) { // MinimalLayout.exe以外の通信を非表示にするフィルター var processInfo = oSession["X-PROCESSINFO"]; if(!processInfo || !processInfo.StartsWith("minimallayout:")){ oSession["ui-hide"] = "true"; } // 以降はFiddlerのデフォルトの処理を残しておきます。
コマンドプロンプトを開き、
MinimalLayout.exe
を実行します。"C:\Program Files (x86)\Microsoft Visual Studio\MinimalLayout\minimallayout.exe" preview --baseversion 15.9.0 --targetversion 15.9.1 --targetlocation c:\vslayout
Fiddler Classicのメインウィンドウの左側のペインに、
MinimalLayout.exe
が行ったHTTPリクエストとレスポンスが表示されます。ここで、/vs/versions
のリクエストを選択すると、右側のペインにリクエストとレスポンスの詳細が表示されます。Inspectors
タブを選択すると、リクエストとレスポンスの詳細な情報が表示されます。ここでは、HTTPヘッダーやボディの内容を確認できます。ここでは、/vs/versionsのリクエストに対して301リダイレクトが行われ、https://download.visualstudio.microsoft.com/...
にリダイレクトされていることが確認できます。左側のペインで
https://download.visualstudio.microsoft.com/...
のリクエストを選択すると、右側のペインにリダイレクト先のレスポンスが表示されます。レスポンスの欄でJSON
タブを選択すると、レスポンスの内容がJSON形式で表示されます。ここでは、Visual Studioの各バージョンのURLが含まれている様子が確認できます。(ちなみに、このレスポンスを利用してVisual C++再頒布可能パッケージのリンクの一覧を生成しています。)