Когда я пытаюсь получить доступ http://www.viki.com
с помощью LWP::UserAgent
я получаю следующий ответ:
<html><body><h1>403 Forbidden</h1>
Request forbidden by administrative rules.
</body></html>
get
подпрограммы в LWP::Simple
реализуется следующим образом (по крайней мере, в версии 6.13).
sub get ($)
{
my $response = $ua->get(shift);
return $response->decoded_content if $response->is_success;
return undef;
}
Как вы можете видеть, метод get
будет возвращать только содержимое, если ответ будет успешным, в противном случае он будет возвращать undef
.
Ответ получен от LWP::UserAgent
является ошибкой 403, другими словами, не удался. Поэтому LWP::Simple
вернет undef
по тому же самому URL-адресу.
Похоже, что веб-сайт (http://www.viki.com
) проверяет строку агента пользователя и возвращает содержимое только «действительным» пользовательским агентам. LWP::Simple
является жестко запрограммированным для использования LWP::Simple/$VERSION
в качестве пользовательского агента.
Если вы действительно должны использовать LWP::Simple
тогда вы могли бы заставить агент пользователя так:
use LWP::Simple qw/ get $ua /;
$ua->agent('Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0');
print get('http://www.viki.com');
LWP::Simple
выставляет экземпляр LWP::UserAgent
, что он использует в качестве внутренне необязательно включен $ua
переменных. По-прежнему необходимо настроить агент пользователя в этом экземпляре, чтобы загрузить эту конкретную страницу.
Уверен, что здесь есть какой-то вопрос, только что не понял, что это такое? – mttrb
не удается получить содержимое страницы. Есть ли способ получить его без использования пользовательского агента. – Tirumalesh