Des codes sources perlConsultez toutes les FAQ
Nombre d'auteurs : 13, nombre de questions : 59, dernière mise à jour : 27 mai 2011
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).
#
!/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
}