Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0546: HTTP Anfragen über Proxy ausführen

 von 

Beschreibung 

Dieser Tipp bietet die Möglichkeit, HTTP-Anfragen mit dem Winsock-Control über einen Proxy auszuführen

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [3,63 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------- Anfang Projektdatei Winsock ueber Proxy.vbp  -------
' Die Komponente ' (MSWINSCK.OCX)' wird benötigt.

'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Textfeld "Text3"
' Steuerelement: Textfeld "Text2"
' Steuerelement: Schaltfläche "Command1"
' Steuerelement: Textfeld "Text1"
' Steuerelement: Windows Socket "Winsock1"
' Steuerelement: Textfeld "Text4"
' Steuerelement: Beschriftungsfeld "Label3"
' Steuerelement: Beschriftungsfeld "Label2"
' Steuerelement: Beschriftungsfeld "Label1"

Option Explicit

Private Sub Command1_Click()
    Dim test As Variant
    Dim slash As Variant
    Dim host As String

    Text4.Text = ""
    'prüfen http:// vorhanden ist, wenn nicht ergänzen
    If Left(Text1.Text, 7) <> "http://" Then Text1.Text = "http://" & Text1.Text
    
    'slash anhängen, falls hinter der adresse noch keiner steht
    test = Split(Text1.Text, "/")
    If UBound(test) < 3 Then Text1.Text = Text1.Text & "/"
    
    slash = Split(Text1.Text, "/")
    'den Hostnamen und die subdomain herrausfinden
    host = slash(2)
    
    Winsock1.Close                                          'Man kann ja nie wissen...
    Winsock1.RemotePort = Text3.Text                        'Proxy Port
    Winsock1.RemoteHost = Text2.Text                        'Proxy Adresse
    Winsock1.Connect
    Do While Winsock1.State = 6: DoEvents: Loop
    If Winsock1.State <> 7 Then Exit Sub
    
    'Unseren request senden
    Winsock1.SendData "GET " & Text1.Text & " HTTP/1.0" & vbCrLf
    'Alle mime-Typen akzeptieren
    Winsock1.SendData "Accept: */*" & vbCrLf
    'Allen Proxys mitteilen, das sie die verbindung aufrecht erhalten sollen
    Winsock1.SendData "Proxy-Connection: Keep-Alive" & vbCrLf
    'Mitteilen, das wir den IE6 nutzen
    Winsock1.SendData "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)" & vbCrLf
    'Jetzt muß der Proxy noch wissen wohin er die anfrage weiterleiten soll.
    'Würden wir eine direkte verbindung zum host aufbauen, müßten könnten wir das weglassen.
    Winsock1.SendData "Host: " & host & vbCrLf
    'Dieser zeilenumbruch signalisiert dem server, das wir fertig sind.
    Winsock1.SendData vbCrLf
    
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim data As String
    Winsock1.GetData data
    Text4.Text = Text4.Text & data
End Sub

Private Sub Winsock1_Error( _
            ByVal Number As Integer, _
            Description As String, _
            ByVal Scode As Long, _
            ByVal Source As String, _
            ByVal HelpFile As String, _
            ByVal HelpContext As Long, _
            CancelDisplay As Boolean)
    MsgBox "Der Winsock hat den Fehler """ & Number & """ gemeldet:" _
            & vbCrLf & vbCrLf & Description, vbCritical
End Sub

'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------- Ende Projektdatei Winsock ueber Proxy.vbp  --------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 6 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Interrogans am 07.06.2007 um 13:35

Ich habe Privoxy und würde gerne über
localhost und Port 8118 eine Verbindung aufbauen.

Dabei funktioniert dieser Tip aber bei mir nicht.

Bitte um Abhilfe!

Kommentar von Lars Schöning am 25.10.2004 um 12:11

Winsock1.SendData "Host: " & host & vbCrLf _
'Jetzt muß der Proxy noch wissen wohin er die anfrage
' weiterleiten soll. Würden wir eine direkte verbindung zum host
' aufbauen, müßten könnten wir das weglassen

Könnte man eigendlich nicht - laut W3C ist ein HTTP/1.1 Server dazu verpflichtet requests ohne Host adresse zu ignorieren.

Kommentar von Snake am 09.09.2004 um 11:48

'Jetzt muß der Proxy noch wissen wohin er die anfrage
' weiterleiten soll. Würden wir eine direkte verbindung zum host
' aufbauen, müßten könnten wir das weglassen.

das stimt nicht!
der host MUSS im header stehen. anders wäre es nicht möglich, mehrere und/oder subdomains auf einem server zu verwalten. an dem host, welcher gesendet werden MUSS wird von seiten des servers erkannt, auf welche website du willst...
kann man also nciht weglassen

Kommentar von Thomas Loch am 02.08.2004 um 14:56

Hi!
Geht damit auch .htacces-Login? Wenn ja, wie?

thanx
Thomas

Kommentar von Niko am 05.12.2002 um 10:14

und wie kann man den hier dem proxy die
login - daten übergeben ?
danke

Kommentar von H. Jordt am 29.11.2002 um 11:32

Moin,

ist es hiermit auch möglich durch einen Proxy direkt zu einem anderen User zu verbinden?