Hallo zusammen,
ich bin gerade dabei, Ersatzvarianten gegenüber der IE.au3 zu probieren. Dabei bin ich auf GTASpiders TCP/IP Skript gestoßen. Dieses habe ich dann auch dementsprechen angepasst, nur leider klappt es noch nicht so richtig. Vielleicht kann mir ja auch GTASpider selber weiterhelfen...
Hier der Code:
Zuerst die erste Seite (wie beim RS Filereader)
$get_password = _StringEncrypt(0,IniRead(@ScriptDir & "\userdata.ini", "Login "&$account_name, "Password", ""),"rslogincrypt")
If IniRead(@ScriptDir & "\userdata.ini", "Login "&$account_name, "Type","") = "Collector" Then
$sUrl = "https://ssl.rapidshare.com/cgi-bin/collectorszone.cgi"
$phrase1 = "username"
Else
$phrase1 = "login"
$sUrl = "https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi"
EndIf
Local $hDll = DllOpen("wininet.dll")
Local $sUserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1", $hInternet, $hRequest, $iBufferSize = 1024 * 20
Local $tNumberOfBytesRead = DllStructCreate("dword"), $tBuffer = DllStructCreate("byte[" & $iBufferSize & "]"), $sReadFile, $aRegEx, $aRet[4], $avResult, $iReadBuffer,$iErr
Local $hInternet = DllCall($hDll, _
"ptr", "InternetOpen", _
"wstr", $sUserAgent, _
"dword", 0, _
"ptr", 0, _
"ptr", 0, _
"dword", 0)
If @error Then Return SetError(1, 0, 0)
$hInternet = $hInternet[0]
Local $hHTTPReq = DllCall($hDll, _
"ptr", "InternetOpenUrlW", _
"ptr", $hInternet, _
"wstr", $sUrl&"?"& $phrase1 &"="& $account_name & "&password=" & $get_password, _
"ptr", 0, _
"dword", 0, _
"dword", 0, _
"ptr", 0)
If @error Then Return SetError(2, 0, 0)
$hHTTPReq = $hHTTPReq[0]
Do
$tNumberOfBytesRead = DllStructCreate("dword")
$tBuffer = DllStructCreate("byte[" & $iBufferSize & "]")
Local $avResult = DllCall($hDll, _
"int", "InternetReadFile", _
"ptr", $hHTTPReq, _
"ptr", DllStructGetPtr($tBuffer), _
"dword", $iBufferSize, _
"ptr", DllStructGetPtr($tNumberOfBytesRead))
If @error Or Not $avResult[0] Then ExitLoop
$iReadBuffer = DllStructGetData($tNumberOfBytesRead, 1)
$sReadFile &= BinaryToString(BinaryMid(DllStructGetData($tBuffer, 1), 1, $iReadBuffer))
Until Not $iReadBuffer
...und dann die zweite...
Local $hDll = DllOpen("wininet.dll")
Local $sUserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1", $hInternet, $hRequest, $iBufferSize = 1024 * 20
Local $tNumberOfBytesRead = DllStructCreate("dword"), $tBuffer = DllStructCreate("byte[" & $iBufferSize & "]"), $sReadFile, $aRegEx, $aRet[4], $avResult, $iReadBuffer,$iErr
Local $hInternet = DllCall($hDll, _
"ptr", "InternetOpen", _
"wstr", $sUserAgent, _
"dword", 0, _
"ptr", 0, _
"ptr", 0, _
"dword", 0)
If @error Then Return SetError(1, 0, 0)
$hInternet = $hInternet[0]
Local $hHTTPReq = DllCall($hDll, _
"ptr", "InternetOpenUrlW", _
"ptr", $hInternet, _
"wstr", $sUrl&"?"& $phrase1 &"="& $account_name & "&password=" & $get_password, _
"ptr", 0, _
"dword", 0, _
"dword", 0, _
"ptr", 0)
If @error Then Return SetError(2, 0, 0)
$hHTTPReq = $hHTTPReq[0]
Local $hHTTPReq = DllCall($hDll, _
"ptr", "InternetOpenUrlW", _
"ptr", $hInternet, _
"wstr", $sUrl&"?skip=500", _
"ptr", 0, _
"dword", 0, _
"dword", 0, _
"ptr", 0)
If @error Then Return SetError(2, 0, 0)
$hHTTPReq = $hHTTPReq[0]
Do
$tNumberOfBytesRead = DllStructCreate("dword")
$tBuffer = DllStructCreate("byte[" & $iBufferSize & "]")
Local $avResult = DllCall($hDll, _
"int", "InternetReadFile", _
"ptr", $hHTTPReq, _
"ptr", DllStructGetPtr($tBuffer), _
"dword", $iBufferSize, _
"ptr", DllStructGetPtr($tNumberOfBytesRead))
If @error Or Not $avResult[0] Then ExitLoop
$iReadBuffer = DllStructGetData($tNumberOfBytesRead, 1)
$sReadFile &= BinaryToString(BinaryMid(DllStructGetData($tBuffer, 1), 1, $iReadBuffer))
Until Not $iReadBuffer
EDIT: Ich schätze es liegt am fehlenden Cookie. Vielleicht die DLL mit "InternetGetCookie" aufrufen. (Ehrlich gesagt keinen blassen Schimmer, aber mal geguckt was MSDN hergibt. )