Url per TCP/IP öffnen

  • 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)
    [autoit]

    $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

    [/autoit]
    ...und dann die zweite...
    [autoit]

    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

    [/autoit]

    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. :D )

    3 Mal editiert, zuletzt von Taek (8. Oktober 2008 um 13:08)