Selenium - Cookies

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
Freumel
User
Beiträge: 69
Registriert: Donnerstag 25. Januar 2018, 13:47

Hallöchen zusammen,

ich bin gerade dabei mein Automatisierungstool ein bisschen anzupassen.
In der Basis nutze ich Python Selenium und Google Chrome.

On Top habe ich diese tolle Codezeile in Benutzung:

Code: Alles auswählen

chrome_options.add_argument(f"--user-data-dir={chromeProfilePath}")
Sinn und Zweck ist die Wiederverwendbarkeit vom Local Storage und Cookies.

Nur leider werden die Cookies nicht gesetzt.

Eine Alternative wäre noch das schreiben und Lesen einer Cookie File:

Code: Alles auswählen

# Cookies schreiben
pickle.dump( driver.get_cookies() , open(pickle_file,"wb"))

# Cookies lesen
cookies = pickle.load(open(pickle_file, "rb"))
for cookie in cookies:
	driver.add_cookie(cookie)
Hier haben wir das Problem, das nicht alle Cookies aus der voherigen Session wieder gesetzt werden können.
Ich kann bei Google keine Cookies von Facebook setzen (und umgekehrt)

Konkret ist mir das bei Dropbox aufgefallen:
Ich wollte mich bei Dropbox einloggen, die Cookies speichern, den Browser schließen und beim nächsten Start des Bots ohne Loginprozess Zugriff auf meine Daten haben.
Nun setzt DropBox zur Authentifikation Fremdseitencookies. Bestimmte Cookies kann ich setzen, andere aber nicht. (Die Domains .www.dropbox.com // .dropbox.com // .dropboxstatic.com sehe ich beim manuellen Schnelldurchlauf der Cookies auf Anhieb)

Es geht hier eigentlich nicht um einen Bot zum Schaben geschützter Inhalte!
Viel eher plane ich u.a. meine Django Anwendungen mit Selenium zu testen. Das betrifft die Nutzerseite, wie auch einzelne Analysen die ich eingebaut habe.
Dabei setze ich immer wieder Cookies und möchte diese auch verwenden.

Da meine Anwendung selbst noch nicht einwandfrei läuft, versuche ich mir ein Selenium Testsetup zu erstellen, welches schonmal mit ziemlicher Wahrscheinlichkeit Funktioniert. Dazu lasse ich es gegen bestimmte Dienste laufen die mir spontan einfallen.

Daher nun die Konkrete Frage:
Hat jemand eine Idee wie ich die Cookies wieder in den Chrome Browser kriege?

Mein Sourcecode ist übrigens öffentlich:
https://github.com/JangasCodingplace/sn ... nium_setup

Ist aber noch ein frühes Entwicklungsstadium. Falls bedarf besteht habe ich kein Problem damit die Basis mit anderen zu teilen
Benutzeravatar
__blackjack__
User
Beiträge: 14012
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Bei dem verlinkten Code werden Klassen als (verschachtelte) Namensräume für Konstanten und Funktionen missbraucht. Dafür gibt es bereits Packages und Module. Konstanten werden zudem per Konvention KOMPLETT_GROSS geschrieben.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
Antworten