[Nicht gelöst] Cookies...Client...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Hi.

Code: Alles auswählen

import os, cookielib, urllib2, Cookie
cj = cookielib.MozillaCookieJar()
#cj.load(os.path.join(sys.path[0], "cookies.txt")) # <-Momentan mache ich das so.

# Würde aber gerne direkt so ein Cookie erzeugen.
cookie = Cookie.SimpleCookie()
cookie['domain'] = '.foobar.de' # <- Cookie.CookieError: Attempt to set a reserved key: domain

[...]

cj.set_cookie(cookie)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
r = opener.open(URL)
content = r.read()
Das Problem ist das ich domain nicht setzen kann.

Das Script für dass ich das brauche handelt sich um keine Web Anwendung, sondern um ein Programm das sich Daten von einer Website holt. Per Cookie kann man da noch Einstellungen machen.

Folgendes habe ich mir schon durchgelesen komme trotzdem irgendwie nicht weiter:

http://docs.python.org/lib/cookie-jar-objects.html
http://docs.python.org/lib/module-Cookie.html
http://docs.python.org/lib/module-cookielib.html

Gibt es da eine Möglichkeit ein Cookie mit domaine, expires, etc zu erzeugen, das ich dann an ``cj.set_cookie(cookie)`` übergeben kann?

lg
Zuletzt geändert von sape am Sonntag 18. Februar 2007, 09:21, insgesamt 1-mal geändert.
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

OK, nun hab ichs doch verstanden. Diese Klassen aus ``Cookie`` sind nur Serverseitig gedacht. Daher auch solche aufrufe wie ``SimpleCookie(os.environ['HTTP_COOKIE'])`. So weit ich das sehe gibt es von der Client Seite keine Möglichkeit selber Cookies aus den ``Cookie``-Klassen zu erzeugen, um sie dann in ``MozillaCookieJar`` zu laden. Wenn ich das richtige verstehe ist das, was ich möchte, auch gar nicht dafür gedacht von der Client Seite aus oder?

Ich mache das nun so, das ich das Cookie mit expires als txt-Datei erzeuge und dann diese txt-Datei mit ``cj.load`` lade. Finde ich zwar nicht so sauber die Lösung, aber was anderes ist wohl nicht möglich.
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Hi ich bins nochmal.

Gibt es vielleicht doch eine Möglichkeit? Ich probiere schon seit gestern und nichts funktioniert aus dem Cookie Modul.

Gibt es vielleicht noch eine andere Möglichkeit, das wenn ich eine Seite aufrufe ein Cookie übergebe? Vielleicht in den man den Header oder sowas Modifiziert?

lg
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

sape hat geschrieben:Gibt es vielleicht doch eine Möglichkeit?
Hi sape!

Mechanize http://wwwsearch.sourceforge.net/mechanize/ kann damit sicher umgehen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Gerold vielen Dank. Ich lade mir das Modul gleich mal runter und Lese mi die Doku durch und probiere es aus.
Antworten