2011-03-20 60 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