Remplir formulaire de connexion automatiquement

Remplir formulaire de connexion automatiquement - Perl - Programmation

Marsh Posté le 04-12-2010 à 14:36:28    

Bonjour,  
voici ce que je souhaite faire :  
 
Pour me connecter à internet en wifi, je dois m'identifier sur une page "https://controller.mobile.lan/".
Il y a juste 2 champ à remplir et une validation à faire mais j'aimerais automatiser ce processus. J'utilise google chrome sur ubuntu, et je ne vois pas comment faire ( j'ai regardé dans le remplissage automatique de formulaire, mais cela n'a pas l'air facilement configurable).  
J'ai fait une petite recherche, et certains parlent de perl, delphi avec requete post(). Je ne connais pas ces langages de prog mais je pense que pour ce que je veux en faire, cela ne doit pas demander beaucoup de ligne de code.
Sous windows, j'avais un logiciel du genre de Steganos Password Manager, vraiment pratique, mais je n'ai pas trouvé d'équivalent sous linux.
 
J'espère que vous pourrez m'aider
 
Merci d'avance.

Reply

Marsh Posté le 04-12-2010 à 14:36:28   

Reply

Marsh Posté le 04-12-2010 à 16:25:44    

Le module WWW::Mechanize est la pour ça (et bien plus).
Noter que sous linux, quelque chose comme wicd devrait aussi le faire.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 04-12-2010 à 19:24:11    

Merci gilou pour ta réponse.
J'ai regardé de près mechanize et j'ai voulu le tester sur le site de "La spirale", pour voir s'il m'identifiait, mais cela ne fonctionne pas.
Voici le code (qui me semble pourtant bon) :  
 

Code :
  1. #!/usr/bin/env ruby
  2. require 'rubygems'
  3. require 'mechanize'
  4. agent = WWW::Mechanize.new
  5. # Page de connexion
  6. page  = agent.get('http://spirale.aneantis.com/connexion.html')
  7. # Remplissage du formulaire de connexion
  8. form  = page.form('form1')
  9. form.login = 'mon login'
  10. form.pass1 = 'mon_mot_de_passe'
  11. form.click_button(form.button_with(:name => 'submit'))


 
As-tu une idée ?


Message édité par le_sayan le 04-12-2010 à 19:29:08
Reply

Marsh Posté le 04-12-2010 à 22:08:04    

Mais pourquoi balances tu du code ruby alors que tu as demandé de l'aide en Perl? J'avais mis le module en lien.
A la base en perl, cela devrait avoir cet aspect:

Code :
  1. #!/usr/bin/perl
  2.    use strict;
  3.    use warnings;
  4.    use WWW::Mechanize;
  5.  
  6.    my $url = 'http://spirale.aneantis.com/connexion.html';
  7.    my $login =  'mon login';
  8.    my $passwd = 'mon_mot_de_passe';
  9.  
  10.    my $mech = WWW::Mechanize->new();
  11.    $mech->get( $url );
  12.    $mech->submit_form(
  13.        form_name => 'form1'
  14.        fields    => {
  15.            login => $login,
  16.            pass1 => $passwd,
  17.        }
  18.    );
  19.   die unless ($mech->success);


Bon ensuite, il faut voir si ce qui est donné avec le submit form suffit au serveur (a priori, cela devrait être la cas).
Bref faut tester.
A+,


Message édité par gilou le 04-12-2010 à 22:15:44

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 05-12-2010 à 12:54:20    

Désolé pour le ruby, mais j'ai suivi ton lien sur mechanize et en cherchant à utiliser ce module, je suis tombé sur un tuto qui me semblait bien fait ... mais en ruby. J'ai donc voulu le tester.
 
Bref, j'ai exécuté ton code, mais cela ne fonctionnait pas : j’avais une erreur avec les " fields".J'ai un peu modifié la syntaxe de ton code mais cela ne marche toujours pas : le code tourne, mais l'identification ne se fait pas.
L'erreur viendrait des meta tags : j'ai donc rajouté l'option, mais j'ai une erreur :  
 
 

Code :
  1. #!/usr/bin/perl
  2.    use strict;
  3.    use warnings;
  4.    use WWW::Mechanize;
  5.  
  6.    my $url = 'http://spirale.aneantis.com/connexion.html';
  7.    my $login =  'mon_login';
  8.    my $passwd = 'mon-pwd';
  9.  
  10.    my $mech = WWW::Mechanize->new();
  11.    $mech->get( $url );
  12. print $mech->title, "\n";
  13.  
  14.     $mech->form_with_fields(("login", "pass1" ));        
  15.     $mech->field("login",$login);
  16.     $mech->field("pass1",$passwd);
  17.        
  18.        $mech->submit_form();
  19. print $mech->title, "\n";
  20.     $mech->follow_link(tag => 'meta');
  21. print $mech->title, "\n";
  22.       die unless ($mech->success);


 
 
l'erreur :   Can't call method "url" on an undefined value at /usr/share/perl5/WWW/Mechanize.pm line 713.
 

Reply

Marsh Posté le 05-12-2010 à 13:29:30    

Apparemment, mechanize ne fonctionne pas avec du javascript (mes espoirs tombent à l'eau ) :http://search.cpan.org/dist/WWW-Mechanize/lib/WWW/Mechanize/FAQ.pod#JavaScript
 
D'autres idées ?

Reply

Marsh Posté le 05-12-2010 à 14:42:22    

Si tu es sous Windows, il faut aller voir du coté du module Win32::IE::Mechanize qui fait appel a IE pour interpréter le javascript et remplacer WWW::Mechanize par ce module.
Si tu es sous Unix, c'est mal barré: tu peux jeter un oeil à WWW::Scripter et WWW::Scripter::Plugin::JavaScript mais je ne peux pas les tester sur mon implémentation de perl et donc je ne sais pas si ça colle.
A+,


Message édité par gilou le 05-12-2010 à 14:49:26

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 05-12-2010 à 14:46:26    

Je suis sous ubuntu. Je crois que je vais laisser tomber, c'en devient bien trop compliquer pour le besoin que j'en ai.
Merci quand même.
Bonne journée

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed