Übergeben Sie das aus Python-Anforderungen erhaltene Cookie für die Anmeldesitzung an den Selenium-Browser, um sich anzumelden.

Was sagst du

Angenommen, Sie haben eine Web-App, deren Client etwas anderes als ein Webbrowser sein soll, z. B. eine mobile App.

Angenommen, es gibt keine Anmeldeseite, wie Sie sie in einem typischen Webdienst sehen würden. Dies liegt daran, dass die Client-App ein Anmeldeformular enthält.

Wenn ich jedoch automatische Tests durchführe, möchte ich über den Browser von Selenium darauf zugreifen und sehen, wie es funktioniert. Zu jener Zeit.

Code

python


import requests
from selenium import webdriver

cookie_name = 'session_id'

#Melden Sie sich mit Anfragen an und erstellen Sie ein Sitzungscookie
s = requests.session()
login_data = {
    'email': '[email protected]',
    'password': 'xxxxxxxxxx',
}
res = s.post('https://example.com/login/', data=login_data)
res.raise_for_status()

#Sitzungscookie-Wert
cookie_value = s.cookies.get(cookie_name)

#Starten Sie Firefox
driver = webdriver.Firefox()
#Öffnen Sie im Voraus eine entsprechende Seite für die Zieldomäne.
#Wenn Sie dies nicht tun, fügen Sie hinzu_Ich erhalte eine Fehlermeldung mit einem Cookie
driver.get('https://example.com/')
#Übergeben Sie das durch Anfragen erhaltene Sitzungscookie an Firefox
driver.add_cookie({
        'name': cookie_name,
        'value': cookie_value,
        'domain': 'example.com'})
#Zeigen Sie die Seite nach der Anmeldung an
driver.get('https://example.com/mypage/')

Sie können die Seite jetzt sehen, nachdem Sie sich in Firefox angemeldet haben.

Die Methode add_cookie funktioniert auch in webdriver.Chrome, sodass Sie sich auf die gleiche Weise anmelden können. Möglicherweise funktionieren auch andere Webtreiber.

Beispiel, das nutzlos war

Als ich lokal HTML eines geeigneten Formulars erstellt und dessen Aktion = als Anmelde-URL festgelegt habe, wurde es aus irgendeinem Grund von GET angefordert, auch wenn method = "POST". Es scheint, dass neuere Browser nicht mehr per POST domänenübergreifend senden können, wahrscheinlich aus Sicherheitsgründen.

Wenn Sie Ihr Bestes geben, ein Plan, der möglicherweise nur mit Selen möglich ist

Möglicherweise können Sie sich anmelden, indem Sie die entsprechende Seite der Domäne öffnen, bei der Sie sich in Selenium anmelden, ein Anmeldeformular in JS erstellen und von dort aus einen POST senden. Aber ich habe es nicht getan, weil es schwierig zu sein scheint.

Recommended Posts

Übergeben Sie das aus Python-Anforderungen erhaltene Cookie für die Anmeldesitzung an den Selenium-Browser, um sich anzumelden.
Melden Sie sich mit Anforderungen in Python bei Slack an
Melden Sie sich mit Selenium Python bei Yahoo Business an
Melden Sie sich auf der Website in Python an
So bestimmen Sie die Existenz eines Selenelements in Python
Python im Browser: Brythons Empfehlung
Im Python-Befehl zeigt Python auf Python3.8
[Pfeffer] Übergibt die gesamten JSON-Daten, die durch Python-Anforderung erhalten wurden, an das Tablet.
Sortieren Sie die von Python glob erhaltenen Dateinamen in numerischer Reihenfolge
Eine Geschichte, die nicht funktioniert hat, als ich versucht habe, mich mit dem Python-Anforderungsmodul anzumelden
[Python] So stellen Sie mit Selenium die (Client-) Fenstergröße im Browser ein
Ein Beispiel für die Antwort auf die Referenzfrage der Studiensitzung. Mit Python.
Sortieren durch Angabe einer Spalte im Python Numpy-Array.
Zeigen Sie Python 3 im Browser mit MAMP an
Lesen Sie die Datei Zeile für Zeile mit Python
Lesen Sie die Datei Zeile für Zeile mit Python
[Python] Betreiben Sie den Browser automatisch mit Selenium
Lesen aller in * .py enthaltenen Klassen in dem von Python angegebenen Verzeichnis
Verwendung der C-Bibliothek in Python
Melden Sie sich mit SSH bei einem Remote-Server an
Lassen Sie uns das Git-Commit-Protokoll in Python analysieren!
Dynamisches Ersetzen der nächsten Methode in Python
Zeichnen Sie Diagramme in Julia ... Überlassen Sie die Diagramme Python
So geben Sie die TLS-Version in Python-Anforderungen an
Tipps zum Schreiben werden in Python kurz abgeflacht
So löschen Sie die von Python ausgegebenen Zeichen
So erhalten Sie die Dateien im Ordner [Python]
Loggen Sie sich mit json mit pygogo ein.
Führen Sie Power Query aus, indem Sie Argumente an Python übergeben
Ich möchte den Fortschritt in Python anzeigen!
Öffnen Sie die Seite im geheimen Modus, indem Sie die Browsersprache mit Selenium Python Bindings (Chrome) angeben.
Machen wir einen Sprung in die Fertigungsindustrie, indem wir zusätzlich zu Python das Web nutzen
So rufen Sie den n-ten größten Wert in Python ab
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
Wenn in Python + Selenium "Nachricht: Sitzung nicht erstellt" auftritt
So erhalten Sie den Variablennamen selbst in Python
Laden Sie das durch Anfragen heruntergeladene Bild direkt in S3 hoch
Beachten Sie die häufig verwendeten Optionen in Python + Selen + Chrome
Lesen Sie die XML-Datei anhand des Python-Tutorials
Konvertieren Sie das Bild in .zip mit Python in PDF
Ich war süchtig danach, 2020 mit Selen (+ Python) zu kratzen
Rufen Sie den im Pulldown-Menü Selenium Python VBA ausgewählten Wert ab
Schreiben Sie Daten mit dem Python-Anforderungsmodul in KINTONE
Verschieben Sie die Alphabetzeichenfolge in Python um N Zeichen
So laden Sie Dateien von Selenium of Python in Chrome herunter
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Verwendung des in Lobe in Python erlernten Modells
Versuchen Sie, die in Firefox gespeicherten Anmeldedaten zu entschlüsseln
[Python] So geben Sie Listenwerte der Reihe nach aus
Um das Äquivalent von Rubys ObjectSpace._id2ref in Python zu tun
Ich möchte R-Datensatz mit Python verwenden
Python Open CV hat versucht, das Bild im Text anzuzeigen.
Django super Einführung von Python-Anfängern! Teil 6 Ich habe versucht, die Login-Funktion zu implementieren
Ich habe eine Klasse erstellt, um das Analyseergebnis von MeCab in ndarray mit Python zu erhalten
So überprüfen Sie anhand des Hashwerts, ob der Inhalt des Wörterbuchs in Python identisch ist
[Selenium] Ich möchte den Browser anzeigen, indem ich den Treiber auf dem Host-Betriebssystem von WSL aus drücke