図1●IT Proのトップページにアクセスした際のFiddlerの画面
図2●「Spoof Netscape 3.0」項目を選択後,IT Proサイトに接続した画面
図3●「Spoof IE 6.0」項目を選択後,IT Proサイトに接続した画面
図4●「Customize Rules」メニューを選択した画面
図5●ソースコードを書き換えた後、任意のWebサイトにアクセスする
 前回は,米Microsoftが無料で一般公開しているインターネット・トラフィック監視ツール「Fiddler」の機能概要を紹介しました。今回は,Fiddlerの「なりすまし」機能を使ってみましょう。なお,Fiddlerの入手方法については,前回の記事を参照してください。

Fiddlerの「なりすまし」機能

 Windows XP SP2環境でInternet Explorer(IE)6.0とFiddlerを起動し,IT Proのトップページにアクセスすると,図1[拡大表示]のような初期画面が表示されます。この画面は,右上画面で「Session Inspector/Headers」を選択し,次に,右下画面で「Headers」を選択した直後に取得しています。「HTTP Sessions」という名称を持つ左画面を見ると,IT Proサーバーは多数の情報を返してくることが分かります。右上画面の「User-Agent」欄を見ると,筆者はIE 6.0を起動してIT Proのコンテンツを閲覧していることが分かります。

 左画面の個々の情報のプロパティを調べてみると分かりますが,GIFやJPEGなどのイメージ・ファイルがかなり返されています。Fiddlerをはじめとする多くの監視ツールに当てはまることですが,各種のツールを使用するときには,監視対象となる情報を絞りきることが大切です。そこで,ツールバー上の「Rules/Ignore Images」オプションを選択し,イメージ・ファイルを監視対象から外すことにします。すると,以降の画面にはイメージ・ファイルは表示されていません。

 先ほど説明したように,筆者は現在,Windows XP SP2とIE 6.0という組み合わせでインターネットに接続しています。それではここで,Fiddlerの「なりすまし」機能を使用してみましょう。「なりすまし」機能を使うと,例えば,実際はIE 6.0を使用しているのに,サーバーからはあたかも「Netscape 3.0」でコンテンツを閲覧しているように見えます。

 Fiddlerの「なりすまし」機能は,ツールバーの左から3番目にある「Rules」ボタンを使用します。「Rules」ボタンをクリックし,「Spoof Netscape 3.0」というメニューを選択します。これらの選択作業が完了すると,IE 6.0ではなく,Netscape 3.0で閲覧しているように見せかけることができます。「Spoof Netscape 3.0」項目を選択後,IT Proサイトに接続すると,筆者の環境では図2[拡大表示]のような画面が表示されます。

 この右上画面の「User-Agent」欄を見ると分かるように,筆者はWindows XP SP2とIE 6.0という組み合わせではなく,Windows 95とNetscape 3.0という組み合わせ環境からIT Proサイトにアクセスしているようにように「なりすまし」ています。なお,「User-Agent」欄のUser-Agentについては後ほど詳しく説明します。

 では,ツールバーから「Rules」「Spoof IE 6.0」と選択し,IE 6.0ユーザーに戻ってみましょう。筆者の環境では,図3[拡大表示]のような画面が返されました。ご覧のように,筆者はWindows NT 5.1(Windows XP)とMSIE 6.0という文字列をIT Proサーバーへ送信しています。この「User-Agent」欄からは,.NET環境を支えるCLR(Common Language Runtime)のバージョンなどは除外されています。なぜCLR情報などをサーバーへ送信していないかといえば,Fiddlerの「なりすまし」機能は,Windows内部に関与するのではなく,サーバーへ送信する情報のみを変更しているからなのです。CLR情報などのWindows内部情報を収集しているのは,WindowsアプリケーションであるIEなのです。Fiddler,IE,及び,Webサーバーの関係については次回説明します。

 今度は,「Windows VistaとIE 7.0βという環境からインターネットに接続しているように見せかけてみましょう。「Rules」ボタンをクリックしても,それらしきボタンはありません。このような場合には,Fiddlerの「なりすまし」機能を拡張する必要があります。

「なりすまし」機能の拡張

 Fiddlerの「なりすまし」機能を拡張する場合には,「Rules」ボタンをクリックし,「Customize Rules」という名前のメニューを選択します。このメニューを筆者の環境で選択すると,図4[拡大表示]のような画面が表示されます。

 皆さんの環境では,図4の画面は表示されないと思います。実は,筆者は,こちらからFiddler専用の拡張エディタを入手し,インストールしているのです。専用拡張エディタをインストールしていない環境では,Windows付属の「スクリプト・エディタ」が起動されるはずです。いずれかのエディタが起動されたら,ソースコードの一部を次のように書き換えます。

static function OnBeforeRequest(oSession:Fiddler.Session)
  {
    oSession.oRequest["User-Agent"] = "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)"; // By Toyota

  if (m_NoAD &&
   (oSession.host.indexOf("ad.")>-1 ||
   oSession.host.indexOf("ad2")>-1 ||
   oSession.url.indexOf("/ad")>-1)){
   oSession.oRequest.FailSession(403,"Advertisement","This looks like an ad"

 画面をスクロール・ダウンし,OnBeforeRequestという名前の関数を見つけてください。関数が見つかったら,「// By Toyota」という文字列を含んでいる一行を追加し,ソースコードを上書き保存します。上書き保存後,Fiddlerを終了することなく,任意のWebサイトにアクセスしてください。すると,図5[拡大表示]のような情報が右上画面に表示されるはずです。

 ご覧のように,実際の筆者の環境はWindows XP SP2とIE 6.0ですが,Windows NT 6.0(Vista)とIE7.0ユーザーのようになりすますことができます。ここで一部の方は,先ほど追加した一行に含まれている,「Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)」という文字列が気になっていると思います。この情報は,一般にUser-Agent情報と呼ばれています。基本的には,インターネット上の資源を利用する際に使用するブラウザ情報といってよいと思います。

 Microsoft社のIEチームが公開するブログ情報は,User-Agent情報として「Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)」という文字列を返すようにした経緯が詳しく説明されています。このブログ記事を起草しているのは,Fiddlerを開発したEric Lawrence氏です。同氏のブログ記事には多くの人がコメントしています。コメントの中には,「IEはMozillaじゃないのだからこのような文字列を返すのはどうか」などといった批判めいたものもあります。Lawrence氏は,「互換性問題がなければ, IE/7.0 (NT 6.0; ...) としてもかまわない」と発言しています。

 最近のWebサイト・デザイナの多くは,User-Agent情報をはじめとするヘッダー情報をそれほど使用しないといわれています。Microsoft社のIEチームの一員であり,Fiddlerの開発者でもあるLawrence氏も別のブログの中で,「クライアントから送信されてくるヘッダー情報を絶対に信頼しないこと!」と述べています。

 それではなぜ,IE/7.0 (NT 6.0; ...)ではなく,Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)という文字列をUser-Agent情報として定義したのでしょう。それは,すでに触れたように,現実問題として,多数のWebサイトがMozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)という文字列を条件判定に使用しているからなのです。Lawrence氏は,IE/7.0 (NT 6.0; ...)という文字列をUser-Agent情報としてしてしまうと,それらのWebサイトでは問題が発生してしまうと強調しています。User-Agent情報の取り扱いに興味のある方は,こちらの論文を参考にするとよいでしょう。

 筆者は,Fiddlerの「なりすまし」機能を使用してWebサーフィンを楽しむことがありますが,User-Agent情報を切り替えた途端,反応が極端に遅くなるサイトがあります。

まとめ

  • Fiddlerには「なりすまし」機能が付いている
  • User-Agentなどのヘッダー情報は自由に設定できる