Bonjour à tous,
je souhaite utiliser un robot pour me connecter à l'adresse suivante, https://www.****.fr, et remplir le formulaire d'authentification.
J'utilise Win32::IE::Mechanize car il parait que celui-ci permet d'interpréter les scripts javascript présent dans la page.
Pour information, j'ai déjà utilisé WWW::Mechanize pour m'authentifier, et cela avait bien fonctionné. Par contre, une fois connecté, il faut que des scripts javascripts soient executés, hors cela ne fonctionne pas avec WWW::Mechanize.
Voici un petit bout de code que j'ai utilisé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 use strict; use warnings; use Win32::IE::Mechanize; use Crypt::SSLeay; use HTML::TreeBuilder; my $url = "https://www.****.fr"; # rend la fenêtre IE visible sous Windows my $ie = Win32::IE::Mechanize->new( visible => 1 ); $ie->get( $url ); die $ie->res->status_line unless $ie->success; # affiche le contenu de la page print $ie->content;
Je me rend compte que le contenu $ie->content est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <HTML><HEAD><TITLE>Page de connexion</TITLE> <META http-equiv=Content-Language> <META content=text/html http-equiv=Content-Type> <META name=robots content=none> <SCRIPT src="/dana-na/css/ds.js"></SCRIPT> <SCRIPT> WriteCSS(); </SCRIPT> <LINK rel=stylesheet href="/dana-na/css/ds_ie.css"><NOSCRIPT></NOSCRIPT></HEAD></HTML>
Tandis que le code source de la page fait bien apparaitre le formualire d'authentification.
La commande mech-dump https://www.****.fr nous retourne bien le formulaire suivant:
<form name="frmLogin" action="login.cgi" method="POST" autocomplete="off" onsubmit="return Login(1)">
<input type="hidden" name="tz_offset">
<input name="username" size="20" type="text">
<input name="password" size="20" type="password">
<input type="hidden" name="realm" value="basic">
<input value="Valider" name="btnSubmit" type="submit">
</form>
Avez-vous des suggestions ? Vous comprenez ce qu'il se passe ? J'ai oublié quelque chose ?
Un grand merci d'avance.
Partager