perl - 如何在 Perl 的 WWW::Mechanize 中打印 cookie_jar 值?

标签 perl cookies

如何打印正在设置的 cookie/cookie_jar 的值?

尝试:

##my $cookie_jar=HTTP::Cookies->new(file => "cookie.jar",autosave=>1,ignore_discard=>1);
my $cookie_jar=HTTP::Cookies->new(); ## Would like it to be in memory
my $agent = WWW::Mechanize->new(cookie_jar => $cookie_jar);

##my $agent = WWW::Mechanize->new();
##my $agent = WWW::Mechanize->new(autocheck => 1);

##$agent->cookie_jar( {} );

# we need cookies
##$agent->cookie_jar(HTTP::Cookies->new);

print "Set Cookie Jar?\n";
print $agent->cookie_jar->as_string();
print "\n";

$agent->get($url); // url is a https site

这些都不太幸运,我做错了什么?

最佳答案

好吧,你必须在 cookie jar 里放一些 cookie 才能看到输出中的任何 cookie。到目前为止,你已经有了一个空的 cookies jar 。确保您添加一些 cookie 或您正在访问的网站设置它们:

use HTTP::Cookies;
use WWW::Mechanize;

my $cookie_jar = HTTP::Cookies->new;
my $agent      = WWW::Mechanize->new( cookie_jar => $cookie_jar );

$cookie_jar->set_cookie(
    qw(
    3
    cat
    buster
    /
    .example.com
    0
    0
    0
    )
    );

    $agent->get( 'http://www.amazon.com' );

print "Set Cookie Jar?\n", $agent->cookie_jar->as_string, "\n";

这给了我输出:

Set Cookie Jar?
Set-Cookie3: session-id=000-0000000-0000000; path="/"; domain=.amazon.com; path_spec; discard; version=0
Set-Cookie3: session-id-time=1272524400l; path="/"; domain=.amazon.com; path_spec; discard; version=0    Set-Cookie3: cat=buster; path="/"; domain=.example.com; port=0; version=3

但是,您不需要直接调用HTTP::CookiesLWP 会处理这个问题。您只需为 cookie_jar 提供一个哈希引用即可:

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

如果您只想要特定响应中的 cookie,您可以创建一个单独的 cookie jar 来保存从响应中提取的 cookie:

use WWW::Mechanize;

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

my $response = $agent->get( 'http://www.amazon.com' );

my $cookie_jar = HTTP::Cookies->new;
$cookie_jar->extract_cookies( $response );

print $cookie_jar->as_string;

关于perl - 如何在 Perl 的 WWW::Mechanize 中打印 cookie_jar 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2693561/

相关文章:

java - 带有 Cookie 的 URL 连接?

perl - 如何修复由 SOAP::Lite 生成的损坏的 XML

perl - 如何在没有硬编码循环的情况下创建多个列表的组合?

perl - 将十六进制转换为 UTF8 在 perl 中无法按预期工作

regex - Perl - 在逗号上拆分字符串。忽略空格

perl - 如何访问 If/else 范围之外的值

javascript - 如何在 Laravel 的 cookie 中的表单步骤之间存储 Vue 状态?

php - OpenID 登录机制 - 保持登录状态

javascript - 每个浏览器 session 运行一次脚本,但在结束时卡住脚本

php - Cookie 存在于浏览器中,但 php $_COOKIE 为空