Sky.NET (25.01.2015)
Thema: TCP HTTP 1.1 Problem
-
02.01.2015, 04:06 #1
TCP HTTP 1.1 Problem
Hi,
vielleicht kannst du mir nochmal helfen
ich hab mir jetzt folgende funktion mehr oder weniger C&P't:
Code:server = "fb-genius.com" Dim ascii As Encoding = Encoding.ASCII Dim request As String = _ "GET /ScriptsAndTricks.aspx HTTP/1.1" & ControlChars.Cr + ControlChars.Lf & _ "Host: " & server & ControlChars.Cr + ControlChars.Lf & _ "User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0" & ControlChars.Cr + ControlChars.Lf & _ "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & ControlChars.Cr + ControlChars.Lf & _ "Accept-Language: de,en-US;q=0.7,en;q=0.3" & ControlChars.Cr + ControlChars.Lf & _ "Connection: Close" & ControlChars.Cr + ControlChars.Lf + ControlChars.Cr + ControlChars.Lf MsgBox(request) Dim bytesSent As [Byte]() = ascii.GetBytes(request) Dim bytesReceived(255) As [Byte] Dim s As Socket = ConnectSocket(server, port) If s Is Nothing Then Return "Connection failed" End If s.Send(bytesSent, bytesSent.Length, 0) Dim bytes As Int32 Dim page As [String] = "Default HTML page on " + server + ":" + ControlChars.Cr + ControlChars.Lf Do bytes = s.Receive(bytesReceived, bytesReceived.Length, 0) page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes) Loop While bytes > 0 MsgBox(page)
das funktioniert auch alles so weit,
aber wenn ich den server auf www.facebook.com wechseln will und beispielsweise die GET funktion zu
"GET /r.php HTTP/1.1" änder, dann krig ich immer die Antwort:
HTTP/1.1 302 Found
Location: https://www.facebook.com/r.php
X-Content-Type-Options: nosniff
P3P: CP="Facebook does not have a P3P policy. Learn why here: http://fb.me/p3p"
Set-Cookie: datr=jfqlVKfAmvuCcFRMSnaXO85m; expires=Sun, 01-Jan-2017 01:55:25 GMT; Max-Age=63072000; path=/; domain=.facebook.com; httponly
Content-Type: text/html; charset=utf-8
X-FB-Debug: 12/75a5W5PY4f+55von/OEcq29dH3XrJAnG/9sXQJ4/gnRxsZMzuaLOLEusFYKBdkPlAedZDA+EndPFp+j1CyQ==
Date: Fri, 02 Jan 2015 01:55:25 GMT
Connection: close
Content-Length: 0
Ich möchte das ganze gerne auf TCP basis machen, damit ich socksproxys benutzen kann...
was ist mein Fehler?
warum bekomme ich immer ne Content-Length von 0?
Liebe Grüße
BaumstumpfGeändert von Baumstumpf (02.01.2015 um 04:08 Uhr)
-
02.01.2015, 12:29 #2
- Registriert seit
- 19.11.2011
- Beiträge
- 2.128
Thanked 1.937 Times in 1.180 PostsAW: TCP HTTP 1.1 Problem
Content-Length musst Du selbst bei POSTS angeben.
Socks erstellen mit: AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp
Danach:
Zunächst schreibst Du ja für die Handhake:
5
1
0
Danach empfängst Du in ein Array und prüfst, ob
ArrayFeld(0) = 5 und ebenfalls ArrayFeld(1) = 0
Wenn die Bedingung erfüllt ist, sendest Du Folgendes:
Code:binaryWriter.Write(5) binaryWriter.Write(1) binaryWriter.Write(0) binaryWriter.Write(3) Dim bytes As Byte() = Encoding.ASCII.GetBytes(target) ' Deine TargetUrl binaryWriter.Write(CByte(bytes.Length)) binaryWriter.Write(bytes, 0, bytes.Length) binaryWriter.Write(0) binaryWriter.Write(80)
Code:DeineVerbindung.Read(array, 0, 2) result = CInt(array(1)) Return result
Dann hast Du eine Methode, die eben die Response liest:
Code:Public Function GetResponse(encoding As Encoding) As String Dim text As String = New StreamReader(DeineVerbindung, encoding).ReadToEnd() Return text.Substring(8) End Function
Code:Public Sub SendByteArray(data As Byte()) DeineVerbindung.Write(data, 0, data.Length) End Sub Public Sub SendString(str As String) Dim bytes As Byte() = Encoding.UTF8.GetBytes(str) SendByteArray(bytes) End Sub
Hab dein Problem noch nicht ganz verstanden, denn wie gesagt, die Content-Length
ist = die Länge deines POST Strings. Bei GET gibst Du die gar nicht erst an.Geändert von !lkay (02.01.2015 um 12:31 Uhr)
-
02.01.2015, 13:16 #3
- Registriert seit
- 15.11.2011
- Beiträge
- 8.137
- Blog Entries
- 5
Thanked 9.417 Times in 3.253 PostsAW: TCP HTTP 1.1 Problem
Den Content-Length Header bekommt man auch in jedem Antwort-Header vom Server damit der Client weiß wie viele Daten er im Body empfangen muss, und darum geht es ihm. Er sendet schließlich keine HTTP-POST Anfrage. Einen Socks5-Proxy nutzt er ebenfalls nicht wie man in seinem Code sieht, hat mit seinem momentanen Problem also nichts zutun.
Der Threadersteller baut offensichtlich eine HTTP-Verbindung auf Port 80 auf. Facebook leitet ihn auf HTTPS weiter, weil die wie Google auch bereits seit längerem auf SSL only umgestellt haben. Da es sich lediglich um eine Weiterleitung handelt existiert kein HTTP-Body, somit Content-Length = 0. Um HTTPS mit Sockets nutzen zu können, wirst du um SSL-Streams anscheinend nicht herumkommen. Musst du dich einlesen, habe ich selbst noch nicht benutzt.
-
The Following User Says Thank You to DMW007 For This Useful Post:
-
02.01.2015, 16:05 #4
AW: TCP HTTP 1.1 Problem
Ich danke euch beiden, DMW hat mein Problem richtig erkannt...
Also nach dem HTTP Protokoll hab ich es jetzt auch hinbekommen via TOR anfragen zu machen,
jetzt muss ich mal schaun, ob ich das mit dem SSL-Scheiß auch noch hinbekomme
Ähnliche Themen
-
[Java] HTTP Connection Problem (403, adfly)
Von DANP im Forum JavaAntworten: 4Letzter Beitrag: 08.08.2012, 20:03 -
[Vorstellung] http://Localhost/
Von Localhost im Forum UserankündigungenAntworten: 8Letzter Beitrag: 11.04.2012, 03:06 -
HTTP Proxy Grabber
Von The Don of NYC im Forum ShowroomAntworten: 2Letzter Beitrag: 03.02.2012, 18:31 -
http://www.libertyreserve.com/
Von Scanner im Forum Internet und TechnikAntworten: 2Letzter Beitrag: 06.12.2011, 19:33
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.