2010-07-28 2 views
2

Когда я нахожусь в usatoday.com с IE, файлы cookie автоматически создаются в папке Temporary Internet Files. Но почему следующий скрипт Perl ничего не записывает?Почему мой скрипт Perl не может печатать значения cookie?

use WWW::Mechanize; 
use strict; 
use warnings; 

my $browser = WWW::Mechanize->new(); 
my $response = $browser->get('http://www.usatoday.com'); 
my $cookie_jar = $browser->cookie_jar(HTTP::Cookies->new()); 
$cookie_jar->extract_cookies($response); 
my $cookie_content = $cookie_jar->as_string; 
print $cookie_content; 

Для некоторых других сайтов, как amazon.com, google.com и yahoo.com, скрипт работает хорошо, но, по крайней мере, мне кажется, usatoday.com также передает информацию куки в браузере, почему я имеющие разные результаты? Есть что-то, что мне не хватает?

Любые идеи? Благодаря!

+0

использовать строгое; использование предупреждения; вы получите ошибку компиляции из-за «Глобального символа» $ cookie_content «требует явного имени пакета». Исправить это как мой $ cookie_content = $ cookie_jar-> as_string; –

+0

Спасибо. Я вижу суть. – Mike

ответ

3

UsaToday использует Javascript для установки файла cookie. WWW :: Mechanize не анализирует и не запускает Javascript.

Если вам нужно просканировать сайт с помощью файла cookie, вы можете проанализировать http://i.usatoday.net/_common/_scripts/gel/lib/core/core.js и другие файлы JS и определить, как именно создается файл cookie, и создать его самостоятельно.

+0

спасибо за указатель. Я посмотрю, работает ли Win32 :: IE :: Mechanzie. – Mike