我正在努力的是爲什麼LWP :: UserAgent不提供訪問者,以便我可以通過提供cookie的名稱來獲取我想要知道的關於cookie_jar中的cookie的所有信息。我意識到cookie_jar上有scan()方法,但它似乎有很多開銷,爲如此基本的事情提供回調。這就是我現在所擁有的:通過cookie名稱從cookie_jar中提取cookie
#!/usr/bin/env perl
use strict;
use warnings;
use Data::Dump qw (dump);
use WWW::Mechanize;
my $mech = WWW::Mechanize->new;
$mech->get('http://www.nytimes.com');
my %cookies =();
$mech->cookie_jar->scan(\&check_cookies);
dump \%cookies;
sub check_cookies {
my @args = @_;
$cookies{ $args[1] } = {
version => $args[0],
val => $args[2],
path => $args[3],
domain => $args[4],
port => $args[5],
path_spec => $args[6],
secure => $args[7],
expires => $args[8],
discard => $args[9],
hash => $args[10],
};
}
腳本的輸出是這樣的:
{ adxcs => {
discard => 1,
domain => ".nytimes.com",
expires => undef,
hash => {},
path => "/",
path_spec => 1,
port => undef,
secure => undef,
val => "-",
version => 0,
},
RMID => {
discard => undef,
domain => ".nytimes.com",
expires => 1374340257,
hash => {},
path => "/",
path_spec => 1,
port => undef,
secure => undef,
val => "02b4bc821c00500991212ba2",
version => 0,
},
}
所以,這給了我方便地訪問名字的cookie,但我在想,如果有一個更簡單的方法來做到這一點,或者如果有一個我不知道的有用的模塊。
我應該說,深入研究了這個問題後,我的問題和示例代碼非常天真。如果cookie jar中的所有cookie都來自完全相同的域,則基於cookie名稱的所有cookie都可以正常工作。否則,它會崩潰,是毫無意義的。話雖如此,我想看到一個模塊,它返回cookie對象,然後您可以更新和設置。我目前正在研究這些代碼,並希望很快將其發布到CPAN。 – oalders 2012-08-10 16:00:17
我已經將代碼發佈到https://metacpan.org/module/HTTP::CookieMonster – oalders 2012-10-04 14:09:40