1

.NET 2.0のWebClientクラス を使用して、 SSLを介したHTTPPOSTを実行しています。

現在、次のようにuser-agentヘッダーを手動で設定しています。

wc = new WebClient();
wc.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");

これは、HTTPトンネリングを実行し、HTTP CONNECTコマンドで特定のユーザーエージェントヘッダーを期待するプロキシサーバーを介して要求を行う場合を除いて、正常に機能します。

プロキシがSSLのトンネルとして機能する場合、プロキシは最初にHTTP CONNECTを受信し、クライアントが接続しようとしている場所を通知します。

問題は、HttpWebRequest.UserAgentまたはWebClient.Headers.Addのいずれかを介して.NETでuser-agentヘッダーを設定した場合、それが最初のCONNECT要求に追加されないことです。それは後続のSSLトラフィックに追加されますが、それは必要なことではありません。

これがC++の場合、WinHttpOpen()を呼び出してセッションを作成し、pwszUserAgentパラメーターを設定してセッション全体のユーザーエージェントを設定します。残念ながら、.NETで同等のものを見つけることができません。

誰かが私を正しい方向に向けることができますか?.NETでクライアントアプリを構築する際に、他の誰かがこの問題に遭遇したに違いありません。

4

3 に答える 3

0

HttpWebRequestファミリーのクラスを使用してUser-Agentヘッダーを送信することはできません。RFCは、ヘッダーはオプションであると述べています(MUSTではなくSHOULD)

プロキシにルールを追加して、User-Agentヘッダーなしで、または特定のターゲットサーバーに対して接続を許可するか、最後に.NETソケットクラスを使用して独自のHTTPプロトコルをコーディングすることができます。

于 2010-03-08T22:20:15.470 に答える
0

HttpWebRequest(フレームワーク2.0)で試してください:

HttpWebRequest httpReq = HttpWebRequest.Create(new Uri("www.website.com"));
httpReq.Headers["user-agent"] = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"; 

Windows Phone 7 SDKで使用していますが、動作します。

詳細については、http: //msdn.microsoft.com/en-gb/library/system.net.httpwebrequest (v = vs.80).aspxをご覧ください。

于 2012-12-05T07:01:00.047 に答える
0

プロキシの設定で十分です

WebClient client = new WebClient();
client.Headers["User-Agent"] =
    "Mozilla/4.0 (Compatible; Windows NT 5.1; MSIE 6.0) " +
    "(compatible; MSIE 6.0; Windows NT 5.1; " +
    ".NET CLR 1.1.4322; .NET CLR 2.0.50727)";
client.Proxy = new WebProxy(your_proxy_url, true);

your_proxy_urlはhttp://proxy.company.com:8080/のようになります

于 2013-03-27T16:25:17.147 に答える