VB Cambiare proxy webbrowser

Stato
Discussione chiusa ad ulteriori risposte.

Mjchele

Utente Electrum
24 Settembre 2015
299
20
50
141
Ultima modifica:
Ciao utenti Forgy,
qualcuno sa come cambiare proxy nel webbrowser?
Sto cercando di fare un programma in cui viene importata una lista proxy, visita un link, cambia proxy e ricomincia..
Sapete aiutarmi? :3

@BetaRunner aiuto pls :c
 
Il controllo WebBrowser altro non è che Internet Explorer. Quindi, devi cambiare le impostazioni globali di IE:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa385114.aspx

Il consiglio è quello di usare la classe `HttpWebRequest` invece del controllo WebBrowser: https://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx
Questa classe eredita dall'astratta `WebRequest` che implementa la proprieta `Proxy`.
Non capisco come funziona :/
 
Ultima modifica da un moderatore:
Prima ho provato questo codice
Codice:
Public Class Form1
    Dim cnt As Integer = 0
    Dim proxylist As New List(Of String)

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Timer1.Stop() 'just in case the timer is running
        proxylist.Clear() 'Clear the list if you are going to open a different file

        Dim ofd As New OpenFileDialog
        ofd.Title = "Open File"
        ofd.Multiselect = False
        ofd.Filter = "Text File|*.txt|All Files|*.*"
        If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then
            'This reads each line of the text file into one element of the list
            proxylist.AddRange(System.IO.File.ReadAllLines(ofd.FileName))
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        'Start the timer to loop threw each element of List one at a time every 5 minutes
        Timer1.Interval = 100
        Timer1.Start()
        WebBrowser1.Navigate(TextBox1.Text)
      End Sub

    Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
        Timer1.Stop()
        Timer2.Interval = 20000 ' set timer to 20 seconds now that the first has been set
        Timer2.Start()
        WebBrowser1.Refresh()
    End Sub
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Timer2.Stop()
        Timer2.Interval = 6000 ' set timer to 1 minute now that the first has been set
        If cnt = proxylist.Count Then cnt = 0 'Restart at 0 if the last item in list was used
        MessageBox.Show(proxylist(cnt))
        cnt += 1
        Timer1.Start()
    End Sub

End Class
però non mi carica il proxy.. il sito lo visita ma con il mio ip. :c
 
Ma hai idea di cosa fai e dei codici che scrivi o stai copiando codici dal web?

I timer sono del tutto inutili in quel contesto: ci sono gli eventi per sapere quando il WebBrowser ha caricato la pagina.
Quel codice carica una lista di proxy da un file di testo all'interno di una lista in memoria, ma non carica mai i proxy sulle impostazioni di Internet Explorer.
Per impostare il proxy su Internet Explorer devi invocare l'API di Windows `InternetSetOption()` con i parametri adeguati dalla lib wininet. MSDN spiega quella funzione e PInvoke.net può aiutarti a invocarla dal .NET.
Il fatto però è che resta comunque stupido utilizzare il controllo WebBrowser nel tuo caso quando ti basta usare `HttpWebRequest`.

La classe HttpWebRequest funziona come qualsiasi altra classe .NET ovviamente. La istanzi, setti la proprietà `Proxy` e qualsiasi altra proprietà ti serve, e poi chiami le funzioni che ti servono.
Qui: https://msdn.microsoft.com/en-us/library/czdt10d3.aspx in fondo alla pagina trovi anche un esempio che mostra come creare una HttpWebRequest e impostarne il proxy.

Se non sai usare le classi e gli oggetti e non hai idea di cosa sia la programmazione orientata agli oggetti è un altro problema: non dovresti nemmeno programmare in .NET senza conoscere la programmazione object-oriented - in tal caso, dovresti invece prendere un manuale .NET e studiarlo.
 
Ma hai idea di cosa fai e dei codici che scrivi o stai copiando codici dal web?

I timer sono del tutto inutili in quel contesto: ci sono gli eventi per sapere quando il WebBrowser ha caricato la pagina.
Quel codice carica una lista di proxy da un file di testo all'interno di una lista in memoria, ma non carica mai i proxy sulle impostazioni di Internet Explorer.
Per impostare il proxy su Internet Explorer devi invocare l'API di Windows `InternetSetOption()` con i parametri adeguati dalla lib wininet. MSDN spiega quella funzione e PInvoke.net può aiutarti a invocarla dal .NET.
Il fatto però è che resta comunque stupido utilizzare il controllo WebBrowser nel tuo caso quando ti basta usare `HttpWebRequest`.

La classe HttpWebRequest funziona come qualsiasi altra classe .NET ovviamente. La istanzi, setti la proprietà `Proxy` e qualsiasi altra proprietà ti serve, e poi chiami le funzioni che ti servono.
Qui: https://msdn.microsoft.com/en-us/library/czdt10d3.aspx in fondo alla pagina trovi anche un esempio che mostra come creare una HttpWebRequest e impostarne il proxy.

Se non sai usare le classi e gli oggetti e non hai idea di cosa sia la programmazione orientata agli oggetti è un altro problema: non dovresti nemmeno programmare in .NET senza conoscere la programmazione object-oriented - in tal caso, dovresti invece prendere un manuale .NET e studiarlo.

Troppo complicato, mi sa che per ora lascio stare e imparo bene il .net :/


Inviato dal mio iPhone utilizzando Tapatalk
 
Stato
Discussione chiusa ad ulteriori risposte.