HTTP POST und GET mit Cookies für die Authentifizierung in Python

7

Ich versuche ein Python-Programm zu erstellen, das sich mit meiner ID und meinem Passwort bei meiner Universität anmeldet. Dies ist die offizielle Seite für die Anmeldung: Ссылка

Wie Sie vielleicht bemerken, heißen die beiden Felder pr1 und pr2. Die Seite verwendet POST zum Senden der Daten. AUCH gibt es ein Cookie, das heruntergeladen wird, wenn die Seite geladen wird, es ist eine JSESSIONID, die einen zufälligen Wert enthält, der, wie ich verstanden habe, den Header der POST-Methode zurückgibt, um die Anmeldung zu authentifizieren.

Ich habe den folgenden Code geschrieben, aber die Rückgabeseite der GET-Methode sagt "Die Sitzung wurde nicht initialisiert", wahrscheinlich weil der Cookie nicht korrekt zurückgesendet wurde.

%Vor%

Wo setze ich diesen Cookie, damit die Anmeldung authentifiziert wird?

    
Lucas C. Feijo 20.04.2012, 13:18
quelle

5 Antworten

17

Ich würde versuchen, die requests -Bibliothek zu verwenden. Die Dokumentation ist exzellent und der Code ist viel sauberer als mit urllib*

%Vor%

Verwenden Sie eine Sitzung (siehe Kommentar von Piotr), die Cookies verarbeitet allein sieht das Ergebnis so aus

%Vor%

Es scheint gut zu funktionieren, da ich eine "Usuario inexistente" Benachrichtigung für pr1 123456789 und "Senna inválida" mit Ihrer Benutzernummer erhalte.

    
jorgeca 20.04.2012, 14:37
quelle
7

Sie müssen den gleichen "Öffner" verwenden, den Sie für alle Ihre Anfragen erstellt haben, und er wird die Cookies selbständig bearbeiten.

hier ist ein Auszug von etwas, das ich kürzlich geschrieben habe

%Vor%     
MatthieuW 20.04.2012 14:44
quelle
5

Das Konvertieren von MatthieuWs Antwort auf Python 3 ergibt.

%Vor%     
PearsonArtPhoto 17.06.2013 18:19
quelle
1

Ich empfehle Ihnen, mechanize zu verwenden, es handhabt automatisch Sessions / Cookies / Logins für Sie, außerdem stellt es ein urllib- wie API und z formfüllend, damit Sie sich nicht mit der richtigen POST-Anfrage herumschlagen müssen, da sie durch mechanize konstruiert wird.

    
dav1d 20.04.2012 13:24
quelle
1

urllib ist nicht gut, verwenden Sie Anfragen!

%Vor%     
TheEnglishMe 07.01.2014 09:35
quelle