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.