hace un par de días me dispuse a crear una aplicación que permitiera navegar al usuario mediante un control WebBrowser de una manera anónima.
Me quedé de piedra al ver que la Clase WebBrowser no disponía de un objeto Proxy, por lo tanto me informé y utilicé una combinación de la clase Httpwebrequest y WebBrowser, me explico: La página Web era cargada mediante Httpwebrequest.create() y luego cargaba un Proxy cualquiera de la red, una vez cargada la URL le pasaba el Stream a la clase WebBrowser y el control mostraba la página como si estuviera navegando con un Proxy.
El problema es que al navegar con el control WebBrowser intenté pasar a la clase HttpWebRequest la URL por la cual estaba navegando actualmente dicho control. Lo que hice fue volver a pasarle el stream al WebBrowser de la clase httpwebrequest.... No podía navegar a través del control WeBbrowser...
Lo solucioné echando virutas con un code que encontré en una red, es una llamada a la API wininet.dll y ahora el proxy funciona correctamente con el WebBrowser, pude eliminar la clase HttWebRequest y todo.
Bueno, no sé para que os pongo toda esta introducción, si a algun user de este foro quiere hace algun navegador Anónimo que por favor lea la intro.
Si me podeis explicar este code os estaría muy agradecido ya que entiendo muy poco de éste:
Código:
#Region "Using Proxy"
<Runtime.InteropServices.DllImport("wininet.dll", SetLastError:=True)> _
Private Shared Function InternetSetOption(ByVal hInternet As IntPtr, ByVal dwOption As Integer, ByVal lpBuffer As IntPtr, ByVal lpdwBufferLength As Integer) As Boolean
End Function
Public Structure Struct_INTERNET_PROXY_INFO
Public dwAccessType As Integer
Public proxy As IntPtr
Public proxyBypass As IntPtr
End Structure
Private Sub UseProxy(ByVal strProxy As String)
Const INTERNET_OPTION_PROXY As Integer = 38
Const INTERNET_OPEN_TYPE_PROXY As Integer = 3
Dim struct_IPI As Struct_INTERNET_PROXY_INFO
struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_PROXY
struct_IPI.proxy = Marshal.StringToHGlobalAnsi(strProxy)
struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local")
Dim intptrStruct As IntPtr = Marshal.AllocCoTaskMem(Marshal.SizeOf(struct_IPI))
Marshal.StructureToPtr(struct_IPI, intptrStruct, True)
Dim iReturn As Boolean = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, System.Runtime.InteropServices.Marshal.SizeOf(struct_IPI))
End Sub
#End Region
Muchas gracias por vuestra ayuda,
Un saludo.