2013-02-26 2 views
2

Я хотел знать, можно ли установить прокси для каждого другого веб-браузера в приложении (тот же процесс).Webbrowser Каждый элемент управления различного прокси

Я искал много, чтобы найти коды для изменения прокси-системы в целом путем изменения реестра и другого прокси-сервера определенного процесса. Но я хочу, чтобы каждый веб-браузер в этом процессе имеют различные прокси

Например: WebBrowser1 Proxy -> 95.188.106.78:3128

WebBrowser 2 Proxy -> 89.218.160.162:9090

WebBrowser 3 Proxy -> 78.39.68.145:3128 и т. Д.

Или, если это невозможно с помощью WebBrowser напрямую, тогда кто-нибудь может предложить, что я могу использовать для достижения этого (а не веб-запросы, я хочу только браузер, через который я могу загружать все данные, и пользователь может взаимодействовать с ним, но с разными прокси-серверами), например, с помощью geckofx или webkit? Но я бы, если его можно в них или нет, не знаю

ответ

1

Взгляните на this - жаль его VB.NET

Его в основном говорят, что вы можете настроить его с помощью редактирования одного из IE DLL путем изменения InernetSetOption , Надеюсь это поможет.

Here еще одна ссылка, которая может помочь

+0

Привет, Спасибо за эти ссылки. Однако в первой ссылке указывается прокси-сервер веб-браузера в одном процессе. Это означает, что WebBrowser1, WebBrowser2 будут иметь одинаковые прокси. Тем не менее, я хочу, чтобы у каждого из них был другой прокси. Вторая ссылка может работать, но есть одна серьезная проблема. После того, как документ будет загружен в браузер, он будет использовать прокси-сервер по умолчанию для загрузки изображений, файлов javascript и т. Д., Которые я не хочу. –

0

К сожалению, вы cannnot установить прокси на insnance. Даже в случае применения - это глобально. Если вы его используете для приложения .net, это также повлияет на IE.

Полный код для изменения прокси.

Создайте «Form1» с кнопками «B_Get» «B_Set» и «B_Disable», а затем вставьте этот код.

Он должен работать на вас. Я использовал это приложение как доказательство концепции для автоматического прокси-цикла, который я построил.

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

Чтобы проверить, работает ли это, установите флажок Internet explorer. Вероятно, вам придется открыть/закрыть диалоговое окно параметров для IE, но вам не нужно перезапускать браузер.

Это также повлияет на приложения .NET на лету - если вы запустите мою программу во время работы, вы сможете изменить прокси-сервер, который использует ваша программа.

Imports Microsoft.Win32 
Imports System.Runtime.InteropServices 



Public Class Form1 

    <DllImport("wininet.dll")> 
    Public Shared Function InternetSetOption(hInternet As IntPtr, dwOption As Integer, lpBuffer As IntPtr, dwBufferLength As Integer) As Boolean 
    End Function 

    Public Const INTERNET_OPTION_SETTINGS_CHANGED As Integer = 39 
    Public Const INTERNET_OPTION_REFRESH As Integer = 37 


    'This function is what is called after editing the registry - this causes internet explorer to update its proxy even if it is already open. 
    'It also effects the web browser control in any VB.net application that is running. 
    Public Sub globalProxy_apply() 
     Dim settingsReturn As Boolean = False 
     Dim refreshReturn As Boolean = False 
     settingsReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED, IntPtr.Zero, 0) 
     If Not settingsReturn Then 
      MessageBox.Show("Error 001: Line ""InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED, IntPtr.Zero, 0)"" failed.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) 
     End If 
     refreshReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, IntPtr.Zero, 0) 
     If Not refreshReturn Then 
      MessageBox.Show("Error 002: Line ""InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, IntPtr.Zero, 0)"" failed.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) 
     End If 
    End Sub 

    Public Function globalProxy_IsProxyEnabled() As Boolean 
     Try 
      Dim Regs As RegistryKey = Registry.CurrentUser.CreateSubKey("Software\Microsoft\Windows\CurrentVersion\Internet Settings", RegistryKeyPermissionCheck.ReadWriteSubTree) 
      If Regs.GetValue("ProxyEnable") <> Nothing Then 
       If Regs.GetValue("ProxyEnable").ToString() = "0" Then 
        Return False 
       Else 
        Return True 
       End If 
      Else 
       Return False 
      End If 
     Catch ex As Exception 
      MessageBox.Show("Error 01X: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) 
      Return False 
     End Try 
    End Function 

    Public Function globalProxy_GetProxyServer() As String 
     Try 
      Dim Regs As RegistryKey = Registry.CurrentUser.CreateSubKey("Software\Microsoft\Windows\CurrentVersion\Internet Settings", RegistryKeyPermissionCheck.ReadWriteSubTree) 
      If Regs.GetValue("ProxyServer") <> Nothing Then 
       Return Regs.GetValue("ProxyServer").ToString() 
      Else 
       Return "" 
      End If 
     Catch ex As Exception 
      MessageBox.Show("Error 02X: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) 
      Return "" 
     End Try 
    End Function 

    Public Sub globalProxy_DisableProxy() 
     Dim regkey As RegistryKey 
     Try 
      regkey = Registry.CurrentUser.CreateSubKey("Software\Microsoft\Windows\CurrentVersion\Internet Settings") 
      regkey.SetValue("ProxyEnable", False, RegistryValueKind.DWord) 
      regkey.Close() 
     Catch ex As Exception 
      MessageBox.Show("Error 03X: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) 
     End Try 

     globalProxy_apply() 
    End Sub 

    Public Sub globalProxy_SetProxy(ByVal ServerName As String) 
     Dim regkey As RegistryKey 
     Try 
      regkey = Registry.CurrentUser.CreateSubKey("Software\Microsoft\Windows\CurrentVersion\Internet Settings") 
      regkey.SetValue("ProxyServer", ServerName, RegistryValueKind.Unknown) 
      regkey.SetValue("ProxyEnable", True, RegistryValueKind.DWord) 
      regkey.Close() 
     Catch ex As Exception 
      MessageBox.Show("Error 04X: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) 
     End Try 

     globalProxy_apply() 
    End Sub 

    Private Sub B_Set_Click(sender As System.Object, e As System.EventArgs) Handles B_Set.Click 
     If TextBox1.Text = "" Then 
      globalProxy_DisableProxy() 
     Else 
      globalProxy_SetProxy(TextBox1.Text) 
     End If 

    End Sub 

    Private Sub B_Disable_Click(sender As System.Object, e As System.EventArgs) Handles B_Disable.Click 
     globalProxy_DisableProxy() 
    End Sub 

    Private Sub B_Get_Click(sender As System.Object, e As System.EventArgs) Handles B_Get.Click 
     If globalProxy_IsProxyEnabled() Then 
      TextBox1.Text = globalProxy_GetProxyServer() 
     Else 
      TextBox1.Text = "" 
     End If 
    End Sub 

End Class 
+0

вы также можете программно открыть интернет-настройки для окон ... это была единственная функция, которую я пропустил в приведенном выше коде, потому что он не был напрямую связан с вопросом ... его 1 лайнер: Call Shell («RunDLL32. exe Shell32.dll Control_RunDLL InetCpl.cpl ", vbNormalFocus) – Allen

Смежные вопросы