Islandman <[EMAIL PROTECTED]> said something to this effect on 06/26/2001:
> The small code segment below will get the contents of a web page using a
> perl script. The site I want to access wants a cookie sent as well.
>
> There is a cookie for this site is in my ~/.netscape/cookies file. How
> do I change the code below so I can fake pass the cookie along with the
> POST request?
>
> Will I need to modify the format of what is in ~/.netscape/cookies?
Create a HTTP::Cookies::Netscape object:
use HTTP::Cookies;
my $c = HTTP::Cookies::Netscape->new(
File => "$ENV{HOME}/.netscape/cookies",
AutoSave => 1,
);
HTTP::Cookies::Netscape objects have a hashref called COOKIES,
which is a hash of hashes of hashes of lists. Access the cookies'
values as such:
my $val = $c->{COOKIES}->{$host}->{$path}->{$cookie_name}->[1];
perldoc LWP::UserAgent tells us:
$ua->cookie_jar([$cookies])
Get/set the HTTP::Cookies object to use. The default
is to have no cookie_jar, i.e. never automatically add
"Cookie" headers to the requests.
So you don't have to access the values directly. Add this to your
code:
> --
> use strict;
> use LWP::UserAgent;
> use HTTP::Request::Common;
use HTTP::Cookies;
> my $URL = 'http://www.yahoo.com';
> my $ua = LWP::UserAgent->new;
> my $response = $ua->request(POST "$URL");
my $jar = HTTP::Cookies::Netscape->new(
File => "$ENV{HOME}/.netscape/cookies",
AutoSave => 1,
);
$ua->cookie_jar($jar);
>
> if ($response->is_success) {
>print $response->content;
> } else {
>print "Bad luck this time\n";
> }
Untested, but the docs say it should work.
(darren)
--
"Quiet and courteous" is often mistaken for "kind and polite."
-- Andrew Langmead