Packete verschicken

05/25/2011 19:17 omer36#1
moin moin...

Mit Packeten und Cookies hatte ich mit AutoIt bisher noch nichts zu tun gehabt und mein versuch mit Hilfe des Tutorials [Only registered and activated users can see links. Click Here To Register...] ist auch gescheitert...

Es handelt sich um ein Vote - Packet von einem Video.
Wenn ichs richtig gemacht habe, ist dieser Teil das wichtige:

Code:
----------------------------------------------------------
http://php5.arte.tv/voting/_wettbewerb2011/storeMark.php?VideoID=3875618&Mark=10

GET /voting/_wettbewerb2011/storeMark.php?VideoID=3875618&Mark=10 HTTP/1.1
Host: php5.arte.tv
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://php5.arte.tv/voting/_wettbewerb2011/video.php?videoID=3875618
Cookie: video_3875618=rating%3D10; __utma=206176323.521987469.1305706376.1306340919.1306341056.16; __utmz=206176323.1306341056.16.14.utmcsr=facebook.com|utmccn=(referral)|utmcmd=referral|utmcct=/l.php; xtvrn=$428450$; __utmb=206176323.1.10.1306341056; __utmc=206176323; server=D45F46C2

HTTP/1.1 200 OK
Date: Wed, 25 May 2011 16:32:07 GMT
Server: Apache/1.3.37 (Unix) PHP/5.2.14
X-Powered-By: PHP/5.2.14
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html
----------------------------------------------------------
Ich wollte jetz per Autoit dieses Packet vershicken, dannach die Cookies löschen und das ganze wiederholen...

mein versuch sah so aus, wobei ich vermute, dass der Fehler im $Post liegt:
PHP Code:
#include <String.au3>

TCPStartup()
$ip TCPNameToIP("www.arte.tv")
TCPShutdown()

$post 'video_3875618=rating%3D10; __utma=206176323.521987469.1305706376.1306340919.1306341056.16; __utmz=206176323.1306341056.16.14.utmcsr=facebook.com|utmccn=(referral)|utmcmd=referral|utmcct=/l.php; xtvrn=$428450$; __utmb=206176323.1.10.1306341056; __utmc=206176323; server=D45F46C2'
$source TCPRequest($ip"php5.arte.tv"0"/voting/_wettbewerb2011/storeMark.php?VideoID=3875618&Mark=10"$post""'http://php5.arte.tv/voting/_wettbewerb2011/video.php?videoID=3875618')
MsgBox(0,"test",$source)


Func TCPRequest($sIp$sHost,$msg=0$sSeite ""$sPost ''$sCookies ''$sReferer ''$iMaxTime 10000)
    
Local $sPacket$iSocket$iTimer

    
If $sPost '' Then
        $sPacket 
'GET /' $sSeite ' HTTP/1.1' & @CRLF
    
Else
        
$sPacket 'POST /' $sSeite ' HTTP/1.1' & @CRLF
    
EndIf
    
$sPacket &= 'Host: ' $sHost & @CRLF _
            
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.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: 300' & @CRLF _
            
'Content-Type: application/x-www-form-urlencoded' & @CRLF _
            
'Connection: keep-alive' & @CRLF
    
If $sReferer <> '' Then
        $sPacket 
&= 'Referer: ' $sReferer & @CRLF
    
EndIf
    If 
$sCookies <> '' Then
        $sCookies
=StringStripCR($sCookies)
        
$sCookies=StringStripWS($sCookies,8)
        
$sPacket &= 'Cookie: ' $sCookies & @CRLF
    
EndIf
    If 
$sPost <> '' Then
        $sPacket 
&= 'Content-Length: ' StringLen($sPost) & @CRLF
    
EndIf
    
$sPacket &= @CRLF
    
If $sPost <> '' Then
        $sPacket 
&= $sPost
    
EndIf
    If 
$msg=1 Then
    MsgBox
(0,"test",$sPacket)
    EndIf
    
TCPStartup()
    If @
error Then Return SetError(10"")
    
$iSocket TCPConnect($sIp80)
    If @
error Then Return SetError(20"")
    
TCPSend($iSocket$sPacket)
    If @
error Then Return SetError(30"")
    
$iTimer TimerInit()
    Do
        
$sRecv TCPRecv($iSocket1024)
        If 
TimerDiff($iTimer) > $iMaxTime Then Return SetError(40"")
    
Until $sRecv <> ""
    
Do
        
$sRecv &= TCPRecv($iSocket1024)
    
Until @error Or StringInStr($sRecv'</html>')
    
TCPCloseSocket($iSocket)
    
TCPShutdown()
    Return 
$sRecv
EndFunc   
;==>TCPRequest 

Vielleicht könnte mir jemand kurz helfen.

MfG
05/25/2011 19:38 BlackHybrid#2
Brauchst du dafür nicht ein POST Packet?
05/25/2011 21:19 Shadow992#3
1. Du brauchst kein Post-Packet.
2. Dein Host ist falsch:
PHP Code:
TCPStartup()
$ip TCPNameToIP("www.arte.tv")
TCPShutdown() 
müsste so heißen:
PHP Code:
TCPStartup()
$ip TCPNameToIP("php5.arte.tv")
TCPShutdown() 
So sollte dein Skript also gehen:
PHP Code:
#include <String.au3>

TCPStartup()
$ip TCPNameToIP("php5.arte.tv")
TCPShutdown()

$cookies="video_3875618=rating%3D10; __utma=206176323.521987469.1305706376.1306340919.1306341056.16; __utmz=206176323.1306341056.16.14.utmcsr=facebook.com|utmccn=(referral)|utmcmd=referral|utmcct=/l.php; xtvrn=$428450$; __utmb=206176323.1.10.1306341056; __utmc=206176323; server=D45F46C2"
$source TCPRequest($ip"php5.arte.tv"0"/voting/_wettbewerb2011/storeMark.php?VideoID=3875618&Mark=10"""$cookies'http://php5.arte.tv/voting/_wettbewerb2011/video.php?videoID=3875618')
MsgBox(0,"test",$source)


Func TCPRequest($sIp$sHost,$msg=0$sSeite ""$sPost ''$sCookies ''$sReferer ''$iMaxTime 10000)
    
Local $sPacket$iSocket$iTimer

    
If $sPost '' Then
        $sPacket 
'GET /' $sSeite ' HTTP/1.1' & @CRLF
    
Else
        
$sPacket 'POST /' $sSeite ' HTTP/1.1' & @CRLF
    
EndIf
    
$sPacket &= 'Host: ' $sHost & @CRLF _
            
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.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: 300' & @CRLF _
            
'Content-Type: application/x-www-form-urlencoded' & @CRLF _
            
'Connection: keep-alive' & @CRLF
    
If $sReferer <> '' Then
        $sPacket 
&= 'Referer: ' $sReferer & @CRLF
    
EndIf
    If 
$sCookies <> '' Then
        $sCookies
=StringStripCR($sCookies)
        
$sCookies=StringStripWS($sCookies,8)
        
$sPacket &= 'Cookie: ' $sCookies & @CRLF
    
EndIf
    If 
$sPost <> '' Then
        $sPacket 
&= 'Content-Length: ' StringLen($sPost) & @CRLF
    
EndIf
    
$sPacket &= @CRLF
    
If $sPost <> '' Then
        $sPacket 
&= $sPost
    
EndIf
    If 
$msg=1 Then
    MsgBox
(0,"test",$sPacket)
    EndIf
    
TCPStartup()
    If @
error Then Return SetError(10"")
    
$iSocket TCPConnect($sIp80)
    If @
error Then Return SetError(20"")
    
TCPSend($iSocket$sPacket)
    If @
error Then Return SetError(30"")
    
$iTimer TimerInit()
    Do
        
$sRecv TCPRecv($iSocket1024)
        If 
TimerDiff($iTimer) > $iMaxTime Then Return SetError(40"")
    
Until $sRecv <> ""
    
Do
        
$sRecv &= TCPRecv($iSocket1024)
    
Until @error Or StringInStr($sRecv'</html>')
    
TCPCloseSocket($iSocket)
    
TCPShutdown()
    Return 
$sRecv
EndFunc   
;==>TCPRequest 
05/25/2011 22:47 omer36#4
ahh jetz versteh ich, Danke dir.

Hatte ich ja nichtmal so vieles falsch :D

Wenn mann nen "GET"-Packet hatt, bleib der $sPost einfach frei..