2011-06-03 11 views
6

Tengo el libro Perl & LWP, pero ¿cómo configuro la cadena de agente de usuario?¿Cómo configurar User-Agent con LWP?

Esto es lo que tengo:

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; 

Cualquier sugerencia, si quiero usar LWP::UserAgent como lo hago aquí?

+0

Ya tienes una buena respuesta, pero lo que sospecho que realmente quieres usar/aprender es [WWW :: Mechanize] (http://search.cpan.org/perldoc?WWW::Mechanize) que es un pozo -se comportó la subclase de LWP :: UA con mucha más funcionalidad automatizada y hecha intuitiva/simple. – Ashley

Respuesta

9

Desde el LWP cookbook:

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

I aprecian la solución LWP cookbook que menciona la solución de subclases con una referencia de pasada a lwp-petición.

un monje Perl sabio dijo una vez: the ole subclassing LWP::UserAgent trick

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(); 

la entrada ha sido revisada con algún pobre humor, declaración de uso, anulación _agent, y la línea de impresión agente de actualización.

Material de bonificación para el interesado: autenticación básica HTTP provista con la anulación get_basic_credentials, que es la forma en que la mayoría de las personas encuentran la solución de subclases. _los métodos son sagrados o algo así; pero si se rasca, ¿no?

Cuestiones relacionadas