Ich versuche, ein kleines Stück Software zu schreiben, die sich in mintos.com anmeldet, und speichert die Kontoübersichtsseite (die nach einer erfolgreichen Anmeldung angezeigt wird) in einer HTML-Datei. Ich habe verschiedene Ansätze ausprobiert, und dies ist meine aktuelle Version.Mintos.com Login mit Python-Anfragen
import requests
import sys
import codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
username = 'abc'
password = '123'
loginUrl = 'https://www.mintos.com/en/login'
resp = requests.get(loginUrl, auth=(username, password))
file = codecs.open("mint.html", "w", "UTF-8")
file.write(resp.text)
file.close()
Wenn ich den Code ausführen, ich spare nur die Originalseite, nicht die, die ich soll, wenn in protokolliert werden. Ich glaube, ich bin durcheinander die Login (ich meine ... es sonst nicht viel zu vermasseln). Ich habe schon eine peinliche Zeit mit diesem Problem verbracht.
Edit: Ich habe auch versucht, etwas entlang der Linien von:
import requests
import sys
import codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
loginUrl = "https://www.mintos.com/en/login";
username = "abc"
password = "123"
payload = {"username": username, "password": password}
with requests.session() as s:
resp = s.post(loginUrl, data = payload)
file = codecs.open("mint.html", "w", "UTF-8")
file.write(resp.text)
file.close()
Edit 2: Eine andere nicht funktionierende Version, diesmal mit _csrf_token
with requests.session() as s:
resp = s.get(loginUrl)
toFind = '_csrf_token" value="'
splited = resp.text.split(toFind)[1]
_csrf_token = splited.split('"',1)[0]
payload = {"_username": _username, "_password": _password, "_csrf_token": _csrf_token}
final = s.post(loginUrl, data = payload)
file = codecs.open("mint.html", "w", "UTF-8")
file.write(final.text)
file.close()
Aber ich immer noch das gleiche Ergebnis. Die heruntergeladene Seite hat das gleiche Token wie das, das ich extrahiere.
Final Edit: Ich habe es funktioniert, und ich fühle mich jetzt dumm. Ich brauchte „‚https://www.mintos.com/en/login/check‘wie meine loginUrl zu verwenden.
Habe das nicht über Auth, gut zu wissen. Ich habe versucht, alredy etwas entlang der Linien von dieser: import fordert import sys Import Codecs sys.stdout = codecs.getwriter ("utf-8") (sys.stdout.detach()) loginUrl = " https://www.mintos.com/de/login "; username = "abc" password = "123" Payload = { "username": Benutzername, "Passwort": Passwort} mit requests.session() als s: \t resp = s.post (loginUrl, data = Nutzlast) \t file = codecs.open ("mint.html", "w", "UTF-8") \t file.write (resp.text) \t file.close(), aber das hat nicht arbeite entweder. – Daniel
Ich habe mein OP aktualisiert, um eine Version mit POST hinzuzufügen, die ich ausprobiert habe. – Daniel
Das kann nicht funktionieren. Nimm es nicht als Vorwurf, aber weißt du, wie HTML-Formulare funktionieren? Die auf mintos.com hat die Felder '_username' und' _password' und Sie geben ihnen Werte für 'Benutzername' und' Passwort' ... –