Я написал скрипт Perl для отправки HTTP-запроса GET на веб-сайт. В заголовках запроса, я хочу установить несколько куков, так что заголовок выглядит какPerl HTTP :: Cookie добавить несколько файлов cookie
Cookie: key1 = val1; key2 = val2; key3 = val3
Я использую HTTP::Cookies
установить кук в WWW::Mechanize
объекте.
Однако set_cookie()
может добавлять только один файл cookie в банку с печеньем. Как добавить несколько файлов cookie?
Если я вызываю метод set_cookie()
несколько раз, в HTTP-GET-сообщении отправляется только последний cookie-файл cookie_jar.
Ниже приведен код, который я написал
#! /usr/bin/perl
use warnings;
use WWW::Mechanize;
use HTTP::Cookies;
$cookies = HTTP::Cookies->new();
$cookies->set_cookie(0, 'key1', 'val1', '/', 'domain', 80, 0, 0, 86400, 0);
$cookies->set_cookie(0, 'key2', 'val2', '/', 'domain', 80, 0, 0, 86400, 0);
$cookies->set_cookie(0, 'key3', 'val3', '/', 'domain', 80, 0, 0, 86400, 0);
$mech=WWW::Mechanize->new(cookie_jar => $cookies, timeout => 20);
$mech->agent_alias('Windows IE 6');
$url = "http://domain/path";
eval{$mech->get($url)};
if ([email protected]) {
print "there was an error in sending the HTTP GET request";
}
print $mech->content();
Ниже, как запрос HTTP GET выглядит следующим образом:
GET /path HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Accept-Encoding: gzip
Host: domain
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Cookie: key3=val3
Cookie2: $Version="1"
Как вы можете видеть, в заголовках запроса HTTP GET выше, только последний cookie key3
отправлен. Как я могу отправить несколько файлов cookie?
Пробовали ли вы с помощью файла архива куков? $ cookie_jar = HTTP :: Cookies-> new ( file => "$ ENV {'HOME'}/lwp_cookies.dat", autosave => 1, ); – dudeman