WebSurfer's Home

トップ > Blog 1   |   ログイン
APMLフィルター

Fiddler のお勧め

by WebSurfer 2011年5月25日 00:05

今さらながらですが、HTTP トラフィックのパケットをキャプチャするなら Fiddler がお勧めという話です。

Fiddler のロゴ

Fiddler は、IE のような WinINET ベースのアプリケーションと Internet の間のプロキシとして、HTTP トラフィックを自動的にキャプチャしてくれるそうです。

以前は Wireshark というフリーのツールを使っていました(今も時々使っていますが)。これはこれでトラブルシューティングに重宝していましたが、自分の知る限り、少なくともデフォルトの設定では localhost トラフィックをキャプチャすることができませんので、ローカルの IIS とローカルのブラウザを使って行う Web アプリ開発には使い難いという問題があります。

何か方法は無いか調べてみましたが、本家のサイト Loopback に、"... you definitely cannot do so on Solaris, HP-UX, or Windows." とか "You can't capture on the local loopback address 127.0.0.1!" などと書いてあったので諦めました。そこまではっきり言われて、それ以上調べる根性はないです。(笑)

その点、以前は Fiddler も問題ありでした。IE と .NET Framework(Fiddler は .NET ベースのアプリです)は localhost の要求をプロキシを通して送らないようにハードコードされているそうで、プロキシである Fiddler も特別な設定なしでは localhost トラフィックのキャプチャはできなかったそうです。

Fiddler を起動したところ

でも、IE9 がリリースされて事情が変わりました。IE9 と組み合わせると localhost でも特別な設定なしでキャプチャできるという話を聞いて(本家のページ Configuring clients 参照)、早速使ってみることにしました。

使ってみると、localhost トラフィックのキャプチャができるというのはやはり便利です。面倒な IE のオプションのプロキシ設定も、Fiddler を立ち上げると自動的にやってくれます。

その他、画像を見れば分かると思いますが(クリックすると拡大画像が表示されます)、Headers, TextView, ImageView, HexView などを選んで見ることができるのもいいです。

少なくとも Web アプリ開発時の HTTP トラフィックのキャプチャに限っては、もう Wireshark に戻る気はしませんといったところです。

なお、Firefox でも Fiddler を使用できます。Firefox は WinINET ベースのアプリケーションではないはずだけど・・・そもそも Fiddler はプロキシなんだから関係ないのか・・・など詳しいことは不明です。というか、調べる気がないです。(笑)

Firefox のオプション設定でプロキシの設定をすれば Fiddler で Firefox のトラフィックをキャプチャできるようになります。いちいち設定するのは面倒なので、自動的に設定してくれる FiddlerHook という Firefox のアドオンも用意されています。

自分が試した限りでは、Fiddler 本体をダウンロードしてインストールすれば、FiddlerHook アドオンも自動的にインストールされました。(自動的にインストールされても無効化されているかもしれません。詳しくは下の「2015/12/21 追記」を見て下さい)

(2016/8/24 追記:現時点でダウンロードできる Fiddler2 v2.6.2.3 および Fiddler4 v4.6.2.32002 には Fiddlerhook は含まれていません。新しいバージョンの Firefox(48.0.1 で確認)では Fiddlerhook を有効にできなくなったという理由かもしれません。Fiddlerhook なしで Firefox で Fiddler を使う方法はこの記事の下の方の「2016/8/24 追記」を見てください)

FiddlerHook を利用すると、localhost トラフィックをキャプチャできないという問題に悩む必要はなくなるように、自動的に設定してくれるそうです。

******** 2015/12/21 追記 ********

注意:
Firefox のどのバージョンからかは不明ですが、少なくとも 2016/8/24 時点での最新版 48.0.1 では、下に書いた方法では Fiddlerhook を有効にできなくなっています。代わりの対処方法はこの記事の下の方の「2016/8/24 追記」を見てください。

2015/12/21 時点の最新バージョン Firefox 43.0.1, Fiddler v4.6.1.5, FiddlerHook 2.6.0.4 では FiddlerHook がアドオンとして署名されてないとのことで無効化されています。(署名についての詳細は Firefox のアドオン署名を見てください)

無効化されたアドオン

将来署名されて使えるようになるのかもしれませんが、それまで待てない場合は上の記事の「アドオンの署名を上書きする (上級ユーザ向け)」に書いてあるように xpinstall.signatures.required 設定の値を false に変更することで書名のないアドオンを有効にすることができます。(セキュリティ上のリスクが伴いますので注意してください)

署名不要に設定

その後、Firefox を再起動すると書名のないアドオンも有効になり、タイトルバーのアイコンから Fiddler を起動して要求 / 応答をキャプチャできるようになります。

有効になった FiddlerHook

なお、Fiddler は Chrome でも使えます。Chrome の場合は、今のところ、IE と同様に何も設定しなくても Fiddler を起動しておけば要求 / 応答をキャプチャしてくれます。何故 Chrome は何も設定しなくても使えるのかは分かりません。(汗)

******** 2016/8/24 追記 ********

Firefox のどのバージョンからかは不明ですが、少なくとも 2016/8/24 時点での最新版 48.0.1 では上の「2015/12/21 追記」に書いた方法では Fiddlerhook を有効にできません。

Fiddlerhook を有効にできなくても、Firefox のプロキシの設定で Fiddler を使うことができるようになりますので、以下にその方法を書いておきます。

メニューバーの[ツール(T)]⇒[オプション(O)]でオプション画面を開き、その中の[詳細]タブをクリック、詳細画面の[ネットワーク]タブをクリック、[接続設定(E)...]ボタンをクリックすると以下のダイアログが出てきます。

Firefox のプロキシ設定

上の画像の赤枠で示したように[システムのプロキシ設定を利用する(U)]を選択すれば Fiddler を使えるようになります。

もし、上の「2015/12/21 追記」で書いたように xpinstall.signatures.required 設定の値を false に設定していたら、セキュリティ上のリスクががありますので、ture に戻しておくことをお勧めします。

******** 2021/6/20 追記 ********

HTTPS で通信を行う場合は上に書いたプロキシの設定だけではダメで、Fiddler からの証明書のエクスポートと、その証明書の Firefox へのインポートが必要になります。

詳しくは別の記事「Firefox で Fiddler を��う方法」に書きましたのでそちらを見てください。

Tags:

DevelopmentTools

IETester

by WebSurfer 2010年11月20日 16:36

IE5.5, IE6, IE7, IE8 での動作が検証できるという IETester というツールをインストールしてみました。

IETester

DEBUGBAR という会社(?)の IETester のページ からダウンロードできます。この記事を書いている時点での最新版は v0.4.6 です。上の画像のように、日本語にも対応しています。

ご存知のように、IE はアップグレードしてしまうと、その PC ではアップグレードしたバージョンしか使えません。IETester を使うと、同一 PC 上で IE5.5, IE6, IE7, IE8 での動作が検証できるのが便利です。

ただし、完全に下位バージョンの動作を再現できるというわけではなさそうです。例えば、自分のブログの SyntaxHighlighter の表示が、IE8 では正常に表示されるものの、IE6 では一部崩れるところがあるのですが、IETester では IE8 と同様に正常に表示されます。

でも、使えそうな感じです。

Tags:

DevelopmentTools

[デバッグの停止] で止まらない

by WebSurfer 2010年8月31日 16:28

Visual Studio でデバッグ

Visual Studio で ASP.NET の Web アプリケーションをデバッグしている時の話です。

表題に「止まらない」と書きましたが、正確には、デバッガは止まるものの、コードはデバッガのコントロールが外れて実行されていき、メモリが開放されて終了するまで走っていってしまうということです。

従って、DB の更新などのコードがある場合、その手前でブレークポイントを設けて実行を止め、[デバッグの停止(E)]をしても DB の更新が行われてしまいます。デバッガのバグとかではなくて、そういう仕様だそうです。

ウソだと思う人は(笑)、以下に検証するためのコードをアップしておきますので、適当なところにブレークポイントを設けて試してみてください。ブレークポイントで [デバッグの停止] をしても、その後のコードは実行され、ファイル(file1.txt ~ file3.txt)はすべて作成されるはずです。

なお、このサンプルを動作させるには、アプリケーションルート直下に Files という既存のフォルダがあり、IIS のワーカープロセスがそのフォルダに対して必要なアクセス権を持っている必要がありますので注意してください。

<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
  protected void Page_Load(object sender, EventArgs e)
  {
    string path = Server.MapPath("~/Files/file1.txt");
    using (StreamWriter writer = File.CreateText(path))
    {
      writer.WriteLine("Hello World!");
    }

    path = Server.MapPath("~/Files/file2.txt");
    using (StreamWriter writer = File.CreateText(path))
    {
      writer.WriteLine("Welcome!");
    }
  }

  protected void Page_Unload(object sender, EventArgs e)
  {
    string path = Server.MapPath("~/Files/file3.txt");
    using (StreamWriter writer = File.CreateText(path))
    {
      writer.WriteLine("Goodbye!");
    }
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
  <form id="form1" runat="server">
  <div>
    <h1>[デバッグの停止] で止まらない?</h1>
  </div>
  </form>
</body>
</html>

デバッグが止まっても実行が止まらないのは、Visual Studio のデフォルト設定(マネージド・コード用のデバッガを使用)における仕様だそうです。

設定によってデバッグの停止と共に実行を止めることは可能です。

Web サイトプロジェクトの場合、ソリューションエクスプローラのアプリケーションルートの右クリックで表示されるコンテキストメニューから[開始オプション(O)...]を開いて、[デバッガー]のオプションで[ネイティブコード(V)]にチェックを入れてみてください。

(注: Visual Studio Community 2015 の Web サイトプロジェクトの場合、[開始オプション(O)...]⇒[デバッガー]のオプションに[ネイティブコード(V)]がありません。別の設定方法があるかもしれませんが調べ切れてません)

Web アプリケーションプロジェクトの場合は、ソリューションエクスプローラの Properties を右クリックして開き[Web]タブを選択すると[デバッガー]の項目の中に[ネイティブ コード(C)]があります。

これにより、デバッガを起動するたびにネイティブコード用デバッガが読み込まれるそうです。結果、デバッグの停止と共に実行も止まります。

ただし、 [ネイティブコード(V)]にチェックを入れた設定でデバッグを停止すると強制的に Web サーバーを停止することになるそうです。それは好ましいことではないということで、デフォルトではデバッグを停止しても実行は止まらないようになっているようです。

なので、自分の場合、Web サーバーの強制停止による好ましからぬ副作用があるとイヤなので、そういうものだ(デバッグを停止しても実行は止まらない)と理解した上で、デフォルト設定のまま使っています。

Tags:

DevelopmentTools

About this blog

2010年5月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。

Calendar

<<  2024年4月  >>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

View posts in large calendar