IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Des codes sources perlConsultez toutes les FAQ

Nombre d'auteurs : 13, nombre de questions : 59, dernière mise à jour : 27 mai 2011 

 
OuvrirSommaireWeb

Voici 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).

 
Sélectionnez
#!/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
}
Créé le 2011-02-01  par Dimitry.e
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2011 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.