使用DefaultWebProxy获取IE的默认代理

时间:2013-06-13 03:48:44

标签: c# proxy system.net system.net.httpwebrequest

我已经阅读了几乎所有可以找到的文档,但我还没有找到一个简单的工作示例,说明如何使用DefaultWebProxy()获取IE的默认代理设置。

这段代码似乎可以编译和工作,但我如何继续将代理URI作为字符串?

HttpWebRequest webRequest = 
    (HttpWebRequest)HttpWebRequest.Create("http://www.google.com");

if (WebRequest.DefaultWebProxy != null)
{
    webRequest.Proxy = WebRequest.DefaultWebProxy;
}

修改

自提交此问题以来,我发现可以为不同的目的地设置一个或多个代理,或者绕过(可能是本地Intranet目的地)。这就是您需要为GetProxy()指定URI的原因。它需要知道获取代理的目的地。如果在“Internet选项”中设置了“自动检测设置”,则浏览器将在本地域中查找PAC文件。 PAC文件包含一个Javascript函数,用于确定给定目标的代理地址。

1 个答案:

答案 0 :(得分:5)

WebRequest.DefaultWebProxy实现IWebProxy接口。您可以使用GetProxy方法获取代理的URI:

var uri = WebRequest.DefaultWebProxy.GetProxy(new Uri("http://www.google.com"));

对评论的回应:

您需要将uri传递给GetProxy,因为这就是Microsoft实现它的方式......

说真的,我相信这是因为您可以将浏览器配置为绕过某些地址的代理。如果您通过其中一个绕过的地址,您可能会得到不同的结果。