前回は,米Microsoftが無料で一般公開しているインターネット・トラフィック監視ツール「Fiddler」の「なりすまし」機能を紹介しました。今回は,Fiddlerの機能拡張について解説します。

コードを追加して機能拡張

 Fiddlerの機能を拡張するには,ツールバー上の「Rules/Customize Rules」オプションを選択します。前回書き換えたJScript.NETのソースコードが表示されますので,希望するコードを追加していきます。プログラミング経験のない人は、コードをコピーするだけでよいでしょう。拡張コードは,ソースコード内の次の3カ所に追加します。

  • OnBeforeRequestメソッド内
  • OnBeforeResponseメソッド内
  • グローバル領域内

 ここでは,OnBeforeRequestとOnBeforeResponseというメソッドの名称に注目してください。これら2つのメソッドの名称は,Fiddlerの位置付けと機能を端的に示しています。OnBeforeRequestメソッドは,インターネット側(Webサーバー)に要求を送信する直前に呼び出されるメソッドです。一方、OnBeforeResponseメソッドは,インターネット側からの応答が到着した時点で呼び出されるメソッドです。

 これらのメソッドを呼び出すのは、Microsoft Windows Internet Services(WinInet)というWindowsシステム・サービス機能です。つまりFiddlerは,WinInetと呼ばれるWindowsシステム機能の拡張プログラムなのです。Fiddlerの開発者であるLawrence氏は,「Fiddlerは,WinInetに自分自身をシステム・プロキシとして登録するプログラムである」と表現しています。分かりにくい表現ですが,私たちが開発した拡張機能をシステムに追加登録するというこの手法は,実はWindowsの一般的な拡張手法です。Fiddlerの開発技術そのものに興味のある方は,Lawrence氏のこちらの論文をご覧ください。

ファイル未検出時に音を鳴らす

 あるWebサーバーへアクセスし,公開されているファイルを開こうとすると,何らかの都合で開けないことがあります。そのような場合,つまり,Webサーバーが要求されたファイルを見つけられない場合,404コードを返すのが普通です。ここでは404コードが返されたときに,音を鳴らす機能を追加してみます。

static function OnBeforeRequest(oSession:Fiddler.Session)
{
// By Toyota
oSession.oRequest["HisNameIs"] = "Takashi Toyota";
FiddlerObject.StatusText = "Strange Request Header Sent by Toyota!";
// By Toyota
}

 「// By Toyota」で囲まれているコードをコピーし,貼り付けてみてください。貼り付けるソースコード内の箇所は,Webサーバーからの応答が到着したときに呼び出されるOnBeforeResponseメソッド内部です。このコードを追加した後,例えば「toyotaisbeautiful.htm」などのありそうもないファイルをWebサーバーに要求してみてください。通知音が鳴り,要求したファイルは「HTTP Sessions」画面内では赤色で表示され、打ち消されているはずです。追加コード内のコード番号404を302に変更すれば,ページがリダイレクトされると音が鳴るはずです。200コードに変更すると,現在の閲覧ページを別のページに切り替えるたびに音が鳴ります。コードをいろいろと変更して,試してみてください。音を鳴らして楽しんでいるうちに,インターネットに関する知識が自然に増えていくでしょう。

標準外のヘッダー情報を送る

 すでに紹介したUser-Agentなどは,W3Cで定義された標準ヘッダーと呼ばれています。Fiddlerの拡張機能を使用すると,標準ヘッダー以外の情報を送ることもできます。例えば,次のようなコードを追加します。

static function OnBeforeRequest(oSession:Fiddler.Session)
{
// By Toyota
oSession.oRequest["HisNameIs"] = "Takashi Toyota";
FiddlerObject.StatusText = "Strange Request Header Sent by Toyota!";
// By Toyota
}

 先ほどのように,「// By Toyota」で囲まれている2行のコードをOnBeforeRequestメソッドの先頭に追加します。追加した後,任意のWebサーバーへアクセスすると,「Takashi Toyota」という値を持つ「HisNameIs」というヘッダー情報が送信されます。同時に,Fiddlerのステータス欄に「Strange Request Header Sent by Toyota!」という文字列が表示されます。

 グローバル領域を使ったFiddler拡張については,こちらの情報をご覧ください。サンプル・コードが多数紹介されています。これまでの説明を参考にすれば,簡単に拡張コードを追加できるはずです。

Fiddler拡張機能使用上の注意点と参考情報

 今回紹介した拡張コードは,Webサーバーに不要な情報を送りますから,Webサーバーの運営者への迷惑も考慮し,実験環境などで試すとよいでしょう。FiddlerのWebサイトには、さまざまな有益な情報が公開されていますから,さらに学習したい方は参考にするとよいでしょう。

 Fiddlerを活用すると,Webサイトのフォーマンスの改善方法などを見つけることもできます。興味のある方は,Lawrence氏のこちらの論文を参考にしてください。

まとめ

  • Fiddlerにはさまざま機能を追加できる
  • 標準外のヘッダー情報を送ると、Webサーバーの運営者の迷惑になる可能性がある