使用DefaultWebProxy获取ie的默认代理

本文关键字:默认 代理 ie DefaultWebProxy 获取 使用 | 更新日期: 2023-09-27 18:18:03

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

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

HttpWebRequest webRequest = 
    (HttpWebRequest)HttpWebRequest.Create("http://www.google.com");
if (WebRequest.DefaultWebProxy != null)
{
    webRequest.Proxy = WebRequest.DefaultWebProxy;
}
编辑:

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

使用DefaultWebProxy获取ie的默认代理

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

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

对评论的回应:

你需要将uri传递给GetProxy,因为这就是微软实现它的方式…

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