Perl Cookie无效

时间:2011-03-20 00:08:05

标签: javascript perl cookies

我已经整天都在寻找答案:

我正在使用Perl和LWP :: UserAgent和HTTP :: Cookies。

我的问题是我无法通过基于cookie的年龄检查。

在Perl中我使用此代码:

my $browser = LWP::UserAgent->new;
my $resp = $browser->get( $url, 'User-Agent' => 'MySpider/1.0' );

#Cookie Setup
my $cookies = HTTP::Cookies->new();
$cookies->set_cookie(1,'age_check', '1','/','.example.com/', 80, ,0,3354512128, 0);
$browser->cookie_jar($cookies);

网站正在使用JavaScript设置Cookie

function saveSplash(domain) {
    var expDate = new Date();
    expDate.setTime(expDate.getTime()+(1*24*3600*1000));
    setCookie("age_check", 1, expDate, '/', domain);
    setCookie("screen_width", getScreenWidth(), expDate, '/', domain);
}

这是我的浏览器保存的Cookie:

age_check
1
example.com/
1088
3354512128
30140182
2646218624
30139981

知道我做错了吗?

先谢谢你们!

2 个答案:

答案 0 :(得分:1)

我发现您set_cookie电话有两个问题。首先,域名应为".example.com"而不是斜线;斜杠在path参数中指定。其次,你缺少一个path_spec参数的值,所以你为discard(0)指定的值被用于maxage,这导致一个过期的cookie。

答案 1 :(得分:0)

(更新:非常想念。)

我希望你没有真正花一整天的时间。 :( Google上LWP::UserAgent JavaScript的第一个结果是Handling Javascript with LWP::UserAgent,它提供了一个妙语:它不支持JavaScript。但有几种选择。

检查CPAN上的Mechanize JavaScript。它会导致WWW::Mechanize::FirefoxWWW::Mechanize::Plugin::JavaScript。还有WWW::Selenium的脚本,这有点棘手,但完全可以模拟浏览器,因为它确实在运行浏览器。

Upate:忘了与Mech :: Plugin :: JavaScript有关的WWW::Scripter