Seite 1 von 1

Am Server angemeldet bleiben

Verfasst: Dienstag 29. August 2006, 09:47
von Michael Schneider
Hallo,

es stimmt offenbar, dass sich mit zunehmender Erkenntnis mehr und mehr Fragen auftun. Ich bin bei meiner Suche nicht fündig geworden, darum muss ich es mal direkt fragen.

Gegenwertig hole ich meine Informationen von einem Server, bei dem ich mich für jede Anfrage anmelden muss. Das mache ich so:

Code: Alles auswählen

req = urllib2.Request(sURL) 
base64string = base64.encodestring('%s:%s' % (sLogin, sPW))[:-1]
authheader =  "Basic %s" % base64string
req.add_header("Authorization", authheader)
handle = urllib2.urlopen(req)
Jetzt hat mir ein Freund gesagt, dass Browser wie Mozilla sich nicht jedes mal anmelden (wie ich vermutete), sondern eine dauerhafte Anmeldung verwenden. Ich möchte innerhalb kurzer Zeit mehrere Zehntausend Seiten vom Server abfragen und mich, wenn möglich, nicht jedesmal neu authentifizieren.

Frage: kann ich den Code so ändern, dass ich mich nur einmal authentifiziere und dann die Abfragen normal durchführe?

Vielen Dank für Eure Hilfe,
Michael

Verfasst: Dienstag 29. August 2006, 10:03
von jens
Dir Frage ist, wie diese "dauerhafte" Anmeldung funktioniert. Meist nutzt man dazu ein Cookie... Also mußt du wohl von deinem Python-Skript ein Cookie emfangen und beim nächsten Request wieder zurück senden...

Verfasst: Dienstag 29. August 2006, 10:17
von Michael Schneider
Hi Jens,

ich soll Kekschen verteilen? :-)
Aber danke für den Anhaltspunkt, ich werde mich mal danach umsehen.

Grüße,
Michael

Verfasst: Dienstag 29. August 2006, 10:54
von mitsuhiko
Das mit den Keksen würde ich lassen. Basic AUTH reicht dafür wirklich aus.
Aber ich bin mir sicher googlen nach Basic Auth dürfte dir verraten wie Browser das machen.

Re: Am Server angemeldet bleiben

Verfasst: Dienstag 29. August 2006, 10:55
von gerold
Michael Schneider hat geschrieben:Jetzt hat mir ein Freund gesagt, dass Browser wie Mozilla sich nicht jedes mal anmelden (wie ich vermutete), sondern eine dauerhafte Anmeldung verwenden.
Hi Michael!

Das stimmt nicht. HTTP ist ein zustandsloses Protokoll. Der Browser merkt sich, schlicht und einfach, den Benutzernamen und das Passwort, das du eingegeben hast und schickt es bei jeder Anfrage automatisch wieder mit.
Diese Aussage gilt aber nur bei dieser Art der Authentifizierung, die du in deinem Beispiel aufzeigst. Es gibt Authentifizierungen, die nicht der Webserver sondern die Web-Anwendungen selber durchführen. Wie dieses Board z.B. Da kümmert sich nicht der Apache um die Authentifizierung, sondern phpBB kümmert sich selbst darum. Die Web-Anwendungen machen so etwas meist über Cookies.

Sei glücklich, dass sich in deinem Fall der Webserver um die Authentifizierung kümmert. Benutzername und Passwort in den Kopf des Requests. Fertig! Es geht auch komplizierter...

lg
Gerold
:-)

Verfasst: Dienstag 29. August 2006, 10:56
von jens
@blackbird: Naja, das kommt auf die Seite/Software drauf an... Wenn die Cookies einsetzten, kannst du das nicht einfach ignorieren...

Würde mich aber auch mal interessieren, wie Basic Auth funktioniert... Wird der Browser irgendwie anders mit einer ID versehen???

Verfasst: Dienstag 29. August 2006, 11:02
von mitsuhiko
jens hat geschrieben:@blackbird: Naja, das kommt auf die Seite/Software drauf an... Wenn die Cookies einsetzten, kannst du das nicht einfach ignorieren...
Dort sind aber keine cookies
Würde mich aber auch mal interessieren, wie Basic Auth funktioniert... Wird der Browser irgendwie anders mit einer ID versehen???
Nein. Es überträgt einfach die Userdaten. Guckst du RFC.

Verfasst: Dienstag 29. August 2006, 11:14
von jens
Michael hat doch nicht wirklich geschrieben wie die URL lautet, oder hab ich das überlesen?

Ist ja auch egal...

Ich hab die RFC rausgesucht: In http://www.rfc.net/rfc2617.html dort könnte man sich also schlau machen, wenn man Lust hat die paar Zeilen zu lesen *hust*