先月、日本オライリーさんの 「実践 Fiddler」 という書籍の監訳のお手伝いをさせていただきました関係で、6 月 30 日 (2013) に「Fiddler ユーザーの集い」 で 「今日から使う Fiddler」というタイトルで、セッションを持たせていただきました。
内容は、初学者が Fiddler を使い始めるめの基本的なものとなっており、エキスパートな方々には少々物足りなかったかもしれません。
さて、スライドをシェアしたものの、ほとんどがデモで構成されたセッションなので、きっとスライドを見てもわけわからんだろうということで、フォローアップの記事を書いておきます。(長いので 2 回にわけます)
今日から使う Fiddler
この記事ではセッションの内容の抜粋を紹介していきます。
Fiddler とは
無償の HTTP 専門のネットワークキャプチャツールで、Web をプロトコルレベルでデバッグする際に使用します。
もうちょっとわかりやすく説明すると、通常我々が見ている Web というものは、HTTP、HTTPS というプロトコル (通信規約) によってデータのやり取りがなされています。
これら HTTP で Web サーバーから送られた情報は Web を見るための道具である Web ブラウザーによって人間が理解しやすいように Web ページとして表現されます。
しかし、このやりとりされるデータに問題があると、Web ブラウザーで正しく Web ページとして動作しなかったり、場合によっては Web サーバー上のプログラムにもエラーを引き起こします。
そういった問題を解決する際、実際にネットワークを流れる データを調べるために使用されるのがネットワークキャプチャツールで、なかでも Fidder は Web に特化したネットワークキャプチャツールです。
Fiddler のアプリケーションの形態は「プロキシ型」と呼ばれるもので、ネットワークと HTTP クライアントの間を流れる HTTP パケットをキャプチャしてデータの監視や書き換え、ルーティングなどを行うことができます。
例えば、Web ブラウザが Web サーバーに投げるリクエストや、それに対する Web サーバーからのレスポンスを Fiddler を使用して取得し、その内容を調べたり、場合によっては、改ざんしたりしてテストやデバッグを行います。
Fiddler は、Netmon や Wireshark と異なり HTTP、HTTPS 以外のプロトコルはキャプチャできませんが、そのぶん HTTP に特化したさまざまな分析機能を備えており、JSON や XML といったテキストベースのデータ構造から、画像や音楽と動画といったバイナリのデータまで、Fiddler 上で再現して直接確認することができます。
さらにそれらの機能以外でも、さまざまなプラグインが用意されおり、それらを使用して機能の拡張を行うことができます。
また、Fiddler は .NET Framework を使用して作成されているため、ユーザーが自ら .NET Framework を使用してプラグインを作製したり、Fiddler のコンポーネントを利用してアプリケーションを作製することができます。
コンポーネントを使用してアプリケーションも作成できるということでライセンスが気になるところなのですが、EURA (使用許諾) は Fiddler をインストールする際に表示されるダイアログボックスで確認することができます。
EURA についてはいろいろ書かれていますが、基本的には違法ななことにさえ使用しなければ自由に使用して問題ないとのことです。
Fiddler の入手
Fiddler は http://fiddler2.com/ で公開されており、このサイトでは Fiddler 本体のほか、アドオンやチュートリアルも公開されています。
Web の検索エンジンで "Fiddler ダウンロード" をキーワードに検索すると、さまざまなダウンロードサイトがヒットしますが、インストールの際に余計なアプリケーションなどをインストールされる場合があるので、正規のページからダウンロードしたものを使用することをお薦めします。
fiddler2.com のトップページの [Get Fiddler. It’s FREE] をクリックするとダウンロードページに進むことができます。
なお現在、パッケージは Release バージョンの .NET2 と Beta バージョンの .NET2 と .NET4 版が用意されています。
Windows 8 には .NET Framework の 2.0 は既定でインストールされていないので、 Windows 8 で Release バージョンを使用する際は .NET Framework 2.0 ラップした .NET Framework 3.5 をインストールしておく必要があります。
インストールにはインストーラーを使用しますが XCOPY でのインストールも可能です。
起動のたびに新しいバージョンを確認し、使用するかどうかのダイアログボックスを表示しますが、レジストリを編集することによってユーザーの勝手なアップデートを防ぐことができます。
基本的な使い方
Fiddler のアプリケーションとしての UI 構成は一般的な Windows アプリケーションと大きく変わるところはありませんが、特徴的なのは Web セッションリストとタブ付きビュー、QuickExec でしょう。
前述した特徴的な各部分について紹介しておきましょう。
Web セッションリスト
Web クライアントとネットワークのやり取りがグリッドビューにリスト化されます。
リストされたアイテム上で右クリックすると、セッションに対するさまざまな操作がコンテキストメニューから選択することができます。
(セッションを右クリックした際に表示されるコンテキストメニュー)
タブ付きビュー
タブごとにさまざまな方法で Web セッションリストで選択された、セッション内の情報を見る機能が提供されています。これら各タブについては後述します。
QuickExec
Web セッションリストの下の表示される黒いテキストボックスが QuickExec です。
QuickExec ではさまざまなコマンドを実行することができます。
たとえば、「?blog」 と入力し、[Enter] キーを押下すれば、ホスト名や URL に 「blog」 という文字を含むセッションがハイライトされます。
これらのコマンドの一覧は「実践 Fiddler」 の P.28 に掲載されていますので、ぜひご覧ください。
以降は操作方法についてです。
キャプチャの開始と停止
Fiddler は起動された直後からネットワークのキャプチャを開始します。
キャプチャの開始/停止を切り替えるには、以下の方法があります。
- メインメニューの [ファイル] – [Capture Traffic] を選択
- キーボードの [F12] キーを押下
- ステータスバーの左下をクリック
また、キャプチャの対象も切り替えることができます。
プロセスごとのキャプチャ (Any Process ツールボタンの使用)
Fiddler は、キャプチャの取得を特定のプロセスのみに限定することができます。
指定方法はいくつかあるのですが、ここではウィンドウによる指定を紹介します。
Fiddler ツールバーにある [Any Process] ボタンを目的のアプリケーションのウィンドウにドラッグすることにより、そのアプリケーションプロセスの通信だけをキャプチャします。
これはアプリケーション単一ということではなく、Internet Explorer 10 のように、タブごとにプロセスをもっている場合は、タブごとにキャプチャを行うことができます。
ウィンドウによるキャプチャの指定が行われると、以下のように [Any Process] ボタンの上にプロセス名とプロセス ID が表示されます。
再度 [Any Process] ボタンをクリックすると、すべてのプロセスのネットワークトラフィックをキャプチャします。
Windows 8 アプリのトラフィックのキャプチャ
Fiddler は、既定の設定では Windows ストア アプリの通信をキャプチャすることはできませんが、ツールバー上の [Win8 Config] ボタンをクリックすることによりキャプチャが可能になります。なお、この機能は Fiddler 4 Beta では、アドオンの追加を必要とせず実行できますが、Fiddler2 では、Configure Fiddler for Windows 8 Metro-style applications アドオンをインストールしておく必要があります。
[Win8 Config] ボタンをクリックすると、Windows ストア アプリの一覧が表示されるので、キャプチャの対象となるアプリのチェックボックスにチェックをつけ [Save Change] ボタンをクリックします。
注意 : Fiddler を既定の設定のままキャプチャ状態のまま起動しておくと、Windows ストア アプリの通信に異常が出る (通信できない) 場合があるので、注意が必要です。
逆プロキシ機能を使用したサーバーサイドでのキャプチャ
Fiddler では、逆プロキシ機能を使用して、サーバー側で Web クライアントとのやりとりをキャプチャすることも可能です。
この機能は、ネットワークキャプチャツールを実行できない、携帯電話や iPad のようなタブレットデバイスとの通信を分析するのに有効です。
具体的に設定は「実践 Fiddler」 の P.86 から詳しく出ていますので、こちらをぜひご覧ください。
次回は Web のセッションを分析するための タブ付きビューの各タブについて紹介します。