VB 5/6-Tipp 0546: HTTP Anfragen über Proxy ausführen
von Jörg Vehlow
Beschreibung
Dieser Tipp bietet die Möglichkeit, HTTP-Anfragen mit dem Winsock-Control über einen Proxy auszuführen
Schwierigkeitsgrad: | Verwendete API-Aufrufe: keine | Download: |
'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-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
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?