Am Server angemeldet bleiben

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Dienstag 29. August 2006, 09:47

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
Zuletzt geändert von Michael Schneider am Dienstag 29. August 2006, 11:13, insgesamt 2-mal geändert.
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 29. August 2006, 10:03

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...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Dienstag 29. August 2006, 10:17

Hi Jens,

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

Grüße,
Michael
Diese Nachricht zersört sich in 5 Sekunden selbst ...
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Dienstag 29. August 2006, 10:54

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.
TUFKAB – the user formerly known as blackbird
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Dienstag 29. August 2006, 10:55

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
:-)
Zuletzt geändert von gerold am Dienstag 29. August 2006, 10:57, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 29. August 2006, 10:56

@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???

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Dienstag 29. August 2006, 11:02

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.
TUFKAB – the user formerly known as blackbird
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 29. August 2006, 11:14

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*

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten