1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. tippex

Beiträge von tippex

  • Erste Versuche mit WinHTTP, Verständnisprobleme

    • tippex
    • 30. Dezember 2018 um 19:35

    Hallo zusammen,

    es sind wieder ein paar Tage vergangen und ich bin ein gutes Stück voran gekommen. Nachdem ich nun die Hilfe , sowie hier das Forum schon durchstöbert habe , komme ich trotzdem nicht mehr weiter.

    Es hakt glaube ich an den Basics , aber irgendwie will das nicht in meinen Kopf rein ....

    Vielleicht ist ja jemand so nett und kann mir nochmal etwas auf die Sprünge helfen. Ich hänge mal mein bisheriges Geschreibsel an, dort habe ich die Stellen kommentiert wo ich absolut nicht weiterkomme.

    Es sind bestimmt nur Kleinigkeiten , aber für einen Anfänger ist es dann wohl doch zu viel des Guten .

    gruß

    tippex


    C
    #cs ----------------------------------------------------------------------------
    
     AutoIt Version: 3.3.14.5
     Author:         tippex
    
     Script Function:
         Verleihshop-Tool
         Es werden automatisch die Filme von der Merkliste auf www.verleihshop.de geliehen,
         bzw. in den Warenkorb gepackt oder vorbestellt wenn nicht verfügbar
    
    #ce ----------------------------------------------------------------------------
    
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinHttp.au3>
    #include <String.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <StringConstants.au3>
    #include <GuiButton.au3>
    #include <GuiListView.au3>
    
    
    
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate(" Verleihshop-Tool ", 600, 437, 192, 124)
    $downloadliste = GUICtrlCreateButton("Merkliste laden ", 32, 112, 131, 41)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial Rounded MT Bold")
    GUICtrlSetBkColor(-1, 0xA6CAF0)
    $login = GUICtrlCreateButton("Setze Logindaten", 31, 41, 131, 41)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial Rounded MT Bold")
    GUICtrlSetBkColor(-1, 0xA6CAF0)
    $List1 = GUICtrlCreateListView("", 184, 24, 369, 266)
    ;$List2 = GUI("", 560, 24, 361, 266)
    $leihfilm = GUICtrlCreateButton("Filme Leihen", 32, 168, 129, 41)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial Rounded MT Bold")
    GUICtrlSetBkColor(-1, 0xA6CAF0)
    $vbFilm = GUICtrlCreateButton("Filme vorbestellen", 32, 232, 131, 41)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial Rounded MT Bold")
    GUICtrlSetBkColor(-1, 0xA6CAF0)
    $Label1 = GUICtrlCreateLabel("Merkliste", 315, 304, 129, 26)
    GUICtrlSetFont(-1, 14, 400, 0, "Arial Rounded MT Bold")
    ;$Label2 = GUICtrlCreateLabel("Vorbestellbare Titel", 666, 302, 184, 26)
    ;GUICtrlSetFont(-1, 14, 400, 0, "Arial Rounded MT Bold")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    
    
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
    
    
    
        Case $login  ;Hiermit werden Ussername und Login in einer ini gepeichert
    
                $sUsername=InputBox("Username angeben","Gib deinen Username an")
                IniWrite("vsbot.ini","Login","username",$sUsername)
                $sPassword=InputBox("Passwort angeben","Gib dein Passwort an")
                IniWrite("vsbot.ini","Login","passwort",$sPassword)
    
    
    
    
    
    
    
        Case $downloadliste  ;Hiermit wird die "Merkliste" der Seite ausgelesen. Das Ergebnis soll in die Listview eingetragen werden... Todo... Hier komme ich nicht weiter
                             ; So sieht der Inhalt der downloadliste.txt aus , jeder Titel steht in einer Zeile
                             ;Lord of Illusions
                             ;Der dunkle Turm
                             ;Die Mumie
                             ;Die Tribute von Panem - The Hunger Games
                             ;Iron Man 3
                             ;Weltengänger
    
    
            $hSession = _WinHttpOpen("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36")
            $hConnect = _WinhttpConnect($hSession, "www.verleihshop.de")
            $pass = IniRead("vsbot.ini","Login","passwort","default")
            $user = IniRead("vsbot.ini","Login","username","default")
            $sPOST = 'password=' & $pass & '&source=loginbox&username=' & $user & '&x=44&y=5'
    
    
    
    
            $sHTML = _WinHttpSimpleSSLRequest($hConnect, "POST", "login.html" , "www.verleihshop.de" , $sPOST)
            _WinHttpAddRequestHeaders($hConnect, "Connection: Keep-Alive")
            _WinHttpAddRequestHeaders($hConnect, "Content-Type: application/x-www-form-urlencoded")
            _WinHttpSetOption($sHTML, $WINHTTP_OPTION_DISABLE_FEATURE, $WINHTTP_DISABLE_COOKIES)
            FileWrite("login.html" , $sHTML)
    
            $sText = FileRead(@ScriptDir & '\login.html')
            $aOut = StringRegExp($sText, '\/\d+,merkzettel\.html', 1)
            ;_ArrayDisplay($aOut, 'name=', '', 64)
            $sOut = ''
            For $i = 0 To UBound($aOut) -1
            $sOut &= $aOut[$i]
            Next
            $hFile = FileOpen(@ScriptDir & '\lliste.txt' ,2)
            If $hFile <> -1 Then
            FileWrite($hFile, $sOut)
            FileClose($hFile)
            EndIf
    
            $merkliste = FileReadLine(@ScriptDir & '\lliste.txt',1)
    
    
            $sHTML = _WinHttpSimpleRequest($hConnect, "GET", $merkliste )
            FileWrite("downloadliste.html" , $sHTML)
    
            $sMerk = FileRead(@ScriptDir & '\downloadliste.html')
            $aAus = _StringBetween($sMerk,'class="searchlink">','</a>')
    
            _ArrayDisplay($aAus, 'Filme', "", 64)
            $sAus = ''
            For $i = 0 To UBound($aAus) -1
            $sAus &= $aAus[$i]
            Next
    
            $hDatei = FileOpen(@ScriptDir & '\downloadliste.txt' ,2)
            If $hDatei <> -1 Then
            _FileWriteFromArray($hDatei,$aAus)
    
            EndIf
    
    
    
    
        Case $leihfilm  ; Hiermit werden die leihbaren Titel der Merkliste in den Warenkorb gelegt. Dies sollte nach Möglichkeit alle 2 Minuten wiederholt werden. Problem : Datei Leiliste.txt bekomme ich nicht gelöscht.
            
            
            ;MsgBox(0, "Filme leihen", "Es werden alle leihbaren Titel der Merkliste in den Warenkorb gelegt!")
            $hSession = _WinHttpOpen("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36")
            $hConnect = _WinhttpConnect($hSession, "www.verleihshop.de")
            $pass = IniRead("vsbot.ini","Login","passwort","default")
            $user = IniRead("vsbot.ini","Login","username","default")
            $sPOST = 'password=' & $pass & '&source=loginbox&username=' & $user & '&x=44&y=5'
    
    
    
    
            $sHTML = _WinHttpSimpleSSLRequest($hConnect, "POST", "login.html" , "www.verleihshop.de" , $sPOST)
            _WinHttpAddRequestHeaders($hConnect, "Connection: Keep-Alive")
            _WinHttpAddRequestHeaders($hConnect, "Content-Type: application/x-www-form-urlencoded")
            _WinHttpSetOption($sHTML, $WINHTTP_OPTION_DISABLE_FEATURE, $WINHTTP_DISABLE_COOKIES)
            FileWrite("login.html" , $sHTML)
    
            $sText = FileRead(@ScriptDir & '\login.html')
            $aOut = StringRegExp($sText, '\/\d+,merkzettel\.html', 1)
            ;_ArrayDisplay($aOut, 'name=', '', 64)
            $sOut = ''
            For $i = 0 To UBound($aOut) -1
            $sOut &= $aOut[$i]
            Next
            $hFile = FileOpen(@ScriptDir & '\Ausgabe.txt' ,2)
            If $hFile <> -1 Then
            FileWrite($hFile, $sOut)
            FileClose($hFile)
            EndIf
    
            $merkzettel = FileReadLine(@ScriptDir & '\Ausgabe.txt',1)
    
    
            $sHTML = _WinHttpSimpleRequest($hConnect, "GET", $merkzettel )
            FileWrite("merkzettel.html" , $sHTML)
    
            $sMerk = FileRead(@ScriptDir & '\merkzettel.html')
            $aAus = StringRegExp($sMerk, '\/\d+,leihen_\w+.html',3)
            ;_ArrayDisplay($aAus, 'name=', "", 64)
            $sAus = ''
            For $i = 0 To UBound($aAus) -1
            $sAus &= $aAus[$i]
        Next
            $hDatei = FileOpen(@ScriptDir & '\Leihliste.txt' ,2)
            If $hDatei <> -1 Then
            _FileWriteFromArray($hDatei,$aAus)
    
        EndIf
    
           
           ; In diesem Abschnitt werden nun die Titel in den Warenkorb gelegt. Keine schöne Lösung , geht bestimmt auch mit einer Schleife, da hänge ich noch in der Luft.
            
            $leihfilm = FileReadLine(@ScriptDir & '\Leihliste.txt',0)
            $sHTML = _WinHttpSimpleRequest($hConnect, "POST", $leihfilm )
            Sleep(2000)
            $leihfilm = FileReadLine(@ScriptDir & '\Leihliste.txt',1)
            $sHTML = _WinHttpSimpleRequest($hConnect, "POST", $leihfilm )
            Sleep(2000)
            $leihfilm = FileReadLine(@ScriptDir & '\Leihliste.txt',2)
            $sHTML = _WinHttpSimpleRequest($hConnect, "POST", $leihfilm )
            Sleep(2000)
            $leihfilm = FileReadLine(@ScriptDir & '\Leihliste.txt',3 )
            $sHTML = _WinHttpSimpleRequest($hConnect, "POST", $leihfilm )
            Sleep(2000)
            $leihfilm = FileReadLine(@ScriptDir & '\Leihliste.txt',4)
            $sHTML = _WinHttpSimpleRequest($hConnect, "POST", $leihfilm )
            Sleep(2000)
            $leihfilm = FileReadLine(@ScriptDir & '\Leihliste.txt',5)
            $sHTML = _WinHttpSimpleRequest($hConnect, "POST", $leihfilm )
    
            ;FileClose ("Leihliste.txt")  
            ;FileDelete ("Leihliste.txt") <--- klappt nicht... Denkfehler ?? Datei wird trotz Fileclose nicht gelöscht, sollte für den nächsten "Durchlauf" neu angelegt werden.
            ;FileMove ("Leihliste.txt","@Scriptdir\temp\Leihliste.txt", $FC_OVERWRITE + $FC_CREATEPATH)
            ;FileDelete ("merkzettel.html") ; <---  hier klappt das deleten
            ;FileDelete ("@Scriptir\Leihliste.txt")
            ;FileDelete ("login.html") ;<----- hier dito
            ;FileDelete ("Ausgabe.txt"); <--- hier dito
    
            Sleep (20000)
    
            _WinHttpCloseHandle($hConnect)
            _WinHttpCloseHandle($hSession)
    
    
    
    
        Case $vbFilm   ; Hiermit werden Titel die nicht leihbar sind vorbestellt.Funktion sollte identisch mit $leihfilm funktionieren ( alle 2 Minuten aktualisieren) , siehe oben
           
           
            $hSession = _WinHttpOpen("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36")
            $hConnect = _WinhttpConnect($hSession, "www.verleihshop.de")
            $pass = IniRead("vsbot.ini","Login","passwort","default")
            $user = IniRead("vsbot.ini","Login","username","default")
            $sPOST = 'password=' & $pass & '&source=loginbox&username=' & $user & '&x=44&y=5'
    
    
    
    
            $sHTML = _WinHttpSimpleSSLRequest($hConnect, "POST", "login.html" , "www.verleihshop.de" , $sPOST)
            _WinHttpAddRequestHeaders($hConnect, "Connection: Keep-Alive")
            _WinHttpAddRequestHeaders($hConnect, "Content-Type: application/x-www-form-urlencoded")
            _WinHttpSetOption($sHTML, $WINHTTP_OPTION_DISABLE_FEATURE, $WINHTTP_DISABLE_COOKIES)
            FileWrite("vblogin.html" , $sHTML)
    
            $sText = FileRead(@ScriptDir & '\vblogin.html')
            $aOut = StringRegExp($sText, '\/\d+,merkzettel\.html', 1)
            ;_ArrayDisplay($aOut, 'name=', '', 64)
            $sOut = ''
            For $i = 0 To UBound($aOut) -1
            $sOut &= $aOut[$i]
            Next
            $hFile = FileOpen(@ScriptDir & '\Ausgabe2.txt' ,2)
            If $hFile <> -1 Then
            FileWrite($hFile, $sOut)
            FileClose($hFile)
            EndIf
    
            $merkzettel = FileReadLine(@ScriptDir & '\Ausgabe2.txt',1)
    
    
            $sHTML = _WinHttpSimpleRequest($hConnect, "GET", $merkzettel )
            FileWrite("vbzettel.html" , $sHTML)
    
            $sMerk = FileRead(@ScriptDir & '\vbzettel.html')
            $aAus = StringRegExp($sMerk, '\/\d+,vorbestellen_\w+.html',3)
            ;_ArrayDisplay($aAus, 'name=', "", 64)
            $sAus = ''
            For $i = 0 To UBound($aAus) -1
            $sAus &= $aAus[$i]
            Next
            $hDatei = FileOpen(@ScriptDir & '\VBliste.txt' ,2)
            If $hDatei <> -1 Then
            _FileWriteFromArray($hDatei,$aAus)
    
            EndIf
    
            ; Hier der gleiche Mist wie oben.... Geht bestimmt viel schöner und einfacher 
            
            
            $vbfilm = FileReadLine(@ScriptDir & '\VBliste.txt',0)
            $sHTML = _WinHttpSimpleRequest($hConnect, "POST", $vbfilm )
            Sleep(2000)
            $vbfilm = FileReadLine(@ScriptDir & '\VBliste.txt',1)
            $sHTML = _WinHttpSimpleRequest($hConnect, "POST", $vbfilm )
            Sleep(2000)
            $vbfilm = FileReadLine(@ScriptDir & '\VBliste.txt',2)
            $sHTML = _WinHttpSimpleRequest($hConnect, "POST", $vbfilm )
            Sleep(2000)
            $vbfilm = FileReadLine(@ScriptDir & '\VBliste.txt',3 )
            $sHTML = _WinHttpSimpleRequest($hConnect, "POST", $vbfilm )
            Sleep(2000)
            $vbfilm = FileReadLine(@ScriptDir & '\VBliste.txt',4)
            $sHTML = _WinHttpSimpleRequest($hConnect, "POST", $vbfilm )
            Sleep(2000)
            $vbfilm = FileReadLine(@ScriptDir & '\VBliste.txt',5)
            $sHTML = _WinHttpSimpleRequest($hConnect, "POST", $vbfilm )
    
            FileClose ("VBliste.txt")
            FileDelete ("VBliste.txt") ; <---- auch hier klappt das deleten nicht , siehe oben
            FileMove ("VBliste.txt",@ScriptDir & "\temp\VBliste.txt", $FC_OVERWRITE + $FC_CREATEPATH)
            FileDelete ("vbzettel.html")
            FileDelete (@ScriptDir & "\temp\VBliste.txt")
            FileDelete ("Ausgabe2.txt")
            FileDelete ("vblogin.html")
            FileDelete ("VBliste.txt")
    
            Sleep( 15000)
    
            _WinHttpCloseHandle($hConnect)
            _WinHttpCloseHandle($hSession)
    
    
    
        EndSwitch
        WEnd
    Alles anzeigen
  • Erste Versuche mit WinHTTP, Verständnisprobleme

    • tippex
    • 27. Dezember 2018 um 11:17
    Zitat von chesstiger

    Das klingt so, als würdest du in der GET-Anfrage eine komplette URL mit Server übermitteln. Das ist falsch. Du übermittelst an den Host http://www.meineseite.de die Anfrage nach /61974798815668285678766617929415361842483865,merkzettel.html. Sprich, du darfst nur einen Teil der URL angeben. Wenn ich gerade nicht völlig falsch bin.

    Vielen Dank chesstiger

    Das war der richtige Tipp ! Wenn ich nicht die komplette URL angebe , klappt das einwandfrei, also der gewünschte Quelltext wird in der Datei gespeichert. Logischerweise kommt dann bei meinem ShellExecute ne Fehlermeldung , beides geht natürlich nicht direkt :P .

    Da hatte ich echt nen Brett vorm Kopp.

    Auf jeden Fall komme ich nun erstmal einen Schritt weiter, nochmals vielen Dank dafür.

    Um diesen Vorgang nun z.b. alle 30 Minuten zu wiederholen, packe ich die Abragen dann in eine Schleife ?

    Gruß

    tippex

  • Erste Versuche mit WinHTTP, Verständnisprobleme

    • tippex
    • 26. Dezember 2018 um 11:26

    Der Slash kommt nur in der Fehlermeldung vor. WinHttpSimpleSSLRequest liefert das gleiche Ergebnis.

    Ich habe mal mein bisheriges Geschreibsel angehangen. Bitte nicht gleich erschlagen, sieht bestimmt gruselig aus für Profis.

    Noch ein Nachtrag: Mit ShellExecute( $merkliste ) wird die gewünschte Seite bei mir im Browser korrekt aufgerufen.

    Gruß

    tippex


    Code
    #cs ----------------------------------------------------------------------------
    
     AutoIt Version: 3.3.14.5
     Author:         tippex
    
     Script Function:
        hole Merkliste von verleihshop.de
    
    #ce ----------------------------------------------------------------------------
    
    ; Script Start - Add your code below here
     #include <WinHttp.au3>
     #include <String.au3>
     #include <Array.au3>
     
    
    $hSession = _WinHttpOpen("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134")
    $hConnect = _WinhttpConnect($hSession, "www.verleihshop.de")
    
    
    
    
    $sHTML = _WinHttpSimpleSSLRequest($hConnect, "POST", "login.html" , "www.verleihshop.de" , "password=somepassword&source=loginbox&username=someemailadress&x=44&y=5")
     _WinHttpAddRequestHeaders($hConnect, "Connection: Keep-Alive")
    FileWrite("Antwort 2.html" , $sHTML)
    
    $sText = FileRead(@ScriptDir & '\Antwort 2.html')
    $aOut = StringRegExp($sText, 'www.verleihshop.de\/\d+\,merkzettel.html', 1)
    _ArrayDisplay($aOut, 'name=', '', 64)
    $sOut = ''
    For $i = 0 To UBound($aOut) -1
        $sOut &= $aOut[$i]
    Next
    $hFile = FileOpen(@ScriptDir & '\Ausgabe.txt' ,2)
    If $hFile <> -1 Then
        FileWrite($hFile, $sOut)
        FileClose($hFile)
    EndIf
    
    $merkliste = FileReadLine(@ScriptDir & '\Ausgabe.txt',1)
    
    
    $sHTML = _WinHttpSimpleSSLRequest($hConnect, "GET", $merkliste , "www.verleihshop.de" )
    FileWrite("merkliste.html" , $sHTML)
    
    ShellExecute( $merkliste )
    
    
    
    
    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hSession)
    Alles anzeigen
  • Erste Versuche mit WinHTTP, Verständnisprobleme

    • tippex
    • 26. Dezember 2018 um 09:28

    Guten Morgen,

    nachdem ich nun mehrere Stunden bei Onkel Google verbracht habe hoffe ich hier auf einen kleinen Denkanstoss. Ich vermute ich suche in der falschen Richtung.

    Ich möchte mich auf eine Website mit meinem Username und Passwort einloggen. Das klappt ohne Probleme. Nach dem Login möchte ich den Quelltext einer Unterseite auslesen. Diese Unterseite ist eine Merkliste mit Artikeln die ich dort hinzugefügt habe.

    Diese Merkliste würde ich gerne in eine Datei speichern um sie weiter zu verarbeiten.

    Bis zum Login soweit alles kein Problem. Nur die Seite verändert nach dem Login die URLs. Ich bin mir nicht sicher ob es SessionIds sind.

    z.B. : https://www.meineseite.de/merkliste.html wird nach dem Login zu

    https://www.,meineseite.de/61974798815668285678766617929415361842483865,merkzettel.html

    Mittels StringRegExp habe ich mir diese "neue" URL aus dem Quelltext gezogen und in eine .txt geschrieben.

    Wenn ich nun aber den nächsten _WinHttpSimpleRequest absetze , mit der URL aus der .txt bekomme ich ein


    Forbidden

    You don't have permission to access /https://www.meineseite.de/61974798815668285678766617929415361842483865,merkzettel.html on this server.

    Hat jemand vielleicht einen Hinweis für mich , worauf ich achten muss ? Ich möchte keine komplette Lösung , sonst kann ich nichts lernen :P , aber ein Tip wie ich das umsetzen kann wäre super.

    Vielen Dank im vorab.

    Gruß

    tippex

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™