Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: kub0x en 25 Noviembre 2011, 13:43 pm



Título: [VB .NET] Navegación vía Proxy en WebBrowser.
Publicado por: kub0x en 25 Noviembre 2011, 13:43 pm
Buenas tardes a todos los usuarios de .NET,

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.


Título: Re: [VB .NET] Navegación vía Proxy en WebBrowser.
Publicado por: Elemental Code en 26 Noviembre 2011, 19:50 pm
eso no cambia el proxy de la pc, osea en toooodos los navegadores?  :huh:


Título: Re: [VB .NET] Navegación vía Proxy en WebBrowser.
Publicado por: kub0x en 27 Noviembre 2011, 14:18 pm
Creo que cambia el Proxy de IE Explorer, no se muy bien lo que hace.