1. #1
    Avatar von Baumstumpf
    Registriert seit
    04.12.2011
    Beiträge
    139
    Thanked 110 Times in 32 Posts

    Standard 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
    Baumstumpf
    Geändert von Baumstumpf (02.01.2015 um 04:08 Uhr)

  2. #2

    Registriert seit
    19.11.2011
    Beiträge
    2.128
    Thanked 1.937 Times in 1.180 Posts

    Standard AW: 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)
    Anschließend:
    Code:
     DeineVerbindung.Read(array, 0, 2)
    			result = CInt(array(1))
    			Return result
    das ist zunächst deine Verbindungsmethode. Da erhälst Du ein Integer für den Verbindungsstatus.


    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
    Und die Methoden zum Senden:

    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
    Steht die Verbindung bei dir denn?

    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)

  3. #3
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    8.137
    Thanked 9.417 Times in 3.253 Posts
    Blog Entries
    5

    Standard AW: 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.


  4. The Following User Says Thank You to DMW007 For This Useful Post:

    Sky.NET (25.01.2015)

  5. #4
    Avatar von Baumstumpf
    Registriert seit
    04.12.2011
    Beiträge
    139
    Thanked 110 Times in 32 Posts

    Standard 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

  1. Antworten: 4
    Letzter Beitrag: 08.08.2012, 20:03
  2. [Vorstellung] http://Localhost/
    Von Localhost im Forum Userankündigungen
    Antworten: 8
    Letzter Beitrag: 11.04.2012, 03:06
  3. HTTP Proxy Grabber
    Von The Don of NYC im Forum Showroom
    Antworten: 2
    Letzter Beitrag: 03.02.2012, 18:31
  4. http://www.libertyreserve.com/
    Von Scanner im Forum Internet und Technik
    Antworten: 2
    Letzter Beitrag: 06.12.2011, 19:33
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.