Я плохо знаком с Perl, и я хочу записать программу Perl что:
Я попробовал это:
#!/usr/bin/perl
require HTTP::Request;
require LWP::UserAgent;
$request = HTTP::Request->new(GET => 'http://www.google.com/');
$ua = LWP::UserAgent->new;
$ua->cookie_jar({file => "testcookies.txt",autosave =>1});
$response = $ua->request($request);
if($response->is_success){
print "sucess\n";
print $response->code;
}
else {
print "fail\n";
die $response->code;
}
скажите, как установить cookie в 'запросе' т.е.
как установить cookie, когда мы отправляем HTTP::Request
я ожидал что-то как:
$request = HTTP::Request->new(GET => 'http://www.google.com/');
$ua = LWP::UserAgent->new;
$ua->new CGI::Cookie(-name=>"myCookie",-value=>"fghij");
действительно ли это возможно??
Как уже говорилось, куки находятся в HTTP::Cookies:
Вам нужно создать cookie jar
Вы задаете значение куки, которые нужно поместить в jar
Затем вы связываете этот jar с вашим агентом пользователя
Например:
my $ua = LWP::UserAgent->new;
my $cookies = HTTP::Cookies->new();
$cookies->set_cookie(0,'cookiename', 'value','/','google.com',80,0,0,86400,0);
$ua->cookie_jar($cookies);
# Now make your request
set_cookie
имеет довольно большое количество аргументов:
set_cookie( $version, $key, $val, $path, $domain, $port, $path_spec, $secure, $maxage, $discard, \%rest )
Это происходит потому, что банк cookie разработан с точки зрения браузера (UserAgent), а не отдельного запроса. Это означает, что не все аргументы так важны в данном случае.
Те, которые вы должны правильно понять, это $key, $val, $path, $domain, $port.
Что касается:
500 Can't connect to www.google.com:80 (Bad hostname 'www.google.com')
Это означает, что LWP не может найти адрес для Google. Вы находитесь за веб-прокси? Если да, то вам нужно установить прокси в UA, используя что-то вроде:
$ua->proxy(['http', 'https'], 'http://proxyhost.my.domain.com:8080/');