TCP Seite besuchen geht nicht

  • Hallo,
    ich möchte über TCP eine Seite besuchen, nur leider komme ich nichtmal soweit das ich was zurück bekommen.
    Was mache ich Falsch ?

    Spoiler anzeigen
    [autoit]

    TCPStartup()
    $iIP = TCPNameToIP("https://customer.cc.at.paysafecard.com")
    Global $iSocket = TCPConnect($iIP, 80)
    If $iSocket = -1 Then Exit

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox (0,"",_psc_besuchen())

    [/autoit] [autoit][/autoit] [autoit]

    Func _psc_besuchen()
    $sHeader = "GET /psccustomer/GetWelcomePanelServlet HTTP/1.1" & @CRLF & _
    "Host: customer.cc.at.paysafecard.com" & @CRLF & _
    "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)" & @CRLF & _
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & _
    "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" & @CRLF & _
    "Accept-Encoding: gzip,deflate" & @CRLF & _
    "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & @CRLF & _
    "Keep-Alive: 115" & @CRLF & _
    "Connection: keep-alive"
    $iSend = TCPSend($iSocket, $sHeader)
    MsgBox (0,"",$iSend)
    While 1
    $sRecv = TCPRecv($iSocket, 2048)
    If $sRecv <> '' Then
    While 1
    $sRecv &= TCPRecv($iSocket, 2048)
    If @error Or StringInStr($sRecv, "/seam/resource/captcha") Then ExitLoop 2
    WEnd
    EndIf
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Return $sRecv
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _psc_test($code1, $code2, $code3, $code4, $pw, $captcha)
    $sPost = "j_id17=j_id17&j_id17%3Arn1=" & $code1 & "&j_id17%3Arn2=" & $code2 & "&j_id17%3Arn3=" & $code3 & "&j_id17%3Arn4=" & $code4 & "&j_id17%3Aj_id23=" & $pw & "&j_id17%3AverifyCaptcha=" & $captcha & "&j_id17%3Anext=Next&javax.faces.ViewState=j_id1"
    $sHeader = "POST /psccustomer/GetWelcomePanelServlet HTTP/1.1" & @CRLF & _
    "Host: customer.cc.at.paysafecard.com" & @CRLF & _
    "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)" & @CRLF & _
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & _
    "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" & @CRLF & _
    "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & @CRLF & _
    "Keep-Alive: 115" & @CRLF & _
    "Connection: keep-alive" & @CRLF & _
    "Content-Type: text/html; charset=utf-8" & @CRLF & _
    "Content-Length: " & StringLen($sPost) & @CRLF & @CRLF & $sPost

    [/autoit] [autoit][/autoit] [autoit]

    ;"Referer: https://customer.cc.at.paysafecard.com/psccustomer/we…eam?cvid=486817" & @CRLF & _
    $iSend = TCPSend($iSocket, $sHeader)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $sRecv = TCPRecv($iSocket, 1024)
    If $sRecv <> '' Then
    While 1
    $sRecv &= TCPRecv($iSocket, 1024)
    If @error Or StringInStr($sRecv, "Content-Type: text/html; charset=utf-8") Then ExitLoop 2
    WEnd
    EndIf
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Return $sRecv
    EndFunc ;==>_psc_test

    [/autoit]
  • am schluss eines tcp-packets muss immer (ausgenommen du sendest anstatt GET ein POST) ein doppeltes @CRLF stehen:

    [autoit]

    $sHeader = "GET /psccustomer/GetWelcomePanelServlet HTTP/1.1" & @CRLF & _
    "Host: customer.cc.at.paysafecard.com" & @CRLF & _
    "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)" & @CRLF & _
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & _
    "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" & @CRLF & _
    "Accept-Encoding: gzip,deflate" & @CRLF & _
    "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & @CRLF & _
    "Keep-Alive: 115" & @CRLF & _
    "Connection: keep-alive" & @CRLF & @CRLF

    [/autoit]


    Falls du noch mehr Hilfe brauchst findeste hier viele meiner Tcp-Tuts: http://www.youtube.com/user/1amrk1

  • mhh ich gehe mal davon aus, dass du wirklich per https connecten willst...
    das problem ist, dass bei einem https (HyperTextTransferProtoclSecured) -Connect dein Paket ersten nicht an Port 80 sondern Port 443 gesendet werden muss und zweitens muss es auch noch mit SLL verschlüsselt werden^^
    das senden an einen anderen port ist denke ich mal nicht die schwierigkeit... nur das SSL (SecuredSocketLayer) -Verfahren ist in autoit ein Problem, denn das erfordert einen komplizierten Datentransfer, für den es momentan in AutoIt soweit ich weiß keine UDF gibt... falls du dir selbst eine proggen willst, kannst du als vorlage OpenSSL nehmen ;)

  • wie gesagt^^
    indem du dir selber ne udf schreibst oder vlt gibts ja ne dll dafür :P


  • Bei einem GET muss ich kein doppeltes @crlf machen und wennich auf einen seite coneccten will reicht bei mir auch der normale port 80 aus.

    EDIT: Und sicher, dass der hoste stimmt, den kann ich nämlich nicht erreichen. außerdem muss ich bei _IENametoip keine http angeben

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Das hilft mir aber kein Stück weiter :(


    und warum hast es überhautp mal ausprobiert. Wenn kein Host erreichbar ist kann es nicht funktionieren.

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • naj was für eine Antwort vom Server erwartest du denn?

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • [autoit]

    "Accept-Encoding: gzip,deflate" & @CRLF & _

    [/autoit]

    .

    Diese Zeile erlaubt, das du was zurückbekomst das in gzip geschreiben ist, was Menschen nicht so einfach lesen können. Lösch diese Zeile, dann dürfte es gehen!

  • Nochmal um das hier klar zu stellen:
    1. das tcpnametoip klappt einwandfrei...
    2. Ähm Darter?! doch?! jeder html-noob weiß, dass ein http-header mit einem zweifachen zeilenumbruch endet oO
    somit MUSS das rein... hier ist sogar beweisscript <.<

    Spoiler anzeigen
    [autoit]

    TCPStartup()
    $iIP = TCPNameToIP("www.google.de")
    Global $iSocket = TCPConnect($iIP, 80)

    [/autoit] [autoit][/autoit] [autoit]

    $sHeader = "GET / HTTP/1.1" & @CRLF & _
    "Host: http://www.google.de" & @CRLF & _
    "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)" & @CRLF & _
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & _
    "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" & @CRLF & _
    "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & @CRLF & _
    "Keep-Alive: 115" & @CRLF & _
    "Connection: keep-alive" & @CRLF & @CRLF
    $iSend = TCPSend($iSocket, $sHeader)
    MsgBox(0,"PACKET #1 GESENDET",$iSend)
    $sRecv = ""
    Sleep(1000)
    While 1
    $sRecv = TCPRecv($iSocket, 2048)
    MsgBox(0,"PACKET MIT @CRLF",$sRecv)
    If $sRecv = "" Then ExitLoop
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $sHeader = "GET / HTTP/1.1" & @CRLF & _
    "Host: http://www.google.de" & @CRLF & _
    "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)" & @CRLF & _
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & _
    "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" & @CRLF & _
    "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & @CRLF & _
    "Keep-Alive: 115" & @CRLF & _
    "Connection: keep-alive"
    $iSend = TCPSend($iSocket, $sHeader)
    MsgBox(0,"PACKET #2 GESENDET",$iSend)
    $sRecv = ""
    Sleep(1000)
    While 1
    $sRecv = TCPRecv($iSocket, 2048)
    MsgBox(0,"PACKET MIT @CRLF",$sRecv)
    If $sRecv = "" Then ExitLoop
    WEnd

    [/autoit]


    3. GZIP: Jo stimmt schon... die zeile muss raus wenn du das packet direkt ohne konverter verarbeiten willst
    4. und doch muss er das ganze an port 443 sende, denn wie man unschwer seinem Name entnehmen kann, will er auf HTTPS connecten und für die, die es immer noch net glauben: HIER KLICKEN und auf PORT GUCKN <.<

  • wahrscheinlich kann die winhttp ssl... tcp hingegen ist ja nicht nur für web vorgesehen, daher wird ssl nicht als standard vorrausgesetzt...

  • Und wieso kann ich über die Win HTTP Befehle ebenfals nicht auf die Seite kommen ?

    Spoiler anzeigen
    [autoit]

    #include <WinHTTP.au3>
    #include <WinHTTPConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $hw_open, $hw_connect, $h_openRequest

    [/autoit] [autoit][/autoit] [autoit]

    $hw_open = _WinHttpOpen("Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)")
    $hw_connect = _WinHttpConnect($hw_open, "customer.cc.at.paysafecard.com", $INTERNET_DEFAULT_HTTPS_PORT)

    [/autoit] [autoit][/autoit] [autoit]

    $seite = _pscbesuchen("/psccustomer/GetWelcomePanelServlet")
    MsgBox (0,"",$seite)

    [/autoit] [autoit][/autoit] [autoit]

    Func _pscbesuchen($connect, $flag = 1)
    $h_openRequest = _WinHttpOpenRequest($hw_connect, "GET", $connect, "HTTP/1.1", _
    $WINHTTP_NO_REFERER, $WINHTTP_DEFAULT_ACCEPT_TYPES, $WINHTTP_FLAG_SECURE)
    _WinHttpSendRequest($h_openRequest)
    _WinHttpReceiveResponse($h_openRequest)
    $header = _WinHttpQueryHeaders($h_openRequest)
    If _WinHttpQueryDataAvailable($h_openRequest) Then
    Local $data = ""
    Do
    $data &= _WinHttpReadData($h_openRequest, $flag)
    Until @error <> 0
    EndIf
    Return $data
    EndFunc ;==>_pscbesuchen

    [/autoit]
  • naja ich letztens erst so was gemacht ohne den doppelten zeilenumbruch und es funzt supi :pinch:

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • laut Greek soll das script gehen:

    Spoiler anzeigen
    [autoit]

    #include <WinHTTP.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $hw_open = _WinHttpOpen("psc")
    $hw_connect = _WinHttpConnect($hw_open, "customer.cc.at.paysafecard.com",$INTERNET_DEFAULT_HTTPS_PORT)
    $h_openRequest = _WinHttpOpenRequest($hw_connect,"GET", "/psccustomer/GetWelcomePanelServlet","HTTP/1.1", _
    $WINHTTP_NO_REFERER, $WINHTTP_DEFAULT_ACCEPT_TYPES, $WINHTTP_FLAG_SECURE)
    _WinHttpSendRequest($h_openRequest)
    _WinHttpReceiveResponse($h_openRequest)

    [/autoit] [autoit][/autoit] [autoit]

    $header = _WinHttpQueryHeaders($h_openRequest)
    MsgBox(0, "Header", $header)
    If _WinHttpQueryDataAvailable($h_openRequest) Then
    Local $data=""
    Do
    $data&=_WinHttpReadData($h_openRequest)
    Until @error<>0
    MsgBox(0, "Body", $data)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _WinHttpCloseHandle($h_openRequest)
    _WinHttpCloseHandle($hw_connect)
    _WinHttpCloseHandle($hw_open)

    [/autoit]

    kenne mich nicht wirklich mit winhttp aus..