Steffen: Kontoauszüge abholen

Hallo,

ich verwalte einen kleinen Webshop. Beliebte Zahlungsweise ist Vorkasse.
Nun ist es etwas müßig mehrmals täglich die Kontoauszüge online abzurufen und evtl. eingehende Zahlungen mit den offenen Bestellungen abzugleichen (Ich betreibe den Shop eher nebenbei).

Ich suche nun nach einer Möglichkeit, ein Programm zu schreiben, dass:

  • sich bei der Bank mit meinem Benutzernamen / PW anmeldet
  • die Kontoauszüge abruft
  • die Informationen parst
  • die bezahlten Bestellungen in der DB markiert.

Beim ersten Punkt finde ich aber keinen richtigen Einstieg.
Hat jemand von Euch so etwas schon mal gemacht bzw. kann mir Tips geben?

Gruß

Steffen

  1. Tach!

    Ich suche nun nach einer Möglichkeit, ein Programm zu schreiben, dass:

    • sich bei der Bank mit meinem Benutzernamen / PW anmeldet

    Ein Browser macht nichts anderes als ganz normale Web-Requests. Die kann man mit jedem Tool, das solche machen kann, nachbilden. Beim Analysieren helfen können die üblichen in den Browsern integrierten oder nachrüstbaren Werkzeuge, à la Firebug für den Firefox. Die haben alle eine Netzwerk-Überwachung eingebaut, mit der man das Request-Response-Verhalten anschauen kann.

    dedlfix.

    1. Hi,

      Ein Browser macht nichts anderes als ganz normale Web-Requests.

      Meinst Du wiklich das ist mit einem einfachen "nachbauen" des Browsers Requests getan?
      Natürlich kann man (fast) alles, was ein Mensch zusammen mit einem Browser über das Internet schickt, auch per Software nachbilden.
      Aber ich denke, die Banken haben da allerlei Steine in dn Weg gelegt, damit man das eben nicht _so_ einfach machen kann.

      Hast Du da Erfahrungen oder denkst Du das einfach nur?

      Gruß
      Steffen

      1. Ich denke dass ist nicht so einfach. Wir haben erst letzten Monat ein ähnliches Projekt gehabt. Dabei haben wir über Screen Scraping Daten von anderen Webseiten geholt. Das waren ganz normale Webseiten. Und selbst da waren "Sicherheitsmechanismen" (ob gewollt oder nicht) eingebaut. So konnte man z.B. die Daten erst abfragen, wenn man auf einer anderen Seite einen Request ausgelöst hat und einen Cookie gespeichert hatte.

        Ich würde einfach mal darauf tippen, dass dir die entsprechende Bank mehr weiter helfen kann als ein Forum ;). Zumal du ja nichts illegales vorhast. Vielleicht haben die schon fertige Lösungen für sowas. Ich kann mir nicht vorstellen, dass z.B. Amazon 1 Millionen Buchungen am Tag manuell durchgeht.

        Gruß
        Ausgebuchter
        T-Rex

        1. Hi,

          Ich würde einfach mal darauf tippen, dass dir die entsprechende Bank mehr weiter helfen kann

          Ich hab in diesem Fall noch nicht nachgefragt, aber wie ich würde eine hohe Wette eingehen, als Antwort etwas wie "Wir empfehlen Ihnen, eine entsprechende Software zu verwenden" zu bekommen.
          Banken haben meist schon fähige Leute die sich damit auskennen. An die kommet amn aber als "kleiner Kunde" kaum heran. Die "normalen" Berateter für Privat- oder kleine Firmenkunden können meist nicht viel mehr als Ihre Krawatte zu binden und Standardantworten zu geben. Das ist (leider) meine Erfahrung von über 20 Jahren mit verschiedenen Banken.

          Ich kann mir nicht vorstellen, dass z.B. Amazon 1 Millionen Buchungen am Tag manuell durchgeht.

          Sicher geht es. Es ist nur die Frage wie und mit welchem Aufwand. Da habe ich nicht die gleiche Ausgangsposition wie Amazon.
          Allerdings auch nicht die gleichen Anforderungen. Ich möchte "nur" die Kontoauszüge abholen.
          Wahrscheinlich läuft das auf eine HBCI Schnittstelle hinaus. Ich ahbe jetzt schon einige Ansätze im Web gefunden, wo Leute so etwas in PHP (um es dann einfach auf dem Server per Cronjop ablaufen zu lassen) umsetzen wollten. Allerdings sind die meisten, die ich gefunden habe, wohl irgendwann abgestorben.

          Gruß

          Steffen

          1. 1. Zum einen würde ich dann einfach mal einen anderen Weg gehen, wenn du immer nur bei den Krawatten Bindern landest. Behaupte doch mal du hättest eine Sicherheitslücke gefunden, die du nur einem Techniker sagen kannst, weil du angst hast, man könnte sie ausnutzen.

            2. Bei meiner Bank (Sparkasse), kann man sich die Kontoauszüge als CSV Speichern. Das wäre doch auch eine Möglichkeit. Vollautomatisch wäre das nicht, aber man würde sich ein paar Minuten oder Stunden Zeit sparen!?

            Gruß
            Sparkassen Geldbeschaffer
            T-Rex

          2. Ich ahbe jetzt schon einige Ansätze im Web gefunden, wo Leute so etwas in PHP (um es dann einfach auf dem Server per Cronjop ablaufen zu lassen) umsetzen wollten. Allerdings sind die meisten, die ich gefunden habe, wohl irgendwann abgestorben.

            Das ist der entscheidende Punkt. Kann dir jederzeit passieren, dass dein Mühevoll gefrickelter Bot scheitert, weil die böse Bank etwas geändert hat. Entweder die Bank bietet eine wohl definierte Schnittstelle oder eben nicht. Wen das zu sehr stört, muss sich eine Bank suchen, die das tut.

          3. Ich ahbe jetzt schon einige Ansätze im Web gefunden, wo Leute so etwas in PHP (um es dann einfach auf dem Server per Cronjop ablaufen zu lassen) umsetzen wollten.

            Wieso wollten? Ich habe vor vielen (10?)Jahren sowas mal mit Perl gemacht. (Also meine Kontobewegungen bei der Sparkasse abholen und in eine MySQL-Datenbank schreiben). Das größte Problem war das Parsen der erhaltenen Daten. Das vor allem deswegen, weil ich damals ein blutiger Anfänger war.

            Es hat übrigens prima funktioniert.

            Jörg Reinholz

        2. Tech,

          Und selbst da waren "Sicherheitsmechanismen" (ob gewollt oder nicht) eingebaut. So konnte man z.B. die Daten erst abfragen, wenn man auf einer anderen Seite einen Request ausgelöst hat und einen Cookie gespeichert hatte.

          was soll daran ein Problem sein? Sowas macht man mit curl in einer Minute.
          Typisches Vorgehen bei sowas, wenn man es einfach haben will:

          man spielt das Prozedere mit seinem Browser durch. Hierzu bietet sich zb. lynx an. Vielleicht notiert man sich noch das eine oder andere. Man achte auf die richtigen Header, man achte auf einen geeigneten User-Agenten, man achte auf Cookies.

          zusätzlich kann man gerne das ganze Prozedere auch nochmal mit einem GUI-Browser durchspielen und tolle Analysetools nutzen: firebug zum Beispiel. Cookies angucken.

          dann das ganze als kleines script, meinetwegen in perl oder python oder bash oder, wenns sein muss, php nachbauen. Da ist nichts, was intelligente, menschliche Entscheidung benötigen würde.

          happy hacking
          phreaker

          1. was soll daran ein Problem sein? Sowas macht man mit curl in einer Minute.

            Das Problem fängt bei "il" an und hört bei "Legal" auf. Sobald eine technische Hürde überwinden werden muss, wird ein curl Request schnell illegal: http://de.wikipedia.org/wiki/Screen_Scraping#Anbieterseitige_Abwehrma.C3.9Fnahmen

            Desweiteren kommen noch curl Abwehr Mechanismen hinzu.

            Gruß
            Schnellschusskevlar
            T-Rex

            1. Tach!

              was soll daran ein Problem sein? Sowas macht man mit curl in einer Minute.
              Das Problem fängt bei "il" an und hört bei "Legal" auf.

              Nenne dazu bitte die rechtliche Grundlage!

              Sobald eine technische Hürde überwinden werden muss, wird ein curl Request schnell illegal: http://de.wikipedia.org/wiki/Screen_Scraping#Anbieterseitige_Abwehrma.C3.9Fnahmen

              Ein Login ist auch eine technische Hürde. Deswegen ist der Besuch einer Bankenseite, egal mit welcher Art von Browser, noch lange nicht illegal. Der verlinkte Artikel erwähnt weiter unten allein das Urheberrecht. Dies wird jedoch mit dem beabsichtigen Vorgang nicht beeinträchtigt - falls es überhaupt zum Tragen kommt. Die Kontenbewegungsdaten unterliegen sicherlich nicht dem Urheberrecht, und die Webseite drumherum abzurufen ist Voraussetzung für einen gewöhnlichen und gewollten Besuch der Kunden.

              Was eventuell verletzt werden könnte, wäre ein Vertrag zwischen der Bank und dem Anwender, wenn dieser eine solche Nutzung untersagt. Schließlich gibt es ja offizielle für die automatische Datenübertragung vorgesehene Schnittstellen.

              Diese wäre auch aus technischer Sicht vorzuziehen, weil dabei nicht viel mehr als die notwendigen Daten übertragen werden. Beim Webseiten-Auslesen fallen zwar die Requests nach den Bildern und anderen nebensächlichen Ressourcen weg (das tun sie aber auch, wenn der Browser sie aus dem Cache holen kann), aber der Rest des HTMLs für die Bedienelemente und so weiter wird immer überflüssigerweise übertragen. Ebenso könnten bereits abgefragte Daten zu überflüssigen Verkehr führen, wenn es keine "seit meinem letzten Besuch"-Funktionalität gibt.

              Desweiteren kommen noch curl Abwehr Mechanismen hinzu.

              Nichts unterscheidet einen Curl-Request von einem Browser-Request, wenn man dieselben Header verwendet. Natürlich ist es notwendig, zuerst ein Login nachzubilden, um eine Session und die dazu notwendigen Daten zu bekommen. Genauso geht auch ein Nutzer mit einem Browser vor.

              dedlfix.

              1. Mist Sorry, dachte der entscheidende Teil steht bei Wikipedia.

                http://www.rechtzweinull.de/archives/100-Screen-Scraping-Wann-ist-das-Auslesen-und-die-Veroeffentlichung-fremder-Daten-zulaessig.html

                • technische Vorkehrungen gegen Screen-Scraping dürfen nicht umgangen werden

                Wenn man vorher ein Cookie abholen muss bzw. ein Login ausführt ist das für mich eine Vorkehrung gegen Screen-Scraping.

                Gruß
                Vorkehrung treffender
                T-Rex

                1. Lieber T-Rex,

                  http://www.rechtzweinull.de/archives/100-Screen-Scraping-Wann-ist-das-Auslesen-und-die-Veroeffentlichung-fremder-Daten-zulaessig.html

                  der OP wollte doch nichts veröffentlichen, sondern die für eine automatisierte Bearbeitung von Geschäftsvorgängen notwendigen Daten erheben!

                  Liebe Grüße,

                  Felix Riesterer.

                  --
                  ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
                  1. Hallo,

                    http://www.rechtzweinull.de/archives/100-Screen-Scraping-Wann-ist-das-Auslesen-und-die-Veroeffentlichung-fremder-Daten-zulaessig.html
                    der OP wollte doch nichts veröffentlichen, sondern die für eine automatisierte Bearbeitung von Geschäftsvorgängen notwendigen Daten erheben!

                    noch dazu für die Bearbeitung _seiner_eigenen_ Geschäftsvorgänge!

                    Ciao,
                     Martin

                    --
                    Die letzten Worte des Fallschirmspringers:
                    ELENDE SCHEISSMOTTEN!!
                    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                    1. noch dazu für die Bearbeitung _seiner_eigenen_ Geschäftsvorgänge!

                      Na wenn ihr das alle so sicher wisst. Ich weiß es nicht sicher. Und nur weil die Bank die Daten zur Verfügung stellt sind es noch lange nicht seine. Ich bin aber kein Rechtsanwalt und mein Rechtsverständnis reicht auch nur begrenzt aus um hier einen sicheren Rat zu geben.

                      Ich denke einefach, in einem Land wo der Staat bald vorgibt welches Saatgut man verwenden darf und welches nicht, sollte man sich nicht darauf verlassen dass alle Daten einem selbst gehören. Vor allem nicht wenn eine Bank der Datenhalter ist.

                      Was ich wollte ist jedenfalls einfach mal etwas zum nachdenken zu geben. Denn einfach curl auf - Daten raus, so einfach ist es dann doch nicht.

                      Gruß
                      Rechtsloser
                      T-Rex

                2. Tach!

                  Mist Sorry, dachte der entscheidende Teil steht bei Wikipedia.
                  http://www.rechtzweinull.de/archives/100-Screen-Scraping-Wann-ist-das-Auslesen-und-die-Veroeffentlichung-fremder-Daten-zulaessig.html

                  Ich seh da nichts, was auf das Szenario des OP zutreffen würde. Er möchte lediglich die Daten, die die Bank ihm sowieso zur Verfügung stellen muss, mit etwas technischer Hilfe bekommen.

                  • technische Vorkehrungen gegen Screen-Scraping dürfen nicht umgangen werden
                    Wenn man vorher ein Cookie abholen muss bzw. ein Login ausführt ist das für mich eine Vorkehrung gegen Screen-Scraping.

                  Nö, das Cookie wird eine Session-ID sein und ist damit eine notwendige Voraussetzung, um im zustandslosen Web zustandsbehaftete Vorgänge durchführen zu können. Sprich, dass der Client wiedererkannt wird und somit seine Requests eindeutig seiner Anmeldung zugeordnet werden können. Alternative wäre HTTP-Authentication, was aber aus ästhetischen Gründen nicht gern verwendet wird.

                  dedlfix.

                3. Wann-ist-das-Auslesen-und-die-Veroeffentlichung-fremder-Daten-zulaessig

                  Es geht um das Auslesen UND die Veröffentlichung FREMDER Daten.

                  Erste Verfolgungshürde: Die Daten sollen ja nicht veröffentlicht, sondern in der eigenen EDV weiterverarbeitet werden. Zu dem Zweck werden die ja auch von der Bank vertragsgemäß zur Verfügung gestellt.

                  Zweite Verfolgungshürde: Die mir von der Bank vertragsgemäß zur Verfügung gestellten Daten rufe ich ab. Danach sind das MEINE Daten.

                  Ob ich das mit einem klassischem Browser mache, ob ich das mit curl, wget oder gar telnet mache geht die Bank kaum was an. Zu dem kann die das (wenn ich es richtig mache) auch nicht fest stellen.

                  Einfacher sicherer und bequemer ist es allerdings, sich bei der Bank ganz freundlich nach der API für den automatischen Abruf zu erkundigen und ggf. freischalten zu lassen. Dann bekommt nämlich auch Hinweise per Mail, wenn sich was ändert oder wann und voraussichtlich wie lange das System geplant wegen Wartungen etc. nicht erreichbar ist.

                  Möglicherweise will die Bank dafür eine Gebühr. Aber glaube mir, die ist so kalkuliert, dass Du besser fährst, wenn Du den Zoll zahlst.

                  Jörg Reinholz

            2. Tech!

              Desweiteren kommen noch curl Abwehr Mechanismen hinzu.

              curl-Abwehr?

              1. Hallo,

                curl-Abwehr?

                Könnte man (als einer, der nicht will, dass seien Seite ge"curlt" wird) nicht ein Javascript einbauen, dass nachdem die Seite fertig geladen ist, den html code etwas "umschreibt".
                Damit würde z.B. die ursprüngliche Seite eine etwas andere action beim Formularabschicken ausführen als die per js veränderte und wäre somit erkennbar.

                Oder wird die JS Verabeitung eines Browsers in curl "voll" nachgebildet?

                Gruß

                Ralf

                1. Tach!

                  Könnte man (als einer, der nicht will, dass seien Seite ge"curlt" wird) nicht ein Javascript einbauen, dass nachdem die Seite fertig geladen ist, den html code etwas "umschreibt".
                  Damit würde z.B. die ursprüngliche Seite eine etwas andere action beim Formularabschicken ausführen als die per js veränderte und wäre somit erkennbar.

                  Könnte man, bringt aber letztlich nicht viel außer Mehrarbeit. Irgendwann ist nur der Aufwand höher als der Nutzen - fragt sich nur auf wessen Seite. Relevant sind die für den nächsten Request notwendigen Daten, und das sind nur die Formularfeld-Namen. Wenn das Javascript-Script nicht jedes Mal komplett anders aussieht, kann man es analysieren und weiß, wo die notwendigen Daten (Feldnamen) extrahiert werden können, um sie im eigenen Request weiterzuverwenden. Zur Not muss man eben den Code, der sie berechnet, irgendwie auswerten oder laufen lassen.

                  Oder wird die JS Verabeitung eines Browsers in curl "voll" nachgebildet?

                  Nein, muss auch nicht. Es gibt jedoch sicherlich JavaScript-Engines, die man in eigene Projekte einbauen kann.

                  dedlfix.

                2. Tech!

                  curl-Abwehr?

                  Könnte man (als einer, der nicht will, dass seien Seite ge"curlt" wird) nicht ein Javascript einbauen, dass nachdem die Seite fertig geladen ist, den html code etwas "umschreibt".
                  Damit würde z.B. die ursprüngliche Seite eine etwas andere action beim Formularabschicken ausführen als die per js veränderte und wäre somit erkennbar.

                  solche Spielchen machen sicher manche. Aber eine sichere "Abwehr" ist das keineswegs. Mehraufwand vielleicht.

                  Abgesehen davon kann man JavaScript _de_aktivieren. Dann geht das Formular nicht mehr. Wundert aber heutzutage auch keinen mehr groß.

                  Oder wird die JS Verabeitung eines Browsers in curl "voll" nachgebildet?

                  curl ist kein Interpreter. curl ist ein Programm zum Transfer von Daten in Netzwerken. Es unterstützt eine gute Handvoll schöner, netter Protokolle. Man kann Cookies lesen und setzen.  Das reicht.

              2. curl-Abwehr?

                z.B. Captchas :D

                Gruß
                aus anderen Posts klauender
                T-Rex

          2. Hi,

            was soll daran ein Problem sein? Sowas macht man mit curl in einer Minute.

            Ganz so einfach ist es wohl nicht. Wenn ich die Login-Seite der Commerzbank
            mit curl aufrufe, werde ich sofort auf einen ander Seite weiter geleitet. Es wird also irgendwie erkannt, dass dieselbe url einmal mit dem Browser, das andere mal per curl aufgerufen wird.

            Gruß

            Steffen

            1. Tach!

              Ganz so einfach ist es wohl nicht. Wenn ich die Login-Seite der Commerzbank
              mit curl aufrufe, werde ich sofort auf einen ander Seite weiter geleitet. Es wird also irgendwie erkannt, dass dieselbe url einmal mit dem Browser, das andere mal per curl aufgerufen wird.

              Der Webserver der Commerzbank kann nicht hellsehen. curl schickt auch keine andersfarbigen Bytes, anhand derer es erkannt werden könnte. Vielleicht schickt es per Default einen eindeutigen User-Agent-String. Das ist aber nichts, was nicht mit dem UA-String eines Browsers überschrieben werden könnte. Analysiere die HTTP-Header, die dein Browser mit dem Bankserver austauscht und sende sie mit curl in derselben Art und Weise.

              dedlfix.

            2. Tech,

              was soll daran ein Problem sein? Sowas macht man mit curl in einer Minute.

              Ganz so einfach ist es wohl nicht. Wenn ich die Login-Seite der Commerzbank
              mit curl aufrufe, werde ich sofort auf einen ander Seite weiter geleitet. Es wird also irgendwie erkannt, dass dieselbe url einmal mit dem Browser, das andere mal per curl aufgerufen wird.

              also hier fehlen doch die Grundlagen, muss ich feststellen. Beschäftigt euch doch mal ein bisschen mit dem HTTP-Protokoll. WAS soll denn ein Browser haben bzw. machen, was ich mit curl nicht machen kann? Bunte Bytes, wie Dedlfix schön sagte? Oder schickt ein Browser einen "geheimen" Header, der sagt: hey, ich bin nur ein harmloser Browser und kein Hackertool wie curl!

              Grundsätzlich ist es zum Lernen doch sinnvoll, sich mal die Request-Response-Zyklen in Analysetools anzugucken. Insbesondere die HTTP-Request- und Responseheader. Und mal gaaaanz einfach mit telnet spielen.

        3. So konnte man z.B. die Daten erst abfragen, wenn man auf einer anderen Seite einen Request ausgelöst hat und einen Cookie gespeichert hatte.

          Wget (manpage) kann genau dies. Und ist ein typisches Werkzeug für solche Späße.

          Jörg Reinholz

      2. Tach!

        Ein Browser macht nichts anderes als ganz normale Web-Requests.
        Meinst Du wiklich das ist mit einem einfachen "nachbauen" des Browsers Requests getan?

        Ich kann mich da nur wiederholen. Ein Browser macht mit Bank-Seiten nichts anders, als mit anderen Webseiten. Es gibt kein Internet für alles andere und eins für Banken. Hinter allem steckt ein und dieselbe Technik.

        Aber ich denke, die Banken haben da allerlei Steine in dn Weg gelegt, damit man das eben nicht _so_ einfach machen kann.

        Alles was sie da hingelegt haben könnten, kann nur übliche Internet-Technik sein, denn die Browser müssen das schließlich aufrufen können. Die Steine sind also bekannter Natur, wie Cookie, Verschlüsslung mit Zertifikaten, vielleicht auch noch Prüfung auf bestimmte HTTP-Header. Das ist alles genauso nachbildbar, wie es möglich ist, einen Browser zu programmieren.

        dedlfix.

  2. Hallo,

    ich verwalte einen kleinen Webshop. Beliebte Zahlungsweise ist Vorkasse.
    Nun ist es etwas müßig mehrmals täglich die Kontoauszüge online abzurufen und evtl. eingehende Zahlungen mit den offenen Bestellungen abzugleichen (Ich betreibe den Shop eher nebenbei).

    Ich suche nun nach einer Möglichkeit, ein Programm zu schreiben, dass:

    • sich bei der Bank mit meinem Benutzernamen / PW anmeldet
    • die Kontoauszüge abruft
    • die Informationen parst
    • die bezahlten Bestellungen in der DB markiert.

    Man könnte sich mit AutoIT so einen "Robot" zusammenschustern. Ob sinnvoll und richtig eine andere Frage.

    Die Bank kann die Informationen über die DTAUS-Schnittstelle zur Verfügung stellen.
    Wird aber durch die SEPA-Umstellunng zum 1.2.2014 auf ein anderes Format umgestelt.
    Wenn ich mich recht erinnere kann man auf digitale Kontoauszuge umstellen, man sollte aber vorher das mit dem Finanzamt abklären, da es dann keine physischen Belege mehr gibt. Kann Einwände oder Auflagen geben. Deine Bank sollte dir mehr sagen können.

    Bei uns läuft das so: Wir bekommen die digitalen Kontoauszüge. Die werden einmal ausgelesen für den Versand und die Warenwirtschaft. Und anschließend in der Buchhaltung automatisch verbucht. Aber daran denken, es gibt immer Buchhungen da muss manuell nachgearbeitet werden, da die Angaben fehlerhaft sind und nicht automatisch einem Geschäftsvorgang zugeordnet werden können.

  3. Hallo,

    nach einiger Beschäftigung mit diesem Thema stellt es sich für mich so dar:

    Es gibt grundsätzlich zwei Wege, Umsatzdaten des eigenen Bankkontos vom Bankserver in die eigene EDV zu bekommen:

    1. Über von der Bank offiziell zur Verfügung gestellte Schnittstellen (z.B. HBCI)

    + Rechtssicher
     + Technisch robust (wird nicht "heimlich" geändert)
     + Datensätze sind eindeutig

    - Evtl. von der "eigenen" Bank nicht unterstüzt
     - Umsetztung technisch aufwändig

    2. Über einen "Bot" der das manuelle Abrufen der Daten nachahmt

    + rel. einfach umsetzbar

    - Rechtlich zumindest im Graubereich
     - Bei Änderung der "Bankoberfläche" ist eine Anpassung notwendig
     - Diese Änderungen werden (beabsichtigt?) nicht angekündigt (im Gegensatz zu Änderungen der "offiziellen" Schnittstellen)
     - Datensätze sind evtl. nicht eindeutig

    Obwohl der erste Weg sicher der bessere ist, habe ich mich jetzt für eine Bot-Lösung entschieden. Das löst mein Problem erst einmal schneller, meine Ressourcen sind z.Z. einfach zu knapp.
    Ich habe mir ein Autoit Script geschrieben. Das ging schnell und läßt sich bei Bedarf ebenso schnell an eine geänderte Oberfläche anpassen.
    Das Script ruft die Banking Seite auf, gibt die Login Daten ein, hangelt sich bis zur Umsatzseite durch, liest dort den Quellcode aus und gibt ihn in einen Parser. Der extrahiert dann Datensätze aus: Datum, Buchungstext und Betrag und schreibt diese in eine MySQL DB.

    Dabei bin ich auf eine anderes Problem gestoßen, welches wohl für alle diese Bott-Lösungen zutreffen wird (evtl. abhängig von der Bank):

    1. Die Buchunsgsätze haben keine eindeitige ID
    2. Man kann den Zeitraum der abgerufenen Buchungen nur ungenau spezifizieren (z.B. letzter Tag)

    Bei meiner Bank werden die Buchungen mehrmals am Tag aktualisiert. Ich möchte die Daten auch mehrmals am Tag in meinem System aktualiesieren.

    Nun könnte es an einem Tag zwei Buchungen mit dem gleichen Buchungstext und dem gleichen Betrag (z.B. versehntliche Doppelüberweisung eines Kunden, hatte ich schon) geben.
    Es kann nun schwer unterschieden werden, ob der Bot diesen Datensatz zweimal abgeholt hat, oder ob er tatsächlich doppelt bei der Bank vorliegt.
    Hier ist eine Lösung über einen offizielle Schnittstelle sicher vorteilhafter.

    Danke an alle!

    Gruß
    Steffen

    1. Hi,

      Dabei bin ich auf eine anderes Problem gestoßen, welches wohl für alle diese Bott-Lösungen zutreffen wird (evtl. abhängig von der Bank):

      1. Die Buchunsgsätze haben keine eindeitige ID
      2. Man kann den Zeitraum der abgerufenen Buchungen nur ungenau spezifizieren (z.B. letzter Tag)

      Bei meiner Bank werden die Buchungen mehrmals am Tag aktualisiert. Ich möchte die Daten auch mehrmals am Tag in meinem System aktualiesieren.

      Nun könnte es an einem Tag zwei Buchungen mit dem gleichen Buchungstext und dem gleichen Betrag (z.B. versehntliche Doppelüberweisung eines Kunden, hatte ich schon) geben.
      Es kann nun schwer unterschieden werden, ob der Bot diesen Datensatz zweimal abgeholt hat, oder ob er tatsächlich doppelt bei der Bank vorliegt.

      das ist in der Tat problematisch. Meine erste Eingebung war, bereits erfasste Buchungen anhand ihres Vorgängers und ihres Nachfolgers zu identifizieren, aber auch das ist zum Scheitern verurteilt. Denn manche Banken (die Postbank zum Beispiel) verschieben nachträglich auch noch die Reihenfolge der Buchungen so, dass es für die Bank am günstigsten ist. Wenn ich, sagen wir, um 10 Uhr die Umsatzübersicht aufrufe und sehe, dass am Morgen zwei Zahlungseingänge verbucht wurden, und daraufhin beruhigt einen größeren Betrag überweise, dann kann es durchaus sein, dass ich abends nochmal nachsehe und feststelle, dass meine Überweisung, also der Zahlungsausgang, jetzt _vor_ die beiden Zahlungseingänge umsortiert wurde und das Konto dadurch einen Tag lang im Minus war.

      Aber du könntest grundsätzlich die Umsätze der letzten zwei Tage (heute, gestern) abrufen und jeweils das, was mit dem Datum von heute bereits in der DB steht, verwerfen und durch die neu abgefragten Datensätze ersetzen. Damit gilt alles, was du mit dem Datum von heute schon in deiner DB hast, grundsätzlich als "vorläufig".

      Hier ist eine Lösung über einen offizielle Schnittstelle sicher vorteilhafter.

      Ja. Aber wie oft treten solche Mehrdeutigkeiten auf?

      So long,
       Martin

      --
      Mit einem freundlichen Wort und einer Waffe erreicht man mehr, als mit einem freundlichen Wort allein.
        (Al Capone, amerikanische Gangsterlegende)
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      1. Om nah hoo pez nyeetz, Der Martin!

        Denn manche Banken (die Postbank zum Beispiel) verschieben nachträglich auch noch die Reihenfolge der Buchungen so, dass es für die Bank am günstigsten ist. Wenn ich, sagen wir, um 10 Uhr die Umsatzübersicht aufrufe und sehe, dass am Morgen zwei Zahlungseingänge verbucht wurden, und daraufhin beruhigt einen größeren Betrag überweise, dann kann es durchaus sein, dass ich abends nochmal nachsehe und feststelle, dass meine Überweisung, also der Zahlungsausgang, jetzt _vor_ die beiden Zahlungseingänge umsortiert wurde und das Konto dadurch einen Tag lang im Minus war.

        Buchungseingang != Wertstellung

        Die Banken machen das nicht so, wie sie lustig sind, sondern es gibt einen Unterschied zwischen Buchungseingang und tatsächlicher Wertstellung. Das hat man häufig bei Bezahlungen mit der EC-Karte.

        Ich bezahle heute mit der Karte, die Buchung erscheint übermorgen, die Bank muss aber praktisch rückwirkend das Geld bezahlen, also ist die Wertstellung heute.

        Auch umgekehrt gibts das. Ich habe eine Buchung für meine Wassergebühren zum 15.5., die Wertstellung ist aber erst zum 16., weil der WAZV das Geld offensichtlich erst zum 16. angefordert hat.

        Matthias

        --
        Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Che und Cher.

        1. Hallo,

          Denn manche Banken (die Postbank zum Beispiel) verschieben nachträglich auch noch die Reihenfolge der Buchungen so, dass es für die Bank am günstigsten ist. Wenn ich, sagen wir, um 10 Uhr die Umsatzübersicht aufrufe und sehe, dass am Morgen zwei Zahlungseingänge verbucht wurden, und daraufhin beruhigt einen größeren Betrag überweise, dann kann es durchaus sein, dass ich abends nochmal nachsehe und feststelle, dass meine Überweisung, also der Zahlungsausgang, jetzt _vor_ die beiden Zahlungseingänge umsortiert wurde und das Konto dadurch einen Tag lang im Minus war.

          Buchungseingang != Wertstellung

          Die Banken machen das nicht so, wie sie lustig sind, sondern es gibt einen Unterschied zwischen Buchungseingang und tatsächlicher Wertstellung. Das hat man häufig bei Bezahlungen mit der EC-Karte.

          Ich bezahle heute mit der Karte, die Buchung erscheint übermorgen, die Bank muss aber praktisch rückwirkend das Geld bezahlen, also ist die Wertstellung heute.

          das ist zwar noch nachvollziehbar, aber aus meiner Sicht hart an der Grenze zum Betrug. Korrekt wäre, wenn dem Bankkunden der Betrag erst in dem Moment belastet wird, in dem der Zahlungsempfänger ihn einfordert. Lässt er sich dafür zwei Tage Zeit, dann muss das sein Problem sein. Eine rückwirkende Verrechnung dürfte es IMO normalerweise nicht geben - höchstens dann, wenn ein offensichtlicher Fehler korrigiert werden soll. Und auch dann nur zu Lasten desjenigen, der für den Fehler verantwortlich ist.

          Auch umgekehrt gibts das. Ich habe eine Buchung für meine Wassergebühren zum 15.5., die Wertstellung ist aber erst zum 16., weil der WAZV das Geld offensichtlich erst zum 16. angefordert hat.

          Dieses Beispiel ist für mich aber nicht nachvollziehbar. Wenn die Stadtwerke (oder wer auch immer) die Zahlung am 16. anfordern und einziehen, wie kann die Bank dann am 15. schon davon wissen?

          Und bei Zahlungseingängen ist es noch merkwürdiger. Wie kann ein Zahlungseingang schon heute im Online-Kontoauszug erscheinen, sogar schon dem Kontostand gutgeschrieben sein, und dann rückwirkend doch wieder erst einen Tag später verrechnet werden?

          Früher, als Buchungen von Bank zu Bank noch mit Papierbelegen gemacht wurden und irgendwelche armen Socken das Zeug händisch eingeben mussten, war es einzusehen, dass zwischen Abbuchung beim Zahlungspflichtigen und Gutschrift beim Zahlungsempfänger mal drei bis vier Werktage vergingen. Heute, im Zeitalter des elektronischen Zahlungsverkehrs, ist das nicht mehr verständlich. Da sollte eine Transaktion in Sekundenbruchteilen (na, sagen wir, ein paar Sekunden mit dem ganzen Handshaking) komplett abgewickelt sein. Damit sollte eigentlich auch die Diskrepanz zwischen Buchung und Wertstellung hinfällig sein.

          Ciao,
           Martin

          --
          Programmierer (m), seltener auch P~in (w):
          Irdische, i.a. humanoide Lebensform, die in einem komplizierten biochemischen Prozess Kaffee, Cola und Pizza in maschinenlesbaren Programmcode umwandelt.
          P~ bilden gelegentlich mit ihresgleichen kleine Gruppen, sogenannte Communities, sind aber ansonsten meist scheue Einzelgänger.
          P~ sind vorwiegend nachtaktiv und ohne technische Hilfsmittel nur eingeschränkt lebensfähig.
          Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
          1. Om nah hoo pez nyeetz, Der Martin!

            Ich bezahle heute mit der Karte, die Buchung erscheint übermorgen, die Bank muss aber praktisch rückwirkend das Geld bezahlen, also ist die Wertstellung heute.

            das ist zwar noch nachvollziehbar, aber aus meiner Sicht hart an der Grenze zum Betrug. Korrekt wäre, wenn dem Bankkunden der Betrag erst in dem Moment belastet wird, in dem der Zahlungsempfänger ihn einfordert.

            Ich denke, die Veträge mit den Karten-Bezahl-Unternehmen (keine Ahnung wie die heißen) werden so sein. Und wahrscheinlich ist auch die Bank diejenige, die für die Vielzahl von Buchungen eine gewisse Zeit braucht.

            Auch umgekehrt gibts das. Ich habe eine Buchung für meine Wassergebühren zum 15.5., die Wertstellung ist aber erst zum 16., weil der WAZV das Geld offensichtlich erst zum 16. angefordert hat.

            Dieses Beispiel ist für mich aber nicht nachvollziehbar. Wenn die Stadtwerke (oder wer auch immer) die Zahlung am 16. anfordern und einziehen, wie kann die Bank dann am 15. schon davon wissen?

            Wasser- und Abwasserzweckverband

            In dem Fall ist es eine Einzugsermächtigung, die ich erteilt habe.

            Und bei Zahlungseingängen ist es noch merkwürdiger. Wie kann ein Zahlungseingang schon heute im Online-Kontoauszug erscheinen, sogar schon dem Kontostand gutgeschrieben sein, und dann rückwirkend doch wieder erst einen Tag später verrechnet werden?

            Das gibt das Gesetz her, ob bei Girokonten auch, weiß ich nicht. Auf jeden Fall gilt, wenn du dir Geld borgst, musst du für den ersten und letzten Tag Zinsen zahlen, wenn du Geld anlegst, bekommst du für den ersten und letzten Tag keine Zinsen. Das höre ich regelmäßig, wenn ich mit einer 7. Klasse einen Bankbesuch mache.

            Matthias

            --
            Der Unterschied zwischen Java und JavaScript ist größer als der zwischen NOS und Nostalgie.

          2. Om nah hoo pez nyeetz, Der Martin!

            das ist zwar noch nachvollziehbar, aber aus meiner Sicht hart an der Grenze zum Betrug.

            Ergänzung:

            Betrachte die Buchung lediglich als Information und nur die Wertstellung als tatsächliche Kontobewegung. Heutzutage steht die Wertstellung auch auf den Auszügen zumindest Online, beim Sparkassenkonto meines Kindes auch auf dem Papier.

            Matthias

            --
            Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Apfel und Apfelsine.

            1. Hallo,

              das ist zwar noch nachvollziehbar, aber aus meiner Sicht hart an der Grenze zum Betrug.

              Ergänzung:
              Heutzutage steht die Wertstellung auch auf den Auszügen zumindest Online, beim Sparkassenkonto meines Kindes auch auf dem Papier.

              ja, online habe ich dafür auch eine eigene Datumsspalte, deren Sinn mir bisher schleierhaft war - zumal die beiden Datumsangaben oft identisch sind; jetzt bekommt das ein Gesicht.
              Im endgültigen Papier-Kontoauszug steht nur _ein_ Datum (Postbank).

              So long,
               Martin

              --
              There are 10 types of people in the world: Those who understand the binary system, and those who don't.
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
          3. Wertstellung bezeichnet im Bankenwesen das Datum an dem eine Wirksamkeit oder Zinswirksamnkeit für den Buchungsvorgang auf dem Konto eintritt.

            Wertstellungsdatum entspricht dem Valutadatum.

    2. Tach!

      Nun könnte es an einem Tag zwei Buchungen mit dem gleichen Buchungstext und dem gleichen Betrag (z.B. versehntliche Doppelüberweisung eines Kunden, hatte ich schon) geben. Es kann nun schwer unterschieden werden, ob der Bot diesen Datensatz zweimal abgeholt hat, oder ob er tatsächlich doppelt bei der Bank vorliegt. Hier ist eine Lösung über einen offizielle Schnittstelle sicher vorteilhafter.

      Jein, denn kein technisches Hilfsmittel darf dazu führen, dass du die notwendige Sorgfalt oder gar irgendwelche Pflichten vernachlässigst. Als weitere technische Unterstützung kann dir eine Prüfsumme helfen. Die liefert dir der Kontoauszug in Form einer Anzeige des Kontostandes. Wenn der mit der Summe deiner eigenen Datenhaltung nicht mehr übereinstimmt, dann ist das zumindest ein Zeichen, dass etwas faul ist und einer genaueren Analyse bedarf.

      dedlfix.

    3. Hallo,

      Ich habe mir ein Autoit Script geschrieben. Das ging schnell und läßt sich bei Bedarf ebenso schnell an eine geänderte Oberfläche anpassen.
      Das Script ruft die Banking Seite auf, gibt die Login Daten ein, hangelt sich bis zur Umsatzseite durch,

      Wie kommst du am captcha vorbei?

      Viele Grüße
      Siri

      1. Tach!

        Das Script ruft die Banking Seite auf, gibt die Login Daten ein, hangelt sich bis zur Umsatzseite durch,
        Wie kommst du am captcha vorbei?

        Welche Bank nervt denn ihre Kunden mit Captchas?

        Abgesehen davon kann ich mir grad keinen Anwendungsfall vorstellen, wo ein Captcha nach einer erfolgreichen Anmeldung mit nur dem Kunden bekannten Zugangsdaten noch irgendwelche Vorteile bringt.

        dedlfix.

        1. Hallo,

          Welche Bank nervt denn ihre Kunden mit Captchas?

          jede VR z.B., hab aber keinen Überblick über andere Banken. Dachte, das wäre so üblich.

          Viele Grüße
          Siri

          1. Tach!

            Welche Bank nervt denn ihre Kunden mit Captchas?
            jede VR z.B., hab aber keinen Überblick über andere Banken. Dachte, das wäre so üblich.

            Bei der Anmeldung schon? Dann denken die wohl, dass sich nur Automaten mit gekaperten Daten anmelden und können so die Beweislast besser auf den Kunden abschieben?

            dedlfix.

            1. Hallo,

              Bei der Anmeldung schon? Dann denken die wohl, dass sich nur Automaten mit gekaperten Daten anmelden und können so die Beweislast besser auf den Kunden abschieben?

              Irgendwie scheint das Thema ja zu köcheln, wenn jetzt das hier kommt... Neulich im Urlaub habe ich mich mit dem iPhone bei FB angemeldet und dann hat "es" mir "gesagt", dass das nicht das Gerät sei, mit dem ich mich üblicherweise anmelde und ich musste nochmal bestätigen, dass ich ich bin...

              Viele Grüße
              Siri

          2. Hallo,

            Hallo,

            Welche Bank nervt denn ihre Kunden mit Captchas?

            jede VR z.B.

            das halte ich fürn gerücht. meine volksbank mahct sowas nicht

            martachen

            1. Hallo,

              jede VR z.B.

              das halte ich fürn gerücht. meine volksbank mahct sowas nicht

              Siehe mein Link. Es gibt zwei Rechenzentren für VR-Banken (grob Nord und Süd). Kann sein, dass der Norden ein anderes Verfahren hat, ist auch ein eigenes eBanking.

              Viele Grüße
              Siri

            2. Om nah hoo pez nyeetz, martachen!

              Welche Bank nervt denn ihre Kunden mit Captchas?
              jede VR z.B.
              meine volksbank mahct sowas nicht

              meine VR-Bank auch nicht

              Matthias

              --
              Der Unterschied zwischen Java und JavaScript ist größer als der zwischen äh und ähnlich.

              1. jede VR z.B.
                meine volksbank mahct sowas nicht
                meine VR-Bank auch nicht

                Siehe meine Erklärung