ich hatte vor nen kleinen Login bot für das browsergame kapiland zu schreiben. Ich habe das Login-Paket mit live http headers gesnifft und dann in autoit ein codesnippet angepasst. Es funktioniert zwar alles so weit und ich bekomme in Autoit die gleichen Antworten vom Server wie in Firefox. Allerdings dauert es extrem lange bis ich eine Antwort vom server bekomme (bis zu 10 Sekunden).
Ich hoffe einer weiß woran es liegen könnte.
Code:
#include<String.au3>
TCPStartup()
$ip = TCPNameToIP('kapiland.de')
TCPShutdown()
$loginpost='server=3&USR=scorni&pass=daspwistgeheim'
$source=TCPRequest($ip,"kapiland.de", "serverwahl.php4", $loginpost)
$location=_stringbetween($source,"Location: ","Content-type")
msgbox(0,"",$location[0])
Func TCPRequest($sIp, $sHost, $sSeite = "", $sPost = '', $iMaxTime = 10000)
Local $sPacket, $iSocket, $iTimer
$msg=1
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 NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0' & @CRLF & _
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' & @CRLF & _
'Accept-Language: de,en-US;q=0.7,en;q=0.3' & @CRLF & _
'Accept-Encoding: gzip, deflate' & @CRLF & _
'Referer: http://kapiland.de/' & @CRLF & _
'Cookie: ' & @CRLF & _
'Connection: keep-alive' & @CRLF & _
'Content-Type: application/x-www-form-urlencoded' & @crlf
If $sPost <> '' Then
$sPacket &= 'Content-Length: ' & StringLen($sPost) & @CRLF
EndIf
$sPacket &= @CRLF
If $sPost <> '' Then
$sPacket &= $sPost
EndIf
If $msg=1 Then
MsgBox(0,"Packet",$sPacket)
EndIf
TCPStartup()
If @error Then Return SetError(1, 0, "")
$iSocket = TCPConnect($sIp, 80)
If @error Then Return SetError(2, 0, "")
TCPSend($iSocket, $sPacket)
If @error Then Return SetError(3, 0, "")
$iTimer = TimerInit()
Do
$sRecv = TCPRecv($iSocket, 1024)
If TimerDiff($iTimer) > $iMaxTime Then Return SetError(4, 0, "")
Until $sRecv <> ""
Do
$sRecv &= TCPRecv($iSocket, 1024)
Until @error Or StringInStr($sRecv, '</html>')
TCPCloseSocket($iSocket)
TCPShutdown()
Return $sRecv
EndFunc ;==>TCPRequest






