Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery

Convert LWP Cookies to Netscape for Firefox import

by bliako (Friar)
on Jan 11, 2018 at 20:29 UTC ( #1207133=perlquestion: print w/replies, xml ) Need Help??
bliako has asked for the wisdom of the Perl Monks concerning the following question:

Esteemed Monks,

I have a question regarding the HTTP cookies of an LWP object. In particular I want to save them in three different formats (LWP, Netscape, Microsoft) after LWP fetches a page.

So far, I have told LWP to keep cookies as thus:
my $ua = LWP::UserAgent->new(); $ua->cookie_jar(HTTP::Cookies->new());
Then I tell it to save cookies:
Path::Tiny::path("cookies.LWP.txt")->spew(join("\n", $ua->cookie_jar() +->as_string));

(LWP uses what is called 'SetCookies3' cookies)

But I now need to save the same cookies in Netscape format too so that I can import it in Firefox. And also in Microsoft format for import in IE (Oh Lord, set a guard upon my lips! ... θου, Κύριε, φυλακήν τω στόματί μου).

I am wondering whether I can do it the way I dreamed last night in my sleep:
my $NC = HTTP::Cookies::Netscape->new($ua->cookie_jar()); my $MC = HTTP::Cookies::Microsoft->new($ua->cookie_jar()); Path::Tiny::path("cookies.Netscape.txt")->spew($NC->as_string); Path::Tiny::path("cookies.Microsoft.txt")->spew($MC->as_string);

Alas no. (HTTP::Cookies::Netscape also fails to read an LWP cookie file.)

Is there code out there who can convert LWPCookie->Netscape and LWPCookie->Microsoft?

brotherly regards,


Replies are listed 'Best First'.
Re: Convert LWP Cookies to Netscape for Firefox import
by hippo (Canon) on Jan 12, 2018 at 09:54 UTC

    Based on the documentation for scan() I have put together this basic PoC which works for me:

    #!/usr/bin/env perl use strict; use warnings; use HTTP::Cookies; my $jar = HTTP::Cookies->new(file => 'cookies.tmp.txt'); my $nsjar = HTTP::Cookies::Netscape->new(file => 'netscape'); my $copy = sub {$nsjar->set_cookie(@_)}; $jar->scan ($copy); $nsjar->save;

    This assumes your existing LWP jar file is 'cookies.tmp.txt' so obviously change that to the real path you use. It creates a new jar in Netscape format called simply 'netscape'. I did not attempt to do the same for MS cookies but would be very surprised if the same technique did not apply there.

      thanks, that's what I ended doing eventually. Your solution works fine for Netscape cookies.

      I can't test writing MS cookies because HTTP::Cookies::Microsoft looks to me that it needs to load Win32 module in order to enquire about username and I don't have that.

      as for specs, that helped:

      But for the ms cookie, the source of maybe the best help:

      notice the expiration and creation time.

Re: Convert LWP Cookies to Netscape for Firefox import
by Anonymous Monk on Jan 12, 2018 at 08:40 UTC
    have u researched modules or do u have links to the specs for file formats?

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1207133]
Front-paged by Arunbear
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (1)
As of 2018-07-19 00:23 GMT
Find Nodes?
    Voting Booth?
    It has been suggested to rename Perl 6 in order to boost its marketing potential. Which name would you prefer?

    Results (398 votes). Check out past polls.