2010-08-28 96 views
4

我使用WWW :: Mechanize :: Shell来测试东西。 由于我没有设法登录我想刮去的网站,我想我会使用浏览器cookie(chrome或firefox)用于'cookie'命令的特定网站WWW :: Mechanize :: Shell有。WWW ::机械化和饼干

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

谢谢,

回答

10

为什么不把cookie存储在一个文件好?

由于WWW::Mechanize构建于LWP::UserAgent之上,您可以像处理LWP::UserAgent一样处理cookies。您可以使Cookie jar成为文件或内存中的散列。

如果你不想保存在一个文件中的Cookie,使用空哈希引用,当你构建机甲对象:

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) 
    ); 

如果你不想要的cookies可言,用民主基金明确:

use WWW::Mechanize; 

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

所有这一切都是在文档中。

+0

这是一个很好的解释,并且非常有帮助。 但是,实际上我想要的是加载我已经拥有的cookie,cookies位于Firefox的cookies文件中(不知道它在哪里......)。 这可能吗? – snoofkin 2010-08-28 22:28:16

+0

那么,使用其中一个HTTP :: Cookie :: *模块来处理您想要加载的cookie文件的类型。 – 2010-08-30 21:59:28