
Des codes sources perlConsultez toutes les FAQ
Nombre d'auteurs : 13, nombre de questions : 59, dernière mise à jour : 27 mai 2011
Sommaire
→
WebVoici un script permettant de récupérer le contenu d'une page Web et l'afficher sur la sortie standard STDOUT. Il y a la possibilité de spécifier un proxy HTTP. Ainsi qu'un login pour les connexions HTTP (autorisation de base).
#!/usr/bin/perl
use warnings;
use strict;
use Getopt::Long;
use LWP::Simple;
use LWP::UserAgent;
use MIME::Base64;
=for COMM
Script permettant de recuperer le contenu du page web en HTTP
avec utilisation d'un proxy et d'un login si besoin.
Arguments obligatoires :
--url=URL
Precise la page a recuperer
Arguments Optionnels :
--login=USER:PASSWD
Specifie le login a utiliser
--proxy=PROXY
Indiquer un proxy HTTP
=cut
my ( $url, $login, $proxy );
# Recuperation et stockage des options dans leurs variables respectives
GetOptions(
'url=s' => \$url,
'login=s' => \$login,
'proxy=s' => \$proxy,
);
# Le script a besoin d'au moins une URL pour fonctionner
if ( !defined $url ) { die( 'Usage : ' . $0 . " --url=URL\n" ); }
# Le login doit etre forme du nom et du mot de passe separes par deux points
if ( ( defined $login ) and ( $login !~ /.+:.+/ ) ) {
die( 'Usage : ' . $0 . " --url=URL --login=USER:PASSWD\n" );
}
# Creation du User Agent. Il se charge de traiter la requete HTTP, comme un navigateur le ferait.
my $ua = LWP::UserAgent->new;
# Le timeout permet de savoir a partir de quand on considere qu'un requete n'aboutira pas
$ua->timeout(20);
# On crée la requete HTTP correspondant a l'url
my $req = HTTP::Request->new( GET => $url );
if ( defined $proxy ) {
# Indique a l'user agent qu'il va devoir utiliser un proxy
$ua->env_proxy;
# Indique a l'user agent quel proxy utiliser
$ua->proxy( ['http'], $proxy );
}
if ( defined $login ) {
# Encodage en base 64 comme le demande HTTP
my $token = encode_base64($login);
# Ajout de l'option 'Authorization Basic' et du login dans la requete. (cf RFC de HTTP)
$req->header( Authorization => 'Basic ' . $token );
}
# Envoi de la requete et reception de la reponse dans $content
my $content = $ua->request($req);
# Si la requete a abouti, afficher le contenu de la page web
if ( $content->is_success ) {
print $content->decoded_content;
}
else {
die $content->status_line; # Afficher la raison de l'erreur
}



