Как настроить User-Agent с LWP? - PullRequest
7 голосов
/ 04 июня 2011

У меня есть книга Perl & LWP, но как мне установить строку user-agent?

Вот что у меня есть:

use LWP::UserAgent;
use LWP::Simple; # Used to download files

my $u = URI->new($url);
my $response_u = LWP::UserAgent->new->get($u);
die "Error: ", $response_u->status_line unless $response_u->is_success;

Любые предложения, если я хочу использовать LWP::UserAgent как я здесь?

Ответы [ 2 ]

10 голосов
/ 04 июня 2011

Из поваренной книги LWP :

  use LWP::UserAgent;
  $ua = new LWP::UserAgent;
  $ua->agent("$0/0.1 " . $ua->agent);
  # $ua->agent("Mozilla/8.0") # pretend we are very capable browser

  $req = new HTTP::Request 'GET' => 'http://www.sn.no/libwww-perl';
  $req->header('Accept' => 'text/html');

  # send request
  $res = $ua->request($req);
1 голос
/ 06 августа 2014

Я действительно ценю решение LWP cookbook , в котором упоминается решение создания подклассов со ссылкой на lwp-запрос.

мудрый монах Perl однажды сказал: трюк подклассов OLE LWP :: UserAgent

package AgentP;
  use base 'LWP::UserAgent';
  sub _agent       { "Mozilla/8.0" }
  sub get_basic_credentials {
      return 'admin', 'password';
  }

package main;
  use AgentP;
  my $agent    = AgentP->new;
  my $response = $agent->get( 'http://127.0.0.1/hideout.html' );

  print $agent->agent();

запись была исправлена ​​с некоторым плохим настроением, оператором использования, переопределением _agent и обновленной строкой печати агента.

Бонусный материал для заинтересованных: базовая аутентификация HTTP, предоставляемая с переопределением get_basic_credentials, - именно так большинство людей приходят к решению о создании подклассов. Методы священны или что-то; но это действительно царапает зуд, не так ли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...