Cookie speichern mit LWP
hotti
- perl
0 Alexander (HH)0 hotti0 Alexander (HH)0 hotti
hi,
siehe Thema, wenn expires gesetzt ist, geht das so
my $ua = LWP::UserAgent->new;
$ua->cookie_jar(HTTP::Cookies->new(file => "d:/tmp/lwpcookies.txt", autosave => 1));
Wenn jedoch kein Ablaufdatum gesetzt ist (sessionCookie) ist die Datei leer. Wie kann ich die Parameter des Cookies (name, value) denn trotzdem bekommen?
Hotte
Moin Moin!
Siehe HTTP::Cookies. Die Cookie-Jar-Datei enthält nur persistente Cookies.
Mit der scan-Methode kannst Du dir alle Cookies aufzählen lassen.
Alexander
hi Alexander,
Siehe HTTP::Cookies. Die Cookie-Jar-Datei enthält nur persistente Cookies.
Mit der scan-Methode kannst Du dir alle Cookies aufzählen lassen.
Ja, die Doku, während der thread hier so dahinschmorte, war ich auch nicht untätig ;-)
Es ist so, dass cookie_jar einen Cookie mit no expires irgendwie temporär behält und in den Request reinstopft und zwar solange, wie das Script, also der UA am Leben ist.
Mal ein bischen Code:
#!/usr/bin/perl
###########################################################################
my $cfile = "d:/tmp/lwpcookies.txt";
###########################################################################
use strict;
use HTTP::Cookies;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
$ua->cookie_jar(HTTP::Cookies->new( file => $cfile, autosave => 1));
my $req = HTTP::Request->new(GET =>"http://rolfrost/cgi-bin/trust.cgi?login=1;username=Hannes");
my $res = $ua->request($req);
print $ua->cookie_jar->as_string, "\n"; # oops, hier iser ja ;-)
# Set-Cookie3: SID=99dd50c1848f3c65327bf01e01dabf95; path="/cgi-bin"; domain=rolfrost.local; discard; version=0
Mit anderen Worten: cookie_jar nimmt mir soviel Arbeit ab, dass mein Bestreben, den Wert eines Session-Cookies auszulesen, eigentlich überflüssig ist.
Hotte
Moin Moin!
Es ist so, dass cookie_jar einen Cookie mit no expires irgendwie temporär behält und in den Request reinstopft und zwar solange, wie das Script, also der UA am Leben ist.
Es ist sogar noch einfacher: Die save-Methode schreibt Cookies, die nicht persistent gespeichert werden sollen, schlicht nicht in die Datei (außer Du erzwingst das per ignore_discard => 1). Das Ausfiltern übernimmt die anonyme scan-Callback-Funktion in der as_string-Methode. Ansonsten werden alle Cookies gleich behandelt.
Alexander
Moin Moin!
»» Es ist so, dass cookie_jar einen Cookie mit no expires irgendwie temporär behält und in den Request reinstopft und zwar solange, wie das Script, also der UA am Leben ist.
Es ist sogar noch einfacher: Die save-Methode schreibt Cookies, die nicht persistent gespeichert werden sollen, schlicht nicht in die Datei (außer Du erzwingst das per ignore_discard => 1). Das Ausfiltern übernimmt die anonyme scan-Callback-Funktion in der as_string-Methode. Ansonsten werden alle Cookies gleich behandelt.
Danke für Deine Hinweise,
ignore_discard => 1
war das Zauberwort ;-)
Hotte