2013-12-26 2 views
1

Как установить прокси-сервер по умолчанию для Internet Explorer в C# .net?
Default Proxy IE

Я хочу сделать браузер, способный искать действительный прокси-сервер в TXT-файле и использовать его.
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; 
    } 

ответ

0

Как сказано в 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. конфигурации»:

<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/

Если проблема о настройке прокси-сервера для всех браузеров (например: УСПЕШНОЕ интернет-прокси), вы должны использовать PInvoke и изменить параметры реестра: см ответ здесь How to change Global Windows Proxy using C# .NET with `Immediate Effect`

+0

Есть ли способ, чтобы установить его программно? Установка его вручную перед выполнением программы займет слишком много времени. – user3130362

+0

Вам нужно часто менять параметры прокси (например, использовать прокси-сервер на сайте клиента, а не дома)? Для такого случая я предпочитаю устанавливать прокси-сервер в своих настройках Интернета (не изменяя конфигурационный файл VS) с помощью программного обеспечения типа «IEProxy», которое позволяет вам быстро переключаться с прокси. Он должен использовать те же строки кода моего второго решения, что и я. Установка прокси внутри файла конфигурации не должна выполняться при каждом запуске, если ваше местоположение всегда одно и то же, это один снимок –

+0

Можете ли вы снова отправить свой последний комментарий ? У меня есть начало в моем почтовом ящике, но не вижу его на этой странице. Вы его удалили? –

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