使用DefaultWebProxy获取IE的默认代理

Pau*_*ews 4 c# proxy system.net system.net.httpwebrequest

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

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

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

if (WebRequest.DefaultWebProxy != null)
{
    webRequest.Proxy = WebRequest.DefaultWebProxy;
}
Run Code Online (Sandbox Code Playgroud)

编辑:

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

zmb*_*mbq 5

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

var uri = WebRequest.DefaultWebProxy.GetProxy(new Uri("http://www.google.com"));
Run Code Online (Sandbox Code Playgroud)

回复评论:

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

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