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 :

Problème de module ( apparement )


Sujet :

Web Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Points : 19
    Points
    19
    Par défaut Problème avec Mechanize - Identification
    Bonjour,

    je souhaiterais utiliser le module Mechanize pour me connecter à une page web. J'ai écris ce code et il me génère une erreur que j'arrive pas à résoudre.

    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
    16
    17
    18
     #! /usr/bin/perl -w
     
    use strict;
    use WWW::Mechanize;
     
    my $url;
    my $mech = WWW::Mechanize->new();
     
    $mech->follow_link( text_regex => qr/est : (\d+)/i );
     
    $mech->submit_form(
        form_number => 3,
        fields      => {
    		sername    => 'monlogin',
            password    => 'monpwd',
            }
        );
    $mech->response();
    Et j'obtiens l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Use of uninitialized value $scheme in pattern match (m//) at C
    okies.pm line 45.
    Missing base argument at C:/Perl/lib/HTTP/Response.pm line 91
    J'ai regardé le CPAN au sujet de la fonction response mais ça ne résout pas mon problème. Ni plus que les erreurs sur les lignes 45,91 m'éclairent.

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Je suppose que le "sername" est juste une erreur de copier coller ? Par ailleurs ce script est vraiment bizarre : tu lui dit de suivre des liens mais a priori tu n'est pas encore sur une page web à ce moment là...

    --
    Jedaï

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Points : 19
    Points
    19
    Par défaut
    J'ai modifié mon script en relisant le CPAN et j'ai écrit çela qui fonctionne mieux :

    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
    16
    #! /usr/bin/perl -w
     
    use strict;
    use WWW::Mechanize;
     
    my $mech = WWW::Mechanize->new();
    my $url1 = 'mon_url_de_login';
    my $url2 = 'mon_url_de_recherche';
     
     
    $mech-> get ($url1);
    $mech->set_visible ( 'login', 'password' );
    # $mech-> get ($url2);
     
    my $res=$mech->response()->as_string;
    print $res;
    Je pense être authentifié sans en avoir la certitude ...
    Le problème maintenant c'est que je dois aller sur une autre page en gardant ma session ouverte et un get ( nouveau lien ) me dit que je ne suis pas authentifié.

    Est ce je peux savoir si je suis authentifié dans ce script ? et comment garder ma session sur une autre page du même site bien sure.

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Une fois que tu as entré ton login et mdp (en supposant que set_visible() ait choisi les bon champs, ce qui dépend de la page HTML), il faut que tu valides le formulaire (avec click() par exemple). Ensuite, les cookies devrait conserver ta session, probablement.

    --
    Jedaï

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Points : 19
    Points
    19
    Par défaut
    Il y a deux que textbox visible donc normalement il y a pas de problème pour le set_visible ?

    Sinon, j'ai regardé la fonction click() et click_button() sur le CPAN mais je trouve ça vraiment pas claire. J'arrive pas à simuler le clic :s

    J'ai essayé avec la fonction forms() de récupérer les nom de bouton mais ça n'a pas fonctionné.

    Avec HTML::Form et LWP j'ai réussi à récupérer les boutons qui donnent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    user (text) :
    passwrd (password) :
    cookielength (hidden) : -1
    Use of uninitialized value i
     (submit) : Identifiez-vous
    Voilà le code que j'ai écrit avec Mechanize :

    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 WWW::Mechanize;
     
    my $mech = WWW::Mechanize->new();
    my $url1 = blabla
    my $url2 = blabla
     
    $mech-> get ($url1);
     
    $mech->set_visible ( 'seb', 'mdp' );
     
    my @list = $mech->forms();
    print "liste des liens sur la page : @list";
     
    my $res=$mech->response()->as_string;
    Me renvoie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Parsing of undecoded UTF-8 will give garbage when decoding entities at C:/Perl/l
    ib/HTML/PullParser.pm line 83.
    Parsing of undecoded UTF-8 will give garbage when decoding entities at C:/Perl/l
    ib/HTML/PullParser.pm line 83.
    liste des liens sur la page : HTML::Form=HASH(0x304de14) HTML::Form=HASH(0x304dd
    a4)
    Sinon le code pour se loguer est le suivant :

    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
    16
    17
    <table class="box" cellpadding="0" cellspacing="0">
    <tr><td class="boxTL"><img alt="Box" src="http://www.developpez.net/forums/images/box/side_tl.png" /></td><td class="boxT"><h3>Membre</h3></td><td class="boxTR"><img alt="Box" src="http://www.developpez.net/forums/images/box/side_tr.png" /></td></tr><tr><td class="boxL"></td><td class="boxC">
     
    		<form action="http://www.newbiecontest.org/forums/index.php?action=login2" method="post" accept-charset="UTF-8">
    			<table border="0" cellspacing="1" cellpadding="0" class="ssi_table">
    				<tr>
    					<td align="right"><label for="user">Identifiant:</label>&nbsp;</td>
    					<td><input type="text" id="user" name="user" size="9" value="" /></td>
    				</tr><tr>
    					<td align="right"><label for="passwrd">Mot de passe:</label>&nbsp;</td>
    					<td><input type="password" name="passwrd" id="passwrd" size="9" /></td>
     
    				</tr><tr>
    					<td><input type="hidden" name="cookielength" value="-1" /></td>
    					<td><input type="submit" value="Identifiez-vous" /></td>
    				</tr>
    			</table>
    et pour le click j'ai écrit :

    $mech->click('Identifiez-vous');

    et ça me renvoit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Parsing of undecoded UTF-8 will give garbage when decoding entities at C:/Perl/l
    ib/HTML/PullParser.pm line 83.
    Parsing of undecoded UTF-8 will give garbage when decoding entities at C:/Perl/l
    ib/HTML/PullParser.pm line 83.
    Use of uninitialized value in string ne at C:/Perl/lib/HTML/Form.pm line 669.
    No clickable input with name Identifiez-vous at C:/Perl/site/lib/WWW/Mechanize.p
    m line 707
    J'espère que c'est pas trop confus. Moi je me sort pas, tout ça à cause du nom d'un bouton lool. Je m'en souviendrai tiens ! !

  6. #6
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Si tu mets juste click() sans nom de bouton, il trouvera le bouton tout seul...

    --
    Jedaï

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Points : 19
    Points
    19
    Par défaut
    Merci pour la réponse a 5h48 lool t'es courageux de jeter un oeil sur le forum a cette heure la. Mon script fonctionne ! ! ! Merciiii

    Par contre a plusieurs moments dans le script j'ai ce message d'erreur :

    Parsing of undecoded UTF-8 will give garbage when decoding entities at C:/Perl/l
    ib/HTML/PullParser.pm line 83.
    Parsing of undecoded UTF-8 will give garbage when decoding entities at C:/Perl/l
    ib/HTML/PullParser.pm line 83. ( plusieurs fois, par paire)

    qui s'affiche avant l'exécution du code. Comment je peut les virer ?

Discussions similaires

  1. [Delphi 7 et 5] Problème de module Base de données
    Par riadmega dans le forum Débuter
    Réponses: 1
    Dernier message: 25/11/2007, 12h26
  2. problème de module menu jlomenu
    Par nemo666 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 11
    Dernier message: 23/04/2007, 23h51
  3. Problème du module login lors du changement de mot de passe
    Par MIC94 dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 31/08/2006, 12h51
  4. [Oracle9i]Problème création module d'écoute
    Par Gidrah dans le forum Oracle
    Réponses: 2
    Dernier message: 25/04/2006, 20h32
  5. problème d'incompatibilité apparement
    Par stephane eyskens dans le forum Flash
    Réponses: 8
    Dernier message: 17/09/2003, 15h51

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