Hilfe
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 

Tool für Postbox-Sammeldownload (mit photoTAN, nutzt Comdirect API)

Senshi
Autor ★★
15 Beiträge

Ursprünglich entstanden, als photoTAN aufkam und es noch kein Tool dafür gab, ist es nun zu einem praktischen Tool gewachsen, welches die offizielle Comdirect-API nutzt, um Postfach-Dokumente sicher und zuverlässig abzurufen.

 

https://github.com/WGPSenshi/ComdirectPostboxDownloader

bzw. direkt zum Downloadbereich:

https://github.com/WGPSenshi/ComdirectPostboxDownloader/releases

 

Anleitung, License etc. steht alles auf Github, hoffe das reicht aus. Ansonsten einfach fragen!

 

Features:

  • Python-basiert, läuft also auf allen Betriebssystemen. Für Windows sogar als bequeme .exe kompiliert, falls jemand keine Lust auf manuelles Ausführen von Skripten hat 😉 .
  • Alle Interaktionen mittels offizieller Comdirect-API, dadurch sicher, zuverlässig, schnell, flexibel.
  • Interaktives Menü: Beim ersten Zugriff auf Onlinedaten wird eine Authentifizierung gefordert (Zugangsdaten, PushTAN...), für anschließende Operationen ist eine neue Authentifizierung aber nicht mehr nötig. Komfort, fast wie auf der Webseite 🙂
  • Filtermöglichkeiten der Dokumente
    • nur bestimmte Dokumenttypen herunterladen
    • nur Dokumente herunterladen, die nicht bereits heruntergeladen wurden (Abgleich mit lokalem Verzeichnis)
    • Zeitraumfilterung
    • Sortierung von Dokumenten in Unterordner je nach Dokumenttyp
51 ANTWORTEN

Necoro
Mentor ★
1.070 Beiträge

@dsmr: You got a pull request Roboter (überglücklich)

dsmr
Autor ★★★
65 Beiträge

Noch ein Hinweis. Die 0.1 Sekunden Wartezeit zwischen den Downloads sind mit Absicht drin. Nicht, daß die Comdirect sonst eine DoS-Attacke vermutet und demnächst versucht, Scripte zu blocken. Bitte drinlassen.

Senshi
Autor ★★
15 Beiträge

"Aber mal im Ernst, Lizenzen sind dazu gut, eigene Rechte durchzusetzen oder Ansprüche andere abzuwehren. Was somit getan wäre. Nicht, daß ein Anwalt von Senshi mir noch eine Abmahnung schickt, weil ich ein paar Zeilen von ihm nach Python portiert habe."

 

Es geht nicht darum, dass ich oder sonstwer dich abmahnt (was ohnehin Unsinn wäre, da dein Code ja wirklich eigenständig entwickelt ist).

Bei Lizenzen geht es eben nicht nur darum, eigene Rechte durchzusetzen. Sie sind ein Ausdruck deines Willens, was mit deiner Entwicklung passieren darf.

Ohne Lizenz = "All Rights Reserved" (ARR). D.h. du stellst zwar den Quellcode online, aber schon die bloße Benutzung wäre verboten. "Open Source" heißt nicht gleich "freie Software". Ob man das nun rechtlich verfolgen kann oder nicht ist auch gar nicht unbedingt relevant. Für die Thematik sensible User und vor allem Devs werden ARR-Produkte nicht verwenden. Ist einfach ein Zeichen des Respekts der Arbeit und des Willens anderer.

blackmesa
Autor ★
4 Beiträge

Hi @Senshi,

 

mir ist aufgefallen, dass das PowerShell Skript (zumindest bei mir) ausschließlich gelesene PDFs runterlädt. Ich kann leider nicht erkennen woran es liegt.

 

Vielleicht findet jemand mit mehr Powershell-Kenntnissen eine Erklärung?

 

edit: Bin ein Stück weiter. Ich dachte zuerst, es läge am URL-Grabber, aber er findet sogar alle URLs, lädt dann aber nur die gelesenen herunter.

Press the number to select a user: : 1
You've selected MONAT
No right button found
8 files found on the server
1 : Downloaded BLABLABLA.pdf
2 : Downloaded Wertpapierabrechnung_BLABLABLA.pdf
3 : Downloaded Wertpapierabrechnung_BLABLABLABLA.pdf
4 : Downloaded Wertpapierabrechnung_BLABLABLABLA.pdf
4 new files downloaded

edit2: Ich hab das Problem inzwischen gefunden, kann es aber nicht selbst reparieren:

 

Die URLs von gelesenen und ungelesenen PDFs unterscheiden sich insofern, dass bei ungelesenen ganz hinten noch ein "?selectEntryId=" dranhängt. 

 

edit3: Repariert! (Stolzer Powershell Newbie) -> diese Zeile unter dem "foreach" einfügen.

$pdf = $pdf.split("?")[0]

Senshi
Autor ★★
15 Beiträge

Danke dir, Fix eingebaut 🙂 .

Felice
Autor
1 Beiträge

Ich habe die Powershell-Variante eingesetzt. Es erscheint folgender Fehler:

 

Ausnahme beim Aufrufen von "Click" mit 0 Argument(en): "element not interactable
(Session info: chrome=78.0.3904.97)"
In C:\Users\Felix\Downloads\ComdirectPostboxDownloader-2\Download.ps1:75 Zeichen:1
+ $ChromeDriver.FindElementById("f1-sucheStarten").Click()

 

Nach Ändern von "f1-sucheStarten" nach "f1-sucheStarten_sm" geht es.

 

Sehr angenehmes Tool!

StephanB.
Autor ★
8 Beiträge

Hallo Leute,

 

was mache ich falsch? Smiley (traurig)

Settings.ini ist ergänzt. Trotzdem folgende Fehlermeldung:

 

PS C:\Users\stephan\Documents\ComdirectPostboxDownloader> C:\Users\stephan\Documents\ComdirectPostboxDownloader\Download.ps1
Add-Type : Der Parameter "Path" kann nicht an das Ziel gebunden werden. Ausnahme beim Festlegen von "Path": "Der Pfad "C:\WebDriver.dll" kann nicht gefunden werden, da er nicht vorhanden ist."
Bei C:\Users\stephan\Documents\ComdirectPostboxDownloader\Download.ps1:4 Zeichen:15
+ Add-Type -Path <<<<  "$PSScriptRoot\WebDriver.dll" # Adding Selenium's .NET assembly (dll) to access it's classes in this PowerShell session
    + CategoryInfo          : WriteError: (:) [Add-Type], ParameterBindingException
    + FullyQualifiedErrorId : ParameterBindingFailed,Microsoft.PowerShell.Commands.AddTypeCommand
 
Add-Type : Der Parameter "Path" kann nicht an das Ziel gebunden werden. Ausnahme beim Festlegen von "Path": "Der Pfad "C:\WebDriver.Support.dll" kann nicht gefunden werden, da er nicht vorhanden ist."
Bei C:\Users\stephan\Documents\ComdirectPostboxDownloader\Download.ps1:5 Zeichen:15
+ Add-Type -Path <<<<  "$PSScriptRoot\WebDriver.Support.dll" # Adding Selenium's .NET assembly (dll) to access it's classes in this PowerShell session
    + CategoryInfo          : WriteError: (:) [Add-Type], ParameterBindingException
    + FullyQualifiedErrorId : ParameterBindingFailed,Microsoft.PowerShell.Commands.AddTypeCommand
 
New-Object : Der Typ [OpenQA.Selenium.Chrome.ChromeDriver] kann nicht gefunden werden. Stellen Sie sicher, dass die Assembly, die diesen Typ enthält, geladen wird.
Bei C:\Users\stephan\Documents\ComdirectPostboxDownloader\Download.ps1:6 Zeichen:27
+ $ChromeDriver = New-Object <<<<  OpenQA.Selenium.Chrome.ChromeDriver # Creates an instance of this class to control Selenium and stores it in an easy to handle variable
    + CategoryInfo          : InvalidType: (:) [New-Object], PSArgumentException
    + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand
 
Get-Content : Der Pfad "C:\settings.ini" kann nicht gefunden werden, da er nicht vorhanden ist.
Bei C:\Users\stephan\Documents\ComdirectPostboxDownloader\Download.ps1:11 Zeichen:24
+ $settings = Get-Content <<<<  $PSScriptRoot\settings.ini | ConvertFrom-StringData
    + CategoryInfo          : ObjectNotFound: (C:\settings.ini:String) [Get-Content], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand
 
New-Item : Der Pfad hat ein ungültiges Format.
Bei C:\Users\stephan\Documents\ComdirectPostboxDownloader\Download.ps1:20 Zeichen:9
+ New-Item <<<<  -Force -ItemType directory -Path $postBoxDir | Out-Null
    + CategoryInfo          : InvalidArgument: (C:\:String) [New-Item], ArgumentException
    + FullyQualifiedErrorId : CreateDirectoryArgumentError,Microsoft.PowerShell.Commands.NewItemCommand
 
Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei C:\Users\stephan\Documents\ComdirectPostboxDownloader\Download.ps1:26 Zeichen:23
+ $ChromeDriver.Navigate <<<< ().GoToURL($comdirectURL)
    + CategoryInfo          : InvalidOperation: (Navigate:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull
 
Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei C:\Users\stephan\Documents\ComdirectPostboxDownloader\Download.ps1:29 Zeichen:32
+ $ChromeDriver.FindElementByName <<<< ("param1").SendKeys($settings.user)
    + CategoryInfo          : InvalidOperation: (FindElementByName:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull
 
Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei C:\Users\stephan\Documents\ComdirectPostboxDownloader\Download.ps1:30 Zeichen:32
+ $ChromeDriver.FindElementByName <<<< ("param3").SendKeys($settings.pass)
    + CategoryInfo          : InvalidOperation: (FindElementByName:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull
 
Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei C:\Users\stephan\Documents\ComdirectPostboxDownloader\Download.ps1:31 Zeichen:30
+ $ChromeDriver.FindElementById <<<< ("loginAction").Click()
    + CategoryInfo          : InvalidOperation: (FindElementById:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull
 
Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei C:\Users\stephan\Documents\ComdirectPostboxDownloader\Download.ps1:34 Zeichen:23
+ $ChromeDriver.Navigate <<<< ().GoToUrl("https://kunde.comdirect.de/itx/posteingangsuche")
    + CategoryInfo          : InvalidOperation: (Navigate:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull
 

Jippie
Autor ★
10 Beiträge

ist mir alles zu kompliziert und aufwändig - ich suche mir einfach eine andere Bank!

Julien
Autor
3 Beiträge

Hallo,

 

danke für das Tool. Leider bekomme ich immer eine Fehlermeldung. Ich denke es hängt mit der Angabe für den Ordner zusammen, wo die Dateien gespeichert werden müssen. Wie ist die richtige Syntax in der settings.ini für den Ordner?

 

Danke!

 

Line |
 116 |          wget $pdf -WebSession $session -OutFile $postBoxDir\$text
     |          ~~~~
     | The term 'wget' is not recognized as the name of a cmdlet, function, script file, or operable program.Check the spelling of the name, or if a path was included, verify that the path is correct and try
     | again.

Ihr Nickname
Experte ★★★
636 Beiträge

wget ist ein Kommandozeilen-Tool.

Unter welchem Betriebssystem willst Du das ausführen?