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 :

Valider form javascript via perl


Sujet :

Web Perl

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 87
    Points : 92
    Points
    92
    Par défaut Valider form javascript via perl
    Bonjour,

    Je cherche à récupérer un fichier généré par une page HTML d'un site.

    Le formulaire du site est des plus simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form method=post>
    blablabla...
    <input type=button name="Apply" value="Apply" onClick="if (verifForm()) formSubmit(this.form,this)">
    </form>
    Outre les fonctions javascript de validation de formulaire, j'ai cette fonction là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function formSubmit(formulaire, boutonApply)
    {
    boutonApply.disabled = true
    formulaire.submit()
    }
    La page se rappelle donc elle-même vu qu'il n'y a pas d'action.
    Je n'ai bien évidemment pas le code source de cette page, autre que le code HTML généré..

    Je voudrais donc envoyer mon formulaire en POST (ça c'est bon), mais je me retrouve avec le code source de la page HTML en réponse (avec mes boutons radio et autre en checked, comme quoi mes variables POST sont bien récupérées).
    Je voudrais donc simuler un submit de cette page afin qu'elle me génère mon fichier..

    Voici mon code (la première partie sert à s'authentifier et créer un cookie)

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    #!/usr/bin/perl
     
    use LWP::UserAgent;
    $ua = LWP::UserAgent->new;
     
     
    die ("Usage: $0 <n>\n")
            if ( !defined ($ARGV[0]) );
     
    my $host = $ARGV[0];
    my $nameFile = substr($host,4,8);
     
    my $req = HTTP::Request->new(POST => "http://$host");
    $req->content_type('application/x-www-form-urlencoded');
     
    # On transmet le password de l'utilisateur pour simuler la connection
    $req->content("SessionLoginForm=");
     
    my $res = $ua->request($req);
    my %headers = %{$res->headers};
    print "$_: $headers{$_}\n" for keys %headers;
    print "\n";
    print $res->content;
    print "\n";
    print "\n";
     
    $req = HTTP::Request->new(POST => "http://$host/http_eqt_file_upload.htm");
    #                 [EqtFileIpServerForm => '10.1.80.24',
    #                  Upload => '1',
    #                  EqtFileUploadForm => "$nameFile.dat"]);
    $req->content_type('application/x-www-form-urlencoded');
     
    $req->content("EqtFileIpServerForm=10.1.80.24&Upload=1&EqtFileUploadForm=$nameFile.dat");
     
    $res = $ua->request($req);
    %headers = %{$res->headers};
    print "$_: $headers{$_}\n" for keys %headers;
    print "\n";
    print $res->content;
    print "\n";
    Merci d'avance,

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 87
    Points : 92
    Points
    92
    Par défaut
    hummm... en fait, j'ai une erreur de session:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <span id=Lerror class=erreur>Error: No Session &nbsp; &nbsp; <a href=/ target=_top>Login</a></span>
    Comment peut-on forcer l'authentification du coup dans la première partie du script?

  3. #3
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    Je pense que ce tuto pourra te dépanner :
    http://articles.mongueurs.net/magazines/linuxmag56.html

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 87
    Points : 92
    Points
    92
    Par défaut
    Ah yes, gestion des cookies et autres!
    Merci, je vais me pencher sur cet article et je te tiens au jus

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 87
    Points : 92
    Points
    92
    Par défaut
    Merci à toi Mr6!!
    ca fonctionne nickel

    je clarifie mon code un peu en enlevant les print que j'ai fait partout, et je vous le communique (après manger )

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 87
    Points : 92
    Points
    92
    Par défaut
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    #!/usr/bin/perl -w
     
    use strict;
    use LWP::UserAgent;
    use HTML::Form;
    use HTTP::Cookies;
    use Data::Dumper;
     
    die ("Usage: $0 <n>\n")
            if ( !defined ($ARGV[0]) );
     
    my $host = "http://$ARGV[0]";
    my $pass='';
    my $cookie = "cookie_".substr($host,11,8).".txt";
     
    # initialisation de l'agent
    # on prend celui de IE car l'équipement n'en supporte pas d'autre
    my $ua = LWP::UserAgent->new(
    	agent      => 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',
    	cookie_jar => HTTP::Cookies->new(
    		file           => $cookie,
    		autosave       => 1,
    		ignore_discard => 1,        # le cookie devrait etre efface a la fin
    	)
    );
     
    my $req = HTTP::Request->new( GET => "$host" );
     
    # execute la requete et recoit la reponse
    my $res = $ua->request($req);
    die $res->status_line if not $res->is_success;
     
    # le formulaire de login est le premier formulaire de la page
    my $form = ( HTML::Form->parse( $res->content, $host ) )[0];
     
    # on remplit les champs
    $form->find_input('SessionLoginForm')->value($pass);
     
    $ua->request( $form->click );
     
    # une fois la connection creee avec le cookie,
    # on se connecte sur la page qui génère le fichier de conf
     
    $req = HTTP::Request->new(GET => "$host/http_eqt_file_upload.htm");
    $req->content_type('application/x-www-form-urlencoded');
     
    # execute la requete et recoit la reponse
    $res = $ua->request($req);
    die $res->status_line if not $res->is_success;
     
    # le formulaire de login est le premier formulaire de la page
    $form = ( HTML::Form->parse( $res->content, $host ) )[0];
     
    # remplit les champs pour récupérer la DB
    $form->find_input('EqtFileIpServerForm')->value('10.1.80.24');
    $form->find_input('Upload')->value(1);
    $form->find_input('EqtFileUploadForm')->value(substr($host,11,8).'.dat');
     
    # valide et renvoie le formulaire
    $ua->request( $form->click );
     
    # remplit les champs pour récupérer le Network
    $form->find_input('EqtFileIpServerForm')->value('10.1.80.24');
    $form->find_input('Upload')->value(2);
    $form->find_input('EqtFileUploadForm')->value(substr($host,11,8).'.net');
     
    # valide et renvoie le formulaire
    $ua->request( $form->click );
     
    exec("rm $cookie");

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

Discussions similaires

  1. Valider un formulaire via LWP et HTML::Form
    Par altecad dans le forum Web
    Réponses: 2
    Dernier message: 19/04/2007, 16h32
  2. validation form en fonction de plusieurs groupe de checkbox
    Par Steph777 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/01/2006, 12h00
  3. Bizarreries Javascript avec Perl
    Par minusette dans le forum Web
    Réponses: 7
    Dernier message: 24/11/2005, 17h57
  4. [Struts] Validate Form et ActionError
    Par cosmos38240 dans le forum Struts 1
    Réponses: 4
    Dernier message: 25/10/2005, 16h00
  5. Réponses: 2
    Dernier message: 30/05/2002, 08h54

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