2011-03-20 48 views
2

我已经花了整整一天寻找这样的答案:Perl Cookie不工作

我使用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); 

网站是设置Cookie的使用JavaScript

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 

任何想法我做错了什么?

在此先感谢你们!

回答

1

我看到您的set_cookie调用有两个问题。首先,域名应该是".example.com"而不是斜线;斜杠在路径参数中指定。其次,您缺少path_spec参数的值,因此您为discard(0)指定的值将用于maxage,这会导致cookie过期。

+0

我改变了这一点。它的工作!谢谢, – perlbeginner 2011-03-20 10:18:21

+0

你可以考虑标记th那么答案是正确的。 – 2011-03-20 11:56:39

0

(更新:挺错过了点)

我希望你真的不整天看。 :(在谷歌的第一个结果为LWP::UserAgent JavaScriptHandling Javascript with LWP::UserAgent这给点睛之笔:它不支持JavaScript有几个选项虽然

在CPAN检查Mechanize JavaScript它导致WWW::Mechanize::FirefoxWWW::Mechanize::Plugin::JavaScript有。。还与WWW::Selenium脚本这是一个有点棘手,但因为它确实正在运行的浏览器将完美的模拟浏览器

Upate:忘了WWW::Scripter这实际上涉及到机甲::插件:: JavaScript的

+1

OP显然意识到Mech不支持Javascript。这就是他试图手动设置cookie的原因。 – friedo 2011-03-20 01:39:38

+0

@friedo:很对。最近我的速度缓慢。 :| – Ashley 2011-03-20 02:06:22