默认代理IE

时间:2013-12-26 09:46:35

标签: c# .net

如何在C#.net中设置Internet Explorer的默认代理?

我想创建一个能够在.txt文件中搜索有效代理并使用它的浏览器 与set default proxy命令一起使用的IP和端口是有效的,但命令本身绝对没有任何作用。

我发现在VS2013 .net浏览器中使用代理的唯一方法是手动将其添加到IE中,这是非常无用的。

class Proxy
{
    List<string> Proxy_IP;
    List<int> Proxy_Port;

    public Proxy()
    {
        Proxy_IP = new List<string>();
        Proxy_Port = new List<int>();
        populateProxyList();
    }

    public void findProxy()
    {
        for (sbyte i = 0; i < Proxy_IP.Count; i++)
        {
            string IP = Proxy_IP[i];
            int Port = Proxy_Port[i];

            if (isValid(IP, Port))
            {
                setDefaultProxy(IP, Port);
                break;
            }
        }
    }

    private void populateProxyList()
    {
        string[] lines = System.IO.File.ReadAllLines(@"C:\Users\Public\Proxies.txt");
        foreach (string line in lines)
        {
            int endIP = line.IndexOf('#');
            int startPort = endIP + 1;
            int portLength = line.Length - (endIP + 2);

            string IP = line.Remove(endIP);
            int Port = Convert.ToInt32(line.Substring(startPort, portLength));

            Proxy_IP.Add(IP);
            Proxy_Port.Add(Port);
        }
    }

    private void setDefaultProxy(string ip, int port)
    {
        System.Windows.Forms.MessageBox.Show(ip + ":" + port.ToString()); // Proxy is valid
        System.Net.WebRequest.DefaultWebProxy = new WebProxy(ip, port); // Doesn't do shit
    }

    private bool isValid(string IP, int Port)
    {
        bool pingable = false;
        Ping pinger = new Ping();

        try
        {
            PingReply reply = pinger.Send(IP);
            pingable = reply.Status == IPStatus.Success;
        }
        catch (PingException)
        {

        }
        return pingable;
    }

2 个答案:

答案 0 :(得分:1)

如MSDN DefaultWebProxy页面http://msdn.microsoft.com/en-us/library/system.net.webrequest.defaultwebproxy%28v=vs.110%29.aspx中所述,

  

DefaultWebProxy属性从app.config中读取代理设置   文件。如果没有配置文件,则为当前用户的Internet Explorer   (IE)使用代理设置。

因此,如果您的问题是关于仅设置代理以便在Visual Studio中浏览(2013为您),则应在Visual Studio的配置文件中添加代理信息 ,命名为“devenv.exe.config”:

<system.net>
    <defaultProxy useDefaultCredentials=“true“ enabled=“true“>
        <proxy bypassonlocal=”true” proxyaddress=”http://yourproxyaddress.net:proxyPort” />
    </defaultProxy>
</system.net>

有关详细信息,请参阅此文章:http://en.code-bude.net/2013/07/15/how-to-setup-a-proxy-server-in-visual-studio-2012/

如果您的问题是关于为所有浏览器设置代理(即:defaut internet proxy),您应该使用PInvoke并更改注册表设置:请参阅此处的响应How to change Global Windows Proxy using C# .NET with `Immediate Effect`

答案 1 :(得分:1)

   WebProxy webProxy = (WebProxy) WebRequest.DefaultWebProxy;
   if (webProxy.Address.AbsoluteUri != string.Empty)
   {
       Console.WriteLine("Proxy URL: " + webProxy.Address.AbsoluteUri);
   }