WWW ::机械化和Cookies

时间:2010-08-28 16:45:41

标签: perl cookies mechanize

我使用WWW :: Mechanize :: Shell来测试东西。 由于我没有设法在我想要抓取的网站上登录,我想我将使用'cookie'命令WWW :: Mechanize :: Shell的特定网站使用浏览器cookie(chrome或firefox)。

问题是,Cookies通常存储在单个文件中,这不好,如何只为这个特定网站获取cookie?

感谢,

2 个答案:

答案 0 :(得分:12)

为什么不将Cookie存储在文件中?

由于WWW::Mechanize建立在LWP::UserAgent之上,您可以像处理LWP::UserAgent一样处理Cookie。您可以将cookie jar作为文件或内存中的哈希值。

如果您不想将cookie保存在文件中,请在构造mech对象时使用空哈希引用:

 use WWW::Mechanize;

 my $mech = WWW::Mechanize->new( cookie_jar => {} );

如果要使用新文件,请创建一个新的HTTP::Cookies对象:

 use WWW::Mechanize;

 my $mech = WWW::Mechanize->new( 
     cookie_jar => HTTP::Cookies->new( file => "$ENV{HOME}/.cookies.txt" ) 
     );

如果要加载特定于浏览器的Cookie文件,请使用正确的模块:

 use WWW::Mechanize;

 my $mech = WWW::Mechanize->new( 
     cookie_jar => HTTP::Cookies::Netscape->new( file => $filename ) 
     );

如果您根本不需要cookie,请明确使用undef:

 use WWW::Mechanize;

 my $mech = WWW::Mechanize->new( cookie_jar => undef );

所有这些都在文档中。

答案 1 :(得分:5)

HTTP::Cookies::NetscapeHTTP::Cookies::Microsoft加载您现有的浏览器Cookie。