1

Ich versuche, diese website zu öffnen und auf die Dashboard-Informationen unter Verwendung requests Bibliothek in Python zugreifen. Das ist eine Art Web-Scraping, aber das Problem ist, dass ich mich nicht anmelden kann. Ich habe verschiedene Methoden ausprobiert, um meine Anmeldedaten zu posten, aber bisher funktioniert nichts.Ich kann mich nicht mit der Anforderungsbibliothek in Python anmelden

Website - https://www.handy.com/login

Anmeldung HTML - <input autofocus="autofocus" class="string email required" id="user_session_email" name="user_session[email]" required="required" size="50" type="email">

HTML Passwort - <input class="password required" id="user_session_password" name="user_session[password]" required="required" size="50" type="password">

Code:

Zuerst habe ich versucht, das name-Attribut verwenden den Benutzernamen und das Passwort

import requests 
url = "https://www.handy.com/login" 
payload = {"user_session[email]": "email or username", "user_session[password]": "password"} 
r = requests.post(url, data=payload) 
print r.status_code 
print r.reason 

Auch mit ID-Attribut von beiden username and password versucht, aber das Problem ist das gleiche. Statuscode ist 500 und Grund ist Internal Server Error. Ich weiß, wie man persistente Sitzungen erstellt, aber ich schätze es, wenn Sie mir helfen können, mich auf der Website anzumelden.

Antwort

1

Zunächst einmal, wenn Authentifizierung erforderlich ist und eine Sitzung für weitere Anforderungen verwaltet werden muss, ist das Objekt requests.session der beabsichtigte Weg.

Dies umfasst das Erstellen eines Sitzungsobjekts und das Senden Ihrer POST-Anfragen.

session = requests.session() r = session.post (url, data = Nutzlast)

Ein weiteres Problem, das Sie haben werden, ist, dass Sie nicht die gleiche Nutzlast als Browser zu senden würde (oder, was noch wichtiger ist, wie der Server erwartet) und das ist der interne Serverfehler.

Wenn Sie Firefox verwenden, können Sie das Netzwerkmonitorfenster mit Strg-Umschalt-Q öffnen, wählen Sie die POST-Anfrage, die der Browser gemacht hat, um Ihre Anmeldedaten zu senden, und gehen Sie zum Tab "params" dies wie:

enter image description here

Also, was Sie zunächst die Session-Objekt verwenden, tun müssen, eine GET Anfrage an die Login-Seite zu machen. Aus dem HTML, das Sie gerade von dieser Anfrage erhalten haben, müssen Sie die authenticity_token analysieren. Dann können Sie dieses Token zusammen mit der E-Mail und dem Passwort verwenden, um die POST-Anfrage zu stellen, die sich für die Site authentifiziert.