2011-06-03 10 views
6

Ho il libro LWP Perl &, ma come imposto la stringa user-agent?Come impostare User-Agent con LWP?

Questo è quello che ho:

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; 

Qualche suggerimento, se voglio usare LWP::UserAgent come faccio io qui?

+0

Hai già una buona risposta, ma quello che sospetto tu voglia usare/imparare è [WWW :: Mechanize] (http://search.cpan.org/perldoc?WWW::Mechanize) che è un pozzo -sotto sottoclasse di LWP :: UA con molte più funzionalità automatizzate e rese intuitive/semplici. – Ashley

risposta

9

Dal 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

apprezzo la soluzione LWP cookbook che menziona la soluzione sottoclasse con un accenno al lwp-request.

un perl saggio monaco disse una volta: 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(); 

l'entrata è stata rivista con qualche povero umorismo, l'uso dichiarazione, override _agent, e aggiornata linea di stampa agente.

Materiale bonus per l'interessato: Autenticazione di base HTTP fornita con override get_basic_credentials, che è il modo in cui la maggior parte delle persone viene a trovare la soluzione di sottoclasse. _metodi sono sacri o qualcosa; ma graffia un prurito vero?

Problemi correlati