Selenium - Login?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Trem
User
Beiträge: 8
Registriert: Montag 19. Juli 2021, 19:41

Schönen guten Abend,

ich bin neu in der Materie Python.
Ich möchte automatisiert eine Website besuchen und ein Formular ausfüllen. Dies scheitert jedoch schon beim Aufrufen der Webseite.

Wenn ich via Firefox die Seite aufrufe muss ich mich nicht jedes mal einloggen, da wahrscheinlich meine Session noch gültig ist.

Wie kann ich dies jetzt mit Selenium machen? Da das Problem darin besteht, dass ich zum Login jeweils einen Pin eingeben muss, welcher mir per SMS geschickt wird.

Habe es versucht mittels Cookies aber wahrscheinlich ist dies falsch

from selenium import webdriver
driver = webdriver.Firefox(executable_path= "geckodriver.exe")
driver.get_cookie("a")
driver.get('.../prepaid/?from=auth')
driver.add_cookie({"a"})
driver.get_cookie("a")

Ich hoffe es ist irgendwie verständlich.

Diese Projekt wurde schon mit einer GUI im Java Bereich realisiert, ich möchte es aber komfortabler und schlanker haben, deshalb wollte ich zu Python

Danke
Trem
User
Beiträge: 8
Registriert: Montag 19. Juli 2021, 19:41

Ich glaube was mir helfen würde wäre pickle,
jedoch müsste ich mich einmalig manuell einloggen. Ist dies möglich?
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

Wenn es in Java schon realisiert wurde, wie wurde dort das Problem gelöst?
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn du das glaubst, hast du wahrscheinlich sowas hier gefunden: https://stackoverflow.com/questions/150 ... -webdriver

Warum probierst du das nicht aus?
Trem
User
Beiträge: 8
Registriert: Montag 19. Juli 2021, 19:41

Sirius3 hat geschrieben: Dienstag 20. Juli 2021, 07:41 Wenn es in Java schon realisiert wurde, wie wurde dort das Problem gelöst?
Wurde gelöst durch einen Roboter, welche meine Maus bedient.
Möchte ja später auf mechanize umsteigen, jedoch brauche ich erst das Visuelle.
Trem
User
Beiträge: 8
Registriert: Montag 19. Juli 2021, 19:41

__deets__ hat geschrieben: Dienstag 20. Juli 2021, 07:42 Wenn du das glaubst, hast du wahrscheinlich sowas hier gefunden: https://stackoverflow.com/questions/150 ... -webdriver

Warum probierst du das nicht aus?
Dies habe ich schon gefunden, jedoch kriege ich ja keine Cookies, da ich mich ja vorher einloggen muss (manuell). Und dann zu der speziellen Seite navigieren muss. Wüsste nicht wie ich dann die cookies speichern kann.

Daher war jetzt die Idee so wie hier https://www.youtube.com/watch?v=vhjKJ7huN-w
Einen Cookie zu erstellen.
Jedoch habe ich das Problem, dass die IDs länger als 16 Zeichen sind und daher excel mit dem 17. Zeichen nur noch 0000 schreibt.
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das wird doch in dem Beispiel vorgemacht. Du musst eben ein Skript schreiben, dass den Login Durchführt, inklusive SMS Angabe, und DANN die Cookies sichern.

Ich kann das Video gerade nicht schauen, aber sich selbst Cookies zu generieren ist ziemlich sicher Unsinn. Die sind nur gültig wenn sie vom Server kommen.
Trem
User
Beiträge: 8
Registriert: Montag 19. Juli 2021, 19:41

Selbst generieren nicht. Ich nehme den, welchen ich durch das manuelle Aufrufen der Webseite bekomme. Also mittels Webinspektor.
Hmm dann muss ich wahrscheinlich mein Handy doch anschließen, den Code aus der SMS auslesen, damit ich an den Cookie komme.
Schaut mir nämlich sehr komplex aus mit Handy auslesen.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

Trem hat geschrieben: Dienstag 20. Juli 2021, 12:11 Wurde gelöst durch einen Roboter, welche meine Maus bedient.
Möchte ja später auf mechanize umsteigen, jedoch brauche ich erst das Visuelle.
Und der Roboter konnte SMS lesen?
Trem
User
Beiträge: 8
Registriert: Montag 19. Juli 2021, 19:41

Nein, weil schon eine Login Session bestand.
Ich habe mich einmalig in mein Konto eingeloggt. Danach konnte ich die Seite besuchen, als angemeldeter Besucher.
Ist doch hier genauso. Ich bin solange angemeldet, bis ich die Cookies lösche oder sie verfallen.

Jedoch wird bei python nicht auf meinen vorhanden Browser zugegriffen sondern, so wie ich es bei Selenium verstanden habe, ein neue Kopie von einem Browser erstellt ohne Cookies.
Trem
User
Beiträge: 8
Registriert: Montag 19. Juli 2021, 19:41

Bin
__deets__ hat geschrieben: Dienstag 20. Juli 2021, 07:42 Wenn du das glaubst, hast du wahrscheinlich sowas hier gefunden: https://stackoverflow.com/questions/150 ... -webdriver

Warum probierst du das nicht aus?
Diesen Code habe ich jetzt doch verwendet, und ein Workaround gemacht.

Das Skript schläft 1 min. In dieser Zeit logge ich mich ein. Dann rufe ich die Seite nochmal auf und speicher mir den Cookie.
Dies mache ich einmalig bis mein Cookie abgelaufen ist.

Danach wird die Seite einfach mit dem Cookie geöffnet.

Code: Alles auswählen

from selenium import webdriver
import pickle
import time

driver = webdriver.Firefox(executable_path= "C:\geckodriver.exe")
# Speichern des Cookies

#driver.get('prepaid/')
#time.sleep(60)
#driver.get('prepaid/')
#pickle.dump(driver.get_cookies() , open("cookies.pkl","wb"))



driver.get('prepaid/')
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
driver.add_cookie(cookie)
driver.get('prepaid/')
Eine Baustelle beseitigt
Antworten