c# - 将 C# WebClient 与代理一起使用 - 没有向代理服务器发出请求?

标签 c# windows-services webclient proxies

我们有一个想通过代理服务器使用的后台操作(窗口服务)。

基本上,我们这样做:

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 的证据,我认为这不是问题所在)。

但是,在我们的后台进程中,当我使用 webclient 时,我似乎没有使用代理:

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

我没有收到来自代理的错误,但似乎我们只是在没有它的情况下继续前进,即使代理已明确设置。

信息似乎返回正常,只是不是通过我们的代理。

WebClient 中使用代理时,我是否遗漏了什么?

编辑:更多细节。如果我们在服务器上禁用代理服务,那么我们会得到一个无法连接的异常。因此,网络客户端似乎正在尝试联系代理,但该流量实际上并未流经代理。

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

最佳答案

原来 FreeProxy 不接受 HTTPS 流量。

我猜代理必须返回它可以路由的流量类型,如果不能,webclient 什么都不做。

切换到使用 Burp 套件作为我们的代理,因为它可以接受 HTTPS。

http://portswigger.net/burp/

关于c# - 将 C# WebClient 与代理一起使用 - 没有向代理服务器发出请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7830939/

相关文章:

c# - 将动态匿名对象添加到 linq groupBy 表达式中

c# - 访问 Windows 窗体控件时,BackgroundWorker 线程失败

c# - 直接检查是否有任何服务已停止的任何替代方法?

c# - DebugDiag 消息线程似乎没有等待远程服务器响应

c# - WebClient 上传文件不起作用

java - Web 客户端的 ObjectMapper

c# - 无法从网页下载源

时间:: runtime code profiling - any existing libraries?

delphi - 在服务应用程序中使用数据模块

c# - 在值类型上定义的扩展方法不能用于创建委托(delegate)——为什么不呢?