WWW :: Механизация и печенье - PullRequest
6 голосов
/ 28 августа 2010

Я использую WWW :: Mechanize :: Shell для тестирования.Поскольку мне не удалось войти на веб-сайт, который я хочу очистить, я подумал, что я буду использовать cookie браузера (chrome или firefox) для этого конкретного веб-сайта с помощью команды «cookie», которую имеет WWW :: Mechanize :: Shell.

Вопрос в том, что куки обычно хранятся в одном файле, что нехорошо, как получить куки только для этого конкретного сайта?

спасибо,

Ответы [ 2 ]

12 голосов
/ 29 августа 2010

Почему файлы cookie не сохраняются в хорошем файле?

Поскольку WWW :: Mechanize построен поверх LWP :: UserAgent , вы обрабатываете cookie, как и в LWP :: UserAgent . Вы можете сделать файл cookie файлом или хэшем в памяти.

Если вы не хотите сохранять куки в файле, используйте пустую ссылку на хеш при создании объекта мех:

 use WWW::Mechanize;

 my $mech = WWW::Mechanize->new( cookie_jar => {} );

Если вы хотите использовать новый файл, создайте новый HTTP :: Cookies объект:

 use WWW::Mechanize;

 my $mech = WWW::Mechanize->new( 
     cookie_jar => HTTP::Cookies->new( file => "$ENV{HOME}/.cookies.txt" ) 
     );

Если вы хотите загрузить специальный файл cookie браузера, используйте для него подходящий модуль:

 use WWW::Mechanize;

 my $mech = WWW::Mechanize->new( 
     cookie_jar => HTTP::Cookies::Netscape->new( file => $filename ) 
     );

Если вы вообще не хотите использовать файлы cookie, используйте undef явно:

 use WWW::Mechanize;

 my $mech = WWW::Mechanize->new( cookie_jar => undef );

Все это в документах.

5 голосов
/ 29 августа 2010

HTTP::Cookies::Netscape, HTTP::Cookies::Microsoft загрузить существующие файлы cookie браузера.

...