Fiddler を接続して、.NET HttpWebRequest と HttpWebResponse を使用して行われた要求と応答をキャプチャする方法はありますか?
3 に答える
Fiddler FAQ は、これに対する答えを提供します。
基本的に、HTTP トラフィックを Fiddler 経由でルーティングします (つまり、Fiddler をプロキシとして使用します)。
ここに役立つリンクがいくつかあります:
Fiddler Web デバッグ - クライアントの構成
順番にここにリンクします:
Take the Burden Off Users with Automatic Configuration in .NET
次のように、web.config ファイル (ASP.NET アプリケーション用) のいくつかの構成設定を介してこれを実現できます。
<system.net>
<defaultProxy>
<proxy
proxyaddress="http://[your proxy address and port number]"
bypassonlocal="false"
/>
</defaultProxy>
</system.net>
設定の詳細については、こちらを参照してください<defaultProxy>
。
または、次のようなものを使用して、コードで WebProxy オブジェクトを使用できます。
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("[ultimate destination of your request]");
WebProxy myproxy = new WebProxy("[your proxy address]", false);
request.Proxy = myproxy;
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
WebProxy クラスの詳細については、こちらを参照してください。
Fiddler FAQ に記載されている重要な「警告」にも注意してください。
http://localhostまたはhttp://127.0.0.1に送信されたトラフィックが表示されないのはなぜですか?
IE7 と .NET Framework は、プロキシ経由で Localhost の要求を送信しないようにハードコードされており、プロキシとして、Fiddler はそのようなトラフィックを受信しません。回避策は、Localhost または 127.0.0.1 の代わりに、マシン名をホスト名として使用することです。たとえば、 http://localhost:8081/mytestpage.aspxにアクセスするのではなく、 http://machinename:8081/mytestpage.aspxにアクセスします。
...または、Fiddler v2.1.8 以降を使用している場合は、http://ipv4.fiddler を使用して IPv4 アダプターで localhost をヒットするか、http://ipv6.fiddlerを使用して IPv6 アダプターで localhost をヒットします。 . これは、テスト サーバーが IPv4 ループバック アダプターのみをリッスンするため、Visual Studio テスト Web サーバー (コードネーム: Cassini) で特にうまく機能します。
最後に、Rules ファイルを次のようにカスタマイズできます。
static function OnBeforeRequest(oSession:Fiddler.Session) { if (oSession.HostnameIs("MYAPP")) { oSession.host = "127.0.0.1:8081"; } }
...そして、127.0.0.1:8081 のエイリアスとして機能するhttp://myappをヒットします。
できない場合、Wiresharkはネットワークハードウェアレベルで機能する同様のツールであるため、任意のアプリケーションからのネットワークトラフィックをキャプチャできます。
WiresharkはFiddlerよりも少し複雑で、より一般的ですが、ツールボックスに含めるのに最適なツールであり、少し時間をかけて調査する価値があります。