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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web Perl Discussion :

Bot avec Win32::IE::Mechanize


Sujet :

Web Perl

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 16
    Points : 16
    Points
    16
    Par défaut Bot avec Win32::IE::Mechanize
    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.

  2. #2
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 16
    Points : 16
    Points
    16
    Par défaut Résolu !!! Hourra
    En fait il s'agissait simplement de mettre une petite temporisation (sleep 3), juste avant l'affichage du contenu de la page.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    my $ie = Win32::IE::Mechanize->new( visible => 1 );
    $ie->get( $url );
    #temporisation
    sleep 3;
    die $ie->res->status_line unless $ie->success;
    [Edit] Vous pouvez également utiliser ce code qui sera plus propre et beaucoup plus précis, en attendant le chargement complet de la page:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while( $ie->{agent}->Document->readyState !~ /complete/i ){
    	print "not complete\r\n";
    	sleep(0.5);
    }
    print "STATUS:". $ie->{agent}->Document->readyState ."\r\n";

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. XP probleme avec Win32
    Par nypahe dans le forum Windows XP
    Réponses: 2
    Dernier message: 19/04/2007, 18h28
  2. Problem SQL avec Win32::ODBC et access
    Par ripou dans le forum Modules
    Réponses: 2
    Dernier message: 21/09/2006, 13h02
  3. Récupération de texte avec win32::ole
    Par bluecurve dans le forum Modules
    Réponses: 2
    Dernier message: 22/02/2006, 16h47
  4. Comment travailler avec Win32
    Par Mathieu.J dans le forum MFC
    Réponses: 4
    Dernier message: 25/01/2006, 09h49
  5. Probleme avec Win32::odbc et mon script
    Par goblin dans le forum Modules
    Réponses: 1
    Dernier message: 29/11/2005, 21h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo