|
tolter
Anmeldungsdatum: 19. November 2016
Beiträge: 251
|
Ich möchte die Bedienung einer Banking-Webseite automatisieren, d.h. Öffnen der Webseite, Eingabe von Login-Daten, Auswahl eines bestimmten Kontos, Download eines Kontoauszugs usw., also alles, was man normalerweise mit Mausklicks macht.
Ich habe bisher keine vernünftigen Anleitungen dafür im Internet gefunden. Ich habe erfolglos verschiedene Möglichkeiten mit Bash-Scripten, z.B. mit Befehlssendung durch curl oder xdotool versucht. Die Aufzeichnung und das nachfolgende Abspielen von Mausbewegungen funktioniert auch nicht (das soll wohl daran liegen, dass bei mir Wayland läuft). Nur Apache mit PHP habe ich noch nicht probiert. Kann man das überhaupt realisieren? Könnt Ihr mir Webseiten mit verständlichen Anleitungen dafür nennen?
|
|
schwarzheit
Supporter
Anmeldungsdatum: 31. Dezember 2007
Beiträge: 8002
|
Das wird schon aus Sicherheitsgründen nicht gehn. Heutzutage benutzt doch eigentliche jede Bank eine 2FA. Es bedarf also immer einer Useraktion. Das ist denke ich nicht automatisch regelbar.
|
|
Lidux
Anmeldungsdatum: 18. April 2007
Beiträge: 17057
|
Hallo tolter, Genau so ist es .... außerdem eine "dumme" Idee (Sicherheitsaspekt) dies automatisch zu machen. Gruss Lidux
|
|
sh4711
Moderator
Anmeldungsdatum: 13. Februar 2011
Beiträge: 1394
|
tolter schrieb: ...
Kann man das überhaupt realisieren?
Wie die "Vorredner" schon schrieben wird das so eher nicht funktionieren. Alternativ könntest du schauen ob Hibiscus einfacher zu steuern oder zu atomatisieren ist als eine Webseite. Aber du kannst dir das selber programmieren. Das Stichwort hier ist FinTS
Könnt Ihr mir Webseiten mit verständlichen Anleitungen dafür nennen?
Gruß
sh
|
|
shiro
Supporter
Anmeldungsdatum: 20. Juli 2020
Beiträge: 1449
|
Ich möchte die Bedienung einer Banking-Webseite automatisieren ...
Ich gehe davon aus, das dies nur ein Beispiel für eine automatisierte Webseiten-Bedienung ist. Ja die Banken verwenden unterschiedliche 2FA Systeme, die sich aber mit der automatischen Bedienung durchaus kombinieren lassen. Es ist ja in der Regel auch nicht die Authentifizierung sondern oft das automatische Ausfüllen der Forms für Überweisungen und Holen der Kontobewegungen relevant. Das finale Absenden eines Auftrags sollte natürlich nicht automatisiert sondern durch deine manuelle Aktion erfolgen. Dein Hauptproblem scheint aber, dass du dich dem Wayland Diktat unterwerfen willst.
Dies ist eine aus meiner Sicht sehr unausgegorene Software, die hoffentlich beim Anwender irgendwann mal reifen wird. (Sollte man mit Wayland alle Funktionen von "xdotool" zufriedenstellen abbilden können, werde ich mich mit Wayland wieder näher befassen.) Du kannst jedoch mit "xdotool" unter X11 diese Aufgabe durchaus wenn auch nicht elegant lösen. Eleganter geht es, wenn du mit "selenium" Zugriff auf das DOM Objekt des Browsers nimmst und die Teilobjekte (<input>, <button> usw) modifizierst und dann sendest. Je nach Browser kann das aber auch ärgerlich werden, wenn der Browser sich gegen eine Modifikation des DOM sperrt oder die Seite dir via AJAX2 deine Objekte im Hintergrund abändert. Da hilft dann eher "xdotool" und die Nutzung der "key" statt der "mouse" commands. Mit "selenium" kannst du die relevanten Objekte per "id" oder "name" ansprechen (z.B. find_element_by_id), eventuell ausfüllen und aktivieren/absenden. Hier ist es demnach sinnvoll sich die Webseite vorher anzuschauen um die Namen/IDs zu ermitteln und dann die Abläufe in Python zu realisieren. Einen kleinen Einstieg in die API bekommst du hier.
|
|
tolter
(Themenstarter)
Anmeldungsdatum: 19. November 2016
Beiträge: 251
|
@schwarzheit und Lidux, Asche auf mein Haupt! Ich hätte meine Gedankengängen ausführlicher schildern sollen, dann wären Euch die bisherigen Antworten erspart geblieben. Ich bedenke die Sicherheit und 2fA schon. Sonst hätte ich nicht Microsoft und Google von meinen Geräten verbannt (Umstieg auf Linux und GrapheneOS). Meine Idee ist folgende: 1. Öffne die Webseite der Bank durch erste Zeile im Bash-Script: "brave https://...meine.bank.de.../login" 2. Focus auf Brave, Login manuell mit Hilfe von KeepassXC und dem QR-Lesegerät meiner Bank 3. durch Klick auf irgendeine Schaltfläche wieder Focus auf das Script. 4. Start des Scripts (entweder für die gespeicherten Mausklicks oder für die Sendung von Zeichen, z.B. "Tab"=chr(9) oder "Down" oder "Enter" oder Zeichenfolge),
bis der Kontoauszug als CSV heruntergeladen und Logout und Schliessen der Webseite erfolgt ist. 5. automatischer Start meines Libreoffice-Calc-Makros, das noch nicht vorhandene Kontenbewegungen aus der CSV in die (vorher veracrypt-verschlüsselte) ODS-Datei, die die gebuchten und voraussichtlichen Kontenbewegungen (auf Neudeutsch: standing orders) bis Jahresende beinhaltet, einfügt. (Dieses Makro funktioniert bei mir schon) Ich brauche eigentlich nur Hilfe für eine der beiden Versionen aus Punkt 4.
|
|
tolter
(Themenstarter)
Anmeldungsdatum: 19. November 2016
Beiträge: 251
|
sh4711 schrieb: Alternativ könntest du schauen ob Hibiscus einfacher zu steuern oder zu atomatisieren ist als eine Webseite.
Hibiscus und FinTS kannte ich noch nicht. Ínwieweit meine Daten dadurch aber wieder irgendwo anders landen, weiß ich natürlich noch nicht. Werde ich untersuchen.
Ob ich mir das Lernen von Python antue, weiß ich noch nicht. Aber Danke, sh4711.
|
|
tolter
(Themenstarter)
Anmeldungsdatum: 19. November 2016
Beiträge: 251
|
shiro schrieb: Eleganter geht es, wenn du mit "selenium" Zugriff auf das DOM Objekt des Browsers nimmst
Aber selenium bedingt die Installation von Google Chrome. Dann hat doch Google wieder seine schmutzigen Finger im Spiel. Das ist wohl nichts für mich.
|
|
sh4711
Moderator
Anmeldungsdatum: 13. Februar 2011
Beiträge: 1394
|
shiro schrieb: ...
Dies ist eine aus meiner Sicht sehr unausgegorene Software, ...
👍 tolter schrieb: ...
Aber selenium bedingt die Installation von Google Chrome. ...
Bitte prüfe das nochmal. Meines wissens brauchst du nur sudo apt install chromium-chromedriver und das ist opensource.
|
|
shiro
Supporter
Anmeldungsdatum: 20. Juli 2020
Beiträge: 1449
|
Aber selenium bedingt die Installation von Google Chrome
Wo hast du diese Information her? Ok, ich verwende den Browser "Brave" nicht sondern "Firefox". Da ist ein Add-On ladbar. Damit du die Python Bindings bekommst, ist natürlich ein "pip install selenium" sinnvoll. Aber wo siehst du die Anforderung an "Google Chrome"?
|
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11301
Wohnort: München
|
Die modernere Alternative zu Selenium ist Playwright: Playwright_(Software)
|
|
shiro
Supporter
Anmeldungsdatum: 20. Juli 2020
Beiträge: 1449
|
Die modernere Alternative zu Selenium ist Playwright
Na ja, was man so als "Mode" betrachtet ist ja subjektiv. Ich würde es eher so interpretieren:
Wenn du lieber in "JavaScript" schreibst, verwende "Playwright" Wenn du lieber in "Python" schreibst, verwende "Selenium" Wenn du lieber in "bash" schreibst, verwende "xdotool"
Hier mal ein Beispiel für das Ausfüllen einer Überweisung, die über 4 Seiten (Forms) geht mit der Prüfung auf Empfänger/IBAN Match und "uneleganten" "sleep" Wartezeiten.
Das tatsächliche Abschicken der Informationen macht man dann natürlich selbst mit Maus-Klick.
IFS=$'\t' a=( $(xsel -bo ) )
# Beispiel mit 7 durch TAB getrennte Felder im Cliboard
# 0 1 2 3 4 5 6
NAME=( "Bank" "Empfänger" "BIC" "IBAN" "Verw. Zweck (1)" "Betrag [€]" "Verw. Zweck (2)" )
case ${a[0]} in
4 ) WINID=$(xdotool search --name "MeineTestBank.*");
if [ -z "$WINID" ] ; then
notify-send -u critical "MeineTestBank Überweisung" \
"Webseite nicht verfügbar";
else
setxkbmap -layout de && \
xdotool windowactivate $WINID type "${a[1]}" && \
xdotool key Tab type "${a[3]}" && sleep 2 && \
xdotool key Tab Return && sleep 2 && \
xdotool key --delay 500 Tab Tab Tab Return && sleep 1 && \
xdotool key Tab type "${a[5]}" && \
xdotool key Tab Tab type "${a[4]} ${a[6]}";
# ...
esac
|
|
tolter
(Themenstarter)
Anmeldungsdatum: 19. November 2016
Beiträge: 251
|
shiro schrieb: Aber selenium bedingt die Installation von Google Chrome
Wo hast du diese Information her? Ok, ich verwende den Browser "Brave" nicht sondern "Firefox". Da ist ein Add-On ladbar. Damit du die Python Bindings bekommst, ist natürlich ein "pip install selenium" sinnvoll. Aber wo siehst du die Anforderung an "Google Chrome"?
Wenn ich in die Suchmaschine von Brave "linux selenium" eingebe, kommt folgender Text: Um Selenium unter Linux zu verwenden, müssen mehrere Schritte befolgt werden, um die erforderlichen Komponenten zu installieren und zu konfigurieren. Installation von Chrome und ChromeDriver
Zunächst ist es notwendig, Google Chrome zu installieren. Dies kann über das Paket-Management-System erfolgen, z. B. mit apt auf Ubuntu/Debian:
...
Bearbeitet von schwarzheit: Falschen Codeblock entfernt.
|
|
schwarzheit
Supporter
Anmeldungsdatum: 31. Dezember 2007
Beiträge: 8002
|
|
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11301
Wohnort: München
|
shiro schrieb: Ich würde es eher so interpretieren:
Wenn du lieber in "JavaScript" schreibst, verwende "Playwright" Wenn du lieber in "Python" schreibst, verwende "Selenium"
Beide haben Bindings für Python. Playwright macht das Warten auf die Bedienbarkeit von Elementen einer Webseite etwas einfacher (https://playwright.dev/python/docs/locators), was bei über JS nachgeladenen Informationen überaus hilfreich sein kann - das war einer der Punkte bei Selenium, die etwas nervig sein können: https://www.selenium.dev/documentation/webdriver/waits/ Das braucht dann halt noch eine Bilderkennung (oder muss sich auf fehleranfällige sleep-Anweisungen verlassen), weil man nicht weiß, wann ein Element nutzbar ist. Die Tab-Reihenfolge von HTML-Elementen kann sich auch mit der Weiterentwicklung einer Webseite ändern.
|