Login auf website mit python-requests
Ich versuche auf login zu https://www.voxbeam.com/login mit Anfragen zu kratzen-Daten. Ich bin python-Anfänger und ich habe getan, meist tutorials, und einige web-Schaben auf meinem eigenen mit BeautifulSoup.
Blick auf die HTML:
<form id="loginForm" action="https://www.voxbeam.com//login" method="post" autocomplete="off">
<input name="userName" id="userName" class="text auto_focus" placeholder="Username" autocomplete="off" type="text">
<input name="password" id="password" class="password" placeholder="Password" autocomplete="off" type="password">
<input id="challenge" name="challenge" value="78ed64f09c5bcf53ead08d967482bfac" type="hidden">
<input id="hash" name="hash" type="hidden">
Ich verstehen, ich sollte mit der Methode post, und senden Benutzername und Passwort
Ich versuche dieses:
import requests
import webbrowser
url = "https://www.voxbeam.com/login"
login = {'userName': 'xxxxxxxxx',
'password': 'yyyyyyyyy'}
print("Original URL:", url)
r = requests.post(url, data=login)
print("\nNew URL", r.url)
print("Status Code:", r.status_code)
print("History:", r.history)
print("\nRedirection:")
for i in r.history:
print(i.status_code, i.url)
# Open r in the browser to check if I logged in
new = 2 # open in a new tab, if possible
webbrowser.open(r.url, new=new)
Ich erwarte, nach einer erfolgreichen Anmeldung, bekommen in r die URL zum dashboard, so kann ich beginnen, kratzen die Informationen, die ich brauche.
Wenn ich den code mit der Authentifizierung Informationen in den Ort der xxxxxx und yyyyyy, ich bekomme die folgende Ausgabe:
Original URL: https://www.voxbeam.com/login
New URL https://www.voxbeam.com/login
Status Code: 200
History: []
Redirection:
Process finished with exit code 0
Bekomme ich im browser eine neue Registerkarte mit www.voxbeam.com/login
Gibt es etwas falsch in dem code?
Bin ich etwas fehlt in der HTML?
Es ist ok, zu erwarten, um die dashboard-URL in r, oder werden umgeleitet, und versuchen, öffnen Sie die URL in einem browser-tab zu überprüfen visuell die Antwort, oder ich sollte die Dinge auf eine andere Weise?
Lese ich viele ähnliche Fragen hier für ein paar Tage, aber es scheint, dass jede website-Authentifizierung-Prozess ist ein wenig anders, und ich habe http://docs.python-requests.org/en/latest/user/authentication/, die beschreibt andere Methoden, aber ich habe nicht gefunden, was in die HTML würde vorschlagen, ich sollte mit einer von denen anstelle von post
Habe ich versucht zu
r = requests.get(url, auth=('xxxxxxxx', 'yyyyyyyy'))
aber es scheint nicht zu funktionieren.
InformationsquelleAutor Pablo | 2017-04-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie gesagt, man sollte Werte senden alle Felder der form. Diese finden Sie im Web-inspector des Browsers. Dieses Formular senden 2 neben versteckten Werte:
Auch, viele Seiten haben den Schutz von einem bot wie hidden form fields, js, senden Sie codierte Werte, etc. Als Variante könnte man:
1) Verwenden Sie ein, cookies von der manuellen Anmeldung:
2) mit Modul Selen:
Wie zu Lesen login-status-code von Selen Beispiel?
InformationsquelleAutor bl79
Versuchen, geben Sie die URL deutlicher wie folgt :
Diese wird setFocus auf das login-Formular so, dass die POST-Methode verwendet
InformationsquelleAutor Mohammad Jbber
Es ist sehr schwierig, je nachdem, wie die website behandelt den login-Prozess, aber was ich Tat, war, dass ich Charles ist ein proxy-Anwendung, und hörte den Anforderungen, die mein browser gesendet zum server der website, während ich war die Protokollierung manuell ein. Danach kopierte ich die exakt gleichen header und cookie, der gezeigt wurde, in der Charles in meinen eigenen python-code und es funktionierte! Ich nehme an, das cookie und header werden verwendet, um zu verhindern, dass bot-Anmeldung.
InformationsquelleAutor Reza Hosseini
InformationsquelleAutor Parajuli Ram Prasad