4

プロキシサーバーを介して使用するバックグラウンド操作(ウィンドウサービス)があります。

基本的に、私たちはこれを行っています:

public WebClient GetWebClient(){
   var webClient = new WebClient();
   webClient.proxy = new WebProxy(Configuration.ProxyHost, Configuration.ProxyPort);

   // add a bunch of headers to the WebClient (sessionids, etc.)

   return webClient;
}

プロキシは、FreeProxyを使用して自分で構成したプロキシです。

ロギングを有効にし、テストしているマシンで、Firefoxで使用するときにプロキシに対して要求が行われていることを確認できます。

IPがオフィス内にある必要があることを除いて、プロキシサーバーに認証は必要ありません(Firefoxの証拠から、問題ではないと思います)。

ただし、バックグラウンドプロセス内では、Webクライアントを使用するときにプロキシを使用していないようです。

using(var wc = GetWebClient())
using(var s = wc.OpenRead("someurl"))
using(var sr = new StreamReader(s)){
    return sr.ReadToEnd();
}

プロキシからエラーは発生しませんが、プロキシが明示的に設定されていても、エラーなしで進んでいるようです。

情報は、プロキシ経由ではなく、正常に返されるようです。

プロキシを使用するときに欠けているものはありWebClientますか?

編集:詳細。サーバーでプロキシサービスを無効にすると、接続できないという例外が発生します。したがって、Webクライアントがプロキシに到達しようとしているように見えますが、そのトラフィックは実際にはプロキシを通過していません。

Inner Exception: SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
4

3 に答える 3

1

FreeProxyがHTTPSトラフィックを受け入れていなかったことが判明しました。

プロキシはルーティングできるトラフィックの種類を返す必要があると思いますが、返されない場合、Webクライアントは何もしません。

HTTPSを受け入れることができるため、プロキシとしてBurpSuiteを使用するように切り替えました。

http://portswigger.net/burp/

于 2011-10-27T17:42:43.623 に答える
0

デフォルトでプロキシを使用するようにウィンドウを構成するか、コードでプロキシを手動で設定する必要があります。http://msdn.microsoft.com/en-us/library/system.net.webclient.proxy (v = VS.100).aspx

于 2011-10-20T03:56:11.810 に答える
0

私の知る限り、WebClientクラスを正しく使用しています。次のリクエストを見ることができます...

using(var client = new WebClient())
{
    client.Proxy = new WebProxy("localhost", 8888);
    Console.WriteLine(client.DownloadString("http://www.google.com"));
}

私のローカルボックスで実行されているFiddlerで。Fiddlerをシャットダウンすると、WebExceptionが発生します。

Unable to connect to the remote server

内部SocketExceptionは次のとおりです。

No connection could be made because the target machine actively refused it 127.0.0.1:8888

つまり、プロキシは意図したとおりに機能していると思いますが、発信HTTPリクエストをログに記録していないだけです。

于 2011-10-21T00:46:12.767 に答える