如何获得代理

时间:2011-12-15 15:49:04

标签: c# proxy internet-options

我尝试获取Web请求的代理(HttpWebRequest或webclient) 在控制面板中 - >互联网选项 - >连接 - >局域网设置 你会看到3个选项:

  1. 自动检测设置
  2. 使用自动配置脚本
  3. 为LAN使用代理服务器
  4. 我想确保无论采用哪种设置,我的网络请求都会选择与浏览器相同的代理。

    我正在使用下面的代码来实现这一目标;但是,当检查1.,我在浏览器和我的代码中尝试相同的URL,它看起来我的代码要慢得多。我猜我在代码中获取代理的方式可能效率不高或不合适。

    我的代码中有什么可以更改以反映浏览器的速度吗?

        var client = (HttpWebRequest)WebRequest.Create(uriStr);
        client.Headers["something"] = something;
        client.Timeout = ConnectionTimeOut; //1 min 
    
        var proxyURI = WebRequest.GetSystemWebProxy().GetProxy(uri);
        var proxy = new WebProxy(proxyURI, true)
        {
            Credentials = CredentialCache.DefaultNetworkCredentials
        };
        //if there is no proxy, proxy will return the same uri
        //do we need check if client.Proxy is null or not,
        if (proxyURI != null && !string.IsNullOrEmpty(proxyURI.AbsoluteUri) && !proxy.Address.Equals(uri))
        {
            client.Proxy = proxy;
        }
    

1 个答案:

答案 0 :(得分:2)

你的方法很好。

可能导致速度差异的原因是浏览器可能缓存了您请求的页面或缓存了代理/代理凭据,并且不需要在代码中执行任何新的网络新提取。

您是否在获取代理/凭证后尝试了应用程序中的后续请求?