如何从Mojo中的文件加载cookie,如下代码:
my $mech = WWW::Mechanize->new();
$mech->cookie_jar(HTTP::Cookies->new());
if (-e "cookie.txt") {
print q[Cookie file: cookie.txt found!\n];
$mech->cookie_jar(HTTP::Cookies->new(
file => q[cookie.txt],
));
$mech->get(qq[$cfg->{'url'}/login]) or die qq[invalid request\n];
} else {
print q[Cookie file: cookie.txt NOT found!\n];
$mech->get(qq[$cfg->{'url'}/login]) or die qq[invalid request\n];
$mech->submit_form(
form_name => 'login',
fields => {
'email' => $cfg->{'email'},
'password' => $cfg->{'password'},
},
);
die qq[ERROR: Failed to login!\n] unless ($mech->success);
$mech->cookie_jar->save("cookie.txt");
}
除非有cookie.txt,否则脚本会使用用户名和密码,并将生成的cookie保存在文件cookie.txt中,下次使用此文件。
我正在尝试在不使用Mechanize的情况下重写此代码,我在保存和加载Cookie文件时遇到了问题。
my $ua = Mojo::UserAgent->new;
$ua->cookie_jar(Mojo::CookieJar->new);
and then I do not know how to continue :)
P.S。抱歉我的英语和perl:)
答案 0 :(得分:1)
据我所知,Mojolicious不支持此功能,但您可以通过这种方式使用Storable模块的存储和反向功能:
use Mojo::Base -strict;
# uncomment to be sure
#BEGIN { $ENV{MOJO_USERAGENT_DEBUG} = 1; }
use Mojo::UserAgent;
use Storable;
my $cookie_path = 'my.cookie';
my $req_str = 'http://www.google.com/';
SAVE: {
my $ua1 = Mojo::UserAgent->new;
$ua1->get($req_str);
store $ua1->cookie_jar, $cookie_path;
}
my $ua2 = Mojo::UserAgent->new;
# load
$ua2->cookie_jar(retrieve($cookie_path));
# make a request with loaded cookie
$ua2->get($req_str);