Почему мой сценарий Perl не может распечатать значения файлов cookie?

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

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 также отправляет информацию о файлах cookie в браузер, почему у меня другие результаты? Есть что-то, что мне не хватает?

Любые идеи? Спасибо!


person Mike    schedule 28.07.2010    source источник
comment
использовать строгий; использовать предупреждение; вы получите ошибку компиляции, потому что для глобального символа $cookie_content требуется явное имя пакета. Исправьте это как my $cookie_content = $cookie_jar-›as_string;   -  person Nikhil Jain    schedule 28.07.2010
comment
Спасибо. Я вижу смысл.   -  person Mike    schedule 28.07.2010


Ответы (1)


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

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

person jmz    schedule 28.07.2010
comment
спасибо за указатель. Я посмотрю, работает ли Win32::IE::Mechanzie. - person Mike; 28.07.2010