2

アプリから Web ページを起動したときに Fiddler が取得するのと同じ種類の結果を取得しようとしています。以下は、私が使用しているコードと得られた結果です。例としてのみ google.com を使用しました。

必要な結果を得るには、コードで何を変更する必要がありますか、またはまったく異なるアプローチが必要ですか?

ご協力いただきありがとうございます。

私のコード:

 // create the HttpWebRequest object
        HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create("http://www.google.com");

        // get the response object which has the header info, using the GetResponse method
        var objResults = objRequest.GetResponse(); 

        // get the header count
        int intCount = objResults.Headers.Count;

        // loop through the results object
        for (int i = 0; i < intCount; i++)
        {
            string strKey = objResults.Headers.GetKey(i);
            string strValue = objResults.Headers.Get(i);


            lblResults.Text += strKey + "<br />" + strValue + "</br /><br />";
        }

私の結果:

キャッシュ コントロール プライベート、最大年齢 = 0

コンテンツ タイプ テキスト/html; charset=ISO-8859-1

日付 2012 年 6 月 5 日(火)17:40:38 GMT

期限切れ -1

Set-Cookie PREF=ID=526197b0260fd361:FF=0:TM=1338918038:LM=1338918038:S=gefqgwkuzuPJlO3G; 有効期限 = 2014 年 6 月 5 日木曜日 17:40:38 GMT; パス=/; domain=.google.com,NID=60=CJbpzMe6uTKf58ty7rysqUFTW6GnsQHZ-Uat_cFf1AuayffFtJoFQSIwT5oSQKqQp5PSIYoYtBf_8oSGh_Xsk1YtE7Z834Qwn0A4Sw3ruVCA9v3f_UDYH4b4fAloFJbW; expires=2012 年 12 月 5 日水曜日 17:40:38 GMT; パス=/; ドメイン=.google.com; HttpOnly

P3P CP="これは P3P ポリシーではありません! 詳しくはhttp://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657をご覧ください。"

サーバー gw

X-XSS-保護 1; モード=ブロック

X-Frame-Options SAMEORIGIN

Transfer-Encoding チャンク

========================= フィドラーの結果:

結果プロトコル ホスト URL 本文キャッシング コンテンツ タイプ プロセス コメント カスタム

1 304 HTTP www.rolandgarros.com /images/misc/weather/P8.gif 0 max-age=700 有効期限: 2012 年 6 月 5 日 (火) 17:53:40 GMT image/gif firefox:5456
2 200 HTTP www.google. com / 23,697 プライベート、最大年齢 = 0 有効期限: -1 テキスト/html。charset=UTF-8 chrome:2324
3 304 HTTP www.rolandgarros.com /images/misc/weather/P9.gif 0 max-age=700 有効期限: 2012 年 6 月 5 日 (火) 17:53:57 GMT image/gif firefox: 5456
4 200 translate.googleapis.com への HTTP トンネル:443 0 chrome:2324
5 200 HTTP www.google.com

4

2 に答える 2

3

違いは、Fiddler が 1 つの HTTP 要求だけでなく、実際にはセッション全体を記録していることです。

ユーザーが Google.com をロードすると、応答は通常、画像、スクリプト ファイル、CSS ファイルなどを含む HTML ドキュメントになります。ブラウザは、これらのリソースごとに新しい HTTP リクエストを開始します。Fiddler を実行すると、これらの HTTP 要求をそれぞれ追跡し、結果コードとセッションに関するその他の情報を吐き出します。

上記の C# コードでは、1 つの HTTP 要求のみを開始しているため、1 つの結果に関する情報しか得られません。

おそらく、ブラウザ プラグインを作成した方がよいでしょう。そうしないと、HTML 応答を解析し、そのドキュメントから他のリソースも読み込む必要があります。

C# コードでこれを行う必要がある場合は、 HTML Agility Packを使用してドキュメントを解析し、HTML 内の他のリソースを探してブラウザーをシミュレートすることができます。Awesomiumなどの組み込みブラウザーもあり、役立つ場合があります。

于 2012-06-05T18:21:34.970 に答える
0

Fiddler が表示しているのと同じ情報を求めているわけではありません。Fiddler は、HTTP ステータス コード、ホストと URI、および (この例では表示されます) コンテンツの長さ、コンテンツ タイプ、およびキャッシュ ステータスを表示します。

これらの多くでは、応答ヘッダーを確認する必要があります。

于 2012-06-05T18:38:49.933 に答える