Ich versuche, eine Web-Seite mit Python-Anfragen-Modul anmelden.Python POST-Anfrage ohne erneutes Laden der Seite
Hier ist das Szenario: Sobald ich das Benutzername Passwort eingeben und auf Senden klicken, wird die Antwort-Webseite erhalten und der Benutzer muss Sicherheitsfragen beantworten.
So
POST anfordern 1 - einreichen Benutzername, Passwort
Antwort 1 - Seite mit Sicherheitsfragen
Dieser Teil recht geradlinig.
Aber für den nächsten Schritt, um die Antworten auf die Sicherheitsfrage zu senden, muss ich eine weitere Postanforderung machen - für die ich die Seite erneut laden muss. Aber sobald ich neu lade, bekomme ich die ursprüngliche Login-Seite zurück (mit Benutzernamen und Passwortfeldern).
Gibt es einen Workaround dafür?
EDIT: Ich verwende requests.Session()
Objekt alle Anfragen durchzuführen
Hier ist der Code
s = requests.Session()
login = {'username': username, 'password': password}
url = 'https://login.xyz.com'
r = s.post(url, data=login)
# r.url is also https://login.xyz.com
answers = {'question1': answer1, 'question2': answer2}
r = s.post(url, data=answers)
Wo Ihr Code ist? Hast du die gleiche 'Session'? – schwobaseggl
Das Ergebnis Ihrer Anmeldung ist höchstwahrscheinlich ein Cookie und eine Weiterleitungs-URL. Versuchen Sie, die gesamte Login-Aktion in einem Browser auszuführen und den Netzwerkverkehr auf dieser Seite zu erfassen (in Firefox oder Chrome können Sie dies auf der Seite Entwicklungstools tun - F12-). Überprüfen Sie jede Anfrage im erfaßten Datenverkehr und versuchen Sie dann entsprechend zu automatisieren. Wenn ich richtig bin, dann sollte die Reihenfolge der Operation sein: posten Sie die Login-Daten, holen Sie die Antwort, analysieren Sie die Antwort für den Authentifizierungs-Cookie, folgen Sie der Weiterleitung mit einer neuen Post-Anfrage, die den Cookie enthält. – BoboDarph
Der Versuch, in Ihrem Beispiel eine Verbindung zur Zielwebsite herzustellen, ohne Zertifikatsprüfungen zu deaktivieren, führt zu einem Fehler, da das SSL-Zertifikat CNAME der Website ungültig ist (möglicherweise selbstsigniert oder gefälscht). Möglicherweise möchten Sie den Antwortcode auf 200 oder etwas überprüfen, bevor Sie etwas anderes an die Website senden. – BoboDarph