Login aus https:// unter Windows 7

  • Hallo,

    folgendes Script läuft unter XP 32Bit, Vista 32Bit und Vista 64Bit unter Windows 7 64Bit leider nicht.
    Hat jemand eine Lösung dafür?

    Spoiler anzeigen
    [autoit]


    Global $oMyRet[2]
    Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")

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

    __Login()
    Exit

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

    Func __Login()
    $objHTTP = ObjCreate ("winhttp.winhttprequest.5.1")
    $objHTTP.open ("POST", "https://www.save.tv/STV/M/Index.cfm?sk=PREMIUM", False)
    $objHTTP.SetRequestHeader ("Content-Type", "application/x-www-form-urlencoded")
    $objHTTP.Send("sUsername=username&" & "sPassword=password")
    $cookie = $objHTTP.GetResponseHeader("Set-Cookie")
    $objHTTP = 0
    EndFunc

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

    Func MyErrFunc()
    Msgbox(0, "AutoItCOM Test", "Ein COM-Fehler ist aufgetreten !" & @CRLF & @CRLF & _
    "err.description is: " & @TAB & $oMyError.description & @CRLF & _
    "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _
    "err.number is: " & @TAB & hex($oMyError.number,8) & @CRLF & _
    "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _
    "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _
    "err.source is: " & @TAB & $oMyError.source & @CRLF & _
    "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _
    "err.helpcontext is: " & @TAB & $oMyError.helpcontext _
    , 5 _
    )
    Local $err = $oMyError.number
    If $err = 0 Then $err = -1
    $g_eventerror = $err ; to check for after this function returns
    Endfunc

    [/autoit]

    Bekomme die Fehlermaledung:

    Der Vorgang wurde abgebrochen
    WinHttp.WinHttp.Request
    errno 80020009

    Ja, ich bekomme die Meldung auch mit gültigem Username und Password

    Gruß Paule

    Edit: Korrigiert sPassword statt Password

    Einmal editiert, zuletzt von Paule (4. August 2010 um 11:13)

  • Wenn ich das richtig verstehe erlaubt das Save.TV nicht das sich Programme da anmelden.

    Zitat

    3. Die Nutzung des Service und die Anmeldung dazu ist nur volljährigen natürlichen Personen gestattet; die Anmeldung Minderjähriger, juristischer Personen oder Körperschaften ist unzulässig und unwirksam.


    Wenn mit natürlichen Personen Programme ausgeschlosssen sind dann wird hier nicht supportet.

  • Naja, das bedeutet doch, dass der Account einer natürlichen Person gehören muss. Ob der jetzt über einen speziellen "save.tv-Browser" oder einen normalen Webbrowser zugreift, ist doch egal.

    Deiner Logik nach dürfte niemand darauf zugreifen, da das nur mittels eines Programms (Browser) möglich ist.

  • Sprenger120
    wenn Du von Jura keine Ahnung hast dann spiele hier doch nicht den Obermacker.
    Ich bin eine volljährige, natürliche Person und habe einen Account bei save.tv.
    Ausserdem macht der empfohlende FreeDownloadManager von save.tv nicht anderes.
    Also vorher informieren, Hirn einschalten und dann posten.

    Die Problematik bleibt aber dieselbe. Auf https Seiten kann ich unter Windows 7 nicht zugreigfen, auch wenn es die AGBs erlauben.

  • Set-Cookie gibt es bei mir nicht als Header. Da kommt die gleiche Fehlernummer, aber eine andere Beschreibung. (XP)

    Edit: Außerdem ist deine Aufteilung nicht gut. Das WinHTTP-Objekt solltest du ganz am Anfang öffnen und erst am Programmende wieder schließen. Dann musst du dich auch nicht um die Cookies kümmern glaube ich.

    Einmal editiert, zuletzt von progandy (3. August 2010 um 22:11)

  • @progandy
    ich habe den Codesnipsel login isoliert und unter vista64 getestet. Unter XP prüfe ich es morgen.
    Ich denke das Zertifikat von save.tv ist nicht in Ordnung. Ich bekomme, wenn ich unter IE meine Files herunterlade, vom IE hinweise, dass die Seite nicht vertrauenswürdig sei. Der download mit dem FreeDownloadManager funktioniert trotzdem.

    Zur Aufteilung: Ich muss es vorher schliessen, weil bei den nachfolgenden Zugriffen es ab und zu keine Verbindung mehr gibt. Zu viele Verbindungen offen vermute ich.
    Hast Du eine Methode wie ich systematisch daran gehen kann?

  • Hast du es mal mit der WinHTTP Udf probiert?

    /Edit: Bei mir sieht der Post aber auch irgendwie anders aus.
    So hätte ich es gemacht:

    Spoiler anzeigen
    [autoit]

    #include <WinHTTP.au3>

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

    Local $user = 'username', $password = 'password'
    Local $post = "DL=&sUsername=" & $user & "&sPassword=" & $password

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

    $hw_open = _WinHttpOpen("Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.7 GTB7.1")
    $hw_connect = _WinHttpConnect($hw_open, "www.save.tv", $INTERNET_DEFAULT_HTTPS_PORT)
    $h_openRequest = _WinHttpOpenRequest($hw_connect, "POST", "/STV/M/Index.cfm?sk=PREMIUM", "HTTP/1.1", _
    $WINHTTP_NO_REFERER, $WINHTTP_DEFAULT_ACCEPT_TYPES, $WINHTTP_FLAG_SECURE)
    _WinHttpSendRequest($h_openRequest, "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & 'Content-Type: application/x-www-form-urlencoded' & @CRLF, $post)
    _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
    FileWrite("test.html", $data)
    EndIf

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

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

    [/autoit]

    Kann aber nicht sagen ob es funktioniert...

    3 Mal editiert, zuletzt von anno2008 (4. August 2010 um 01:51)

  • Vielleicht fehlen nur einfach ein paar Headerinformationen?
    Browsertyp, Betriebssystem etc. weil ich glaube nicht das man unterscheiden kann ob sich ein Mensch anmeldet oder eben ein Menschautomatisch.

    MfG
    Der_Doc

  • Browsertyp, Betriebssystem etc. weil ich glaube nicht das man unterscheiden kann ob sich ein Mensch anmeldet oder eben ein Menschautomatisch.

    Nein kann man nicht :). Das einzigste was wirklich mitgesendet werden kann ist der Browsertyp und der Referrer.