Mit python-requests-Bibliothek-login auf website
Habe ich mich durch SO viele threads auf, wie zum erstellen einer Sitzung mit dem Anfragen Bibliothek, aber keine der Methoden, die ich versuchte eigentlich logge mich ein. Ich habe sehr wenig Erfahrung mit web-design und-Protokolle, also bitte jegliche Grundlagen, die ich brauchen könnte, zu verstehen. Hier ist, was ich Tue:
import requests
EMAIL = 'my_email'
PASSWORD = 'my_pw'
URL = 'https://account.guildwars2.com/login'
session = requests.session()
login_data = dict(username=EMAIL, password=PASSWORD)
r = session.post(URL, data=login_data)
req = session.get('https://leaderboards.guildwars2.com/en/na/achievements/guild/Darkhaven%20Elite')
print req.content
Den Inhalt, den ich sehe, ist der Inhalt, den ich sehen würde, wenn ich nicht angemeldet.
Gibt es etwas falsch über meine syntax, oder ist das problem durch die Art und Weise der login-Seite, ich bin Zugriff auf ist?
Es hängt davon ab, wie die Website erwartet, dass die session-Informationen gesendet werden, um. Session-Objekte werden automatisch zu übernehmen Sitzungen weitergegeben über cookies, aber nicht die Sitzungen, die erfordern, dass eine ID mit übergeben werden, in anderer Hinsicht, z.B. als query-string an die URL—was Häufig in älteren browser-games. Für diejenigen, die in anderen Fällen müssen Sie es manuell tun.
Sowieso, das erste, was zu tun ist, um an die URLs in der Adressleiste, wenn Sie sich in das Spiel in Ihrem browser. Wenn es offensichtlich nichts gibt, verwenden Sie eine browser-Erweiterung, die protokollieren oder aufzeichnen der gesendeten Header für jede Anfrage, um zu sehen, was dort passiert. Sobald Sie wissen, was Sie fehlen, sollte es ein leichtes sein, den code zu schreiben, füllt es in (oder, wenn es für Euch nicht einfach zu schreiben, es sollte zumindest leicht sein, für andere zu schreiben, nachdem Sie es hier posten).
Auch nicht, Guild Wars 2 haben eine API, die Sie verwenden können, statt zu versuchen, kratzen Sie die Benutzer-zugewandten-browser-Schnittstelle?
Sie tun, aber es scheint sehr begrenzt, gerade jetzt. Es liefert nicht die benötigte Funktionalität. wiki.guildwars2.com/wiki/API
Ja, es gibt keinen anderen Weg, um den Zugriff auf die Informationen, die ich Suche. Die "Rangliste" für eine bestimmte Gilde ist nur verfügbar, wenn Sie angemeldet sind und ein Mitglied dieser Gilde. Die Reproduktion dieser greift auf die in einem browser funktioniert einwandfrei. Die URLs ändern sich nicht, wenn Sie eingetragen sind, und nach der Anmeldung in der browser leitet mich zu einem generischen account.guildwars2.com/account/download URL
Sowieso, das erste, was zu tun ist, um an die URLs in der Adressleiste, wenn Sie sich in das Spiel in Ihrem browser. Wenn es offensichtlich nichts gibt, verwenden Sie eine browser-Erweiterung, die protokollieren oder aufzeichnen der gesendeten Header für jede Anfrage, um zu sehen, was dort passiert. Sobald Sie wissen, was Sie fehlen, sollte es ein leichtes sein, den code zu schreiben, füllt es in (oder, wenn es für Euch nicht einfach zu schreiben, es sollte zumindest leicht sein, für andere zu schreiben, nachdem Sie es hier posten).
Auch nicht, Guild Wars 2 haben eine API, die Sie verwenden können, statt zu versuchen, kratzen Sie die Benutzer-zugewandten-browser-Schnittstelle?
Sie tun, aber es scheint sehr begrenzt, gerade jetzt. Es liefert nicht die benötigte Funktionalität. wiki.guildwars2.com/wiki/API
Ja, es gibt keinen anderen Weg, um den Zugriff auf die Informationen, die ich Suche. Die "Rangliste" für eine bestimmte Gilde ist nur verfügbar, wenn Sie angemeldet sind und ein Mitglied dieser Gilde. Die Reproduktion dieser greift auf die in einem browser funktioniert einwandfrei. Die URLs ändern sich nicht, wenn Sie eingetragen sind, und nach der Anmeldung in der browser leitet mich zu einem generischen account.guildwars2.com/account/download URL
InformationsquelleAutor sebo | 2013-06-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
@DanAlbert wies darauf hin, dass ich Ihnen erklärte, dass mit HTTP-Auth, das ist nicht, was Sie zu tun versuchen. Ich nahm an, da sah alles richtig, dass es könnte nur sein, HTTP-Auth, die Sie benötigt.
Jedoch das betrachten der form wie es aussieht, vielleicht sind Sie einfach nur mit den falschen Variablen-Namen in Ihrem dict:
Wenn man sich die form es erwarten, dass die Variablen "email" und "Passwort". Haben Sie "Benutzername" und "Passwort"
Sowieso, HTH
DanAlbert ist richtig, den Hinweis auf das, was ich versuche zu erreichen.
Ich bearbeitet meine Antwort kurz nach, er wies darauf hin,. Ich bin mir nicht sicher, wenn Sie nahm einen Blick, aber die Guild Wars login erwartet zwei post-Variable 'email' und 'Passwort', aber Sie 'username' und 'password'. Ich denke, es wird funktionieren, wenn Sie den Benutzernamen ändern, um E-Mail.
Ich habe versucht, die änderung, die Sie vorgeschlagen, aber es immer noch nicht, logge mich ein als erwartet. Vielen Dank für Ihren Vorschlag aber.
Ich habe versucht, ein Konto zu testen es selbst, aber es scheint zu verlangen, den Kauf einer Seriennummer. Also ich denke, ich bin aus Optionen. Lassen Sie uns wissen, wenn Sie Holen Sie sich jede neue information. Viel Glück!
InformationsquelleAutor