Nika Qantaria Ответов: 1

Используйте разные IP-адреса в управлении браузером C#


Я пытаюсь разработать приложение, в котором пользователь может загрузить список прокси-серверов, а программное обеспечение должно перейти на страницу с разными IP-адресами. Для этого я использую некоторые настройки реестра. Но проблема в том, что когда я пытаюсь изменить IP-адрес, он остается прежним, в разделе "Свойства обозревателя" IP-адрес изменился, но на веб-странице, на которую я перехожу, по-прежнему отображается IP-адрес, с которым я перешел в первый раз. Есть какие-нибудь решения по этому поводу? или, может быть, у вас есть лучшее решение этой ситуации. Пожалуйста, предложите что-нибудь. Несколько минут назад я попробовал "httprequest", но это было невыносимо бесполезно. Или, может быть, я сделал "httprequest" в плохом смысле. Есть предложения?

Что я уже пробовал:

private void BrowseProxy_Click(object sender, EventArgs e)  
     {
        openFileDialog1.ShowDialog();

        ProxySrcTBX.Text = openFileDialog1.FileName;

        using (StreamReader r = new StreamReader(ProxySrcTBX.Text))
        {
            string line;
            while ((line = r.ReadLine()) != null)
            {
                ProxyCount++;
            }
            r.Close();
        }

        try { Proxy = File.ReadAllLines(ProxySrcTBX.Text); }
        catch (Exception Exception) { MessageBox.Show(Exception.ToString()); }
    }

   private void SetProxy(string Proxy)
    {
        string key = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings";

        RegistryKey RegKey = Registry.CurrentUser.OpenSubKey(key, true);
        RegKey.SetValue("ProxyServer", Proxy);
        RegKey.SetValue("ProxyEnable", 1);
        RegKey.Close();

    }

  private void button6_Click(object sender, EventArgs e)
    {
        webBrowser1.ScriptErrorsSuppressed = true;
        SetProxy(Proxy[ProxyIndex]);
        label2.Text = Proxy[ProxyIndex];
        currentUri = new Uri("https://myip.ru");
        NavigateTo(currentUri);
    }
    public void NavigateTo(Uri url)
    {
        url = currentUri;
        webBrowser1.Navigate(url);
    }

   private void Dispose_Click(object sender, EventArgs e)
    {
        SetProxy("");
        string key = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings";
        RegistryKey RegKey = Registry.CurrentUser.OpenSubKey(key, true);
        RegKey.SetValue("ProxyEnable", 0);
        RegKey.Close();
        ProxyIndex++;
    }

1 Ответов

Рейтинг:
9

Jochen Arndt

Для такого поведения могут быть две причины.

Во-первых, страница не запрашивается снова, а получается из кэша. Этого можно избежать, только очистив кэш (см. Как очистить кэш, когда ваше приложение размещает элемент управления WebBrowser в Visual C# .NET[^]).

Вторая причина может заключаться в том, что элемент управления WebBrowser не знает, что реестр был изменен. Я не знаю решения для этого, кроме как перезапустить его (то есть завершить работу вашего приложения и запустить его снова). Однако это может помочь избавиться от элемента управления браузером и воссоздать его заново.

Обратите внимание, что настройки интернета также можно установить с помощью кода, а не изменять реестр напрямую. См., например Путешествие В Код: C# WebBrowser Control Proxy Authentication[^].


Nika Qantaria

Спасибо!