将C#WebClient与代理一起使用 – 没有请求代理服务器?

我们有一个后台操作(Window服务),我们想通过代理服务器使用它.

基本上,我们这样做:

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的代理时,我有什么遗漏的东西吗?

编辑:更多细节.如果我们在服务器上禁用代理服务,那么我们会得到一个我们无法连接的异常.因此,似乎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&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...