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 :

[web] Requetes HTTP en perl


Sujet :

Web Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 3
    Par défaut [web] Requetes HTTP en perl
    Bonjour, j'aimerais simuler les requetes http de mon naviguateur en perl afin qu'il m'automatise certaines taches.

    Mais je bloque au formulaire de login

    J'ai sniffer mes paquets pour essayer de voir d'ou venait le problème :


    Requete de mon naviguateur

    POST /login_redirige.php HTTP/1.1

    Host: *****.fr

    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) Gecko/20061010 Firefox/2.0

    Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

    Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3

    Accept-Encoding: gzip,deflate

    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

    Keep-Alive: 300

    Connection: keep-alive

    Content-Type: application/x-www-form-urlencoded

    Content-Length: 113



    Variable=http://*****.fr/***/&login=*****&password=******&Submit=Login&mail=cache
    HTTP/1.1 200 OK

    Date: Mon, 13 Nov 2006 06:15:45 GMT

    Server: Apache/2.0.54 (Debian GNU/Linux) mod_fastcgi/2.4.2 PHP/4.3.10-16

    X-Powered-By: PHP/4.3.10-16

    Content-Length: 393

    Keep-Alive: timeout=15, max=100

    Connection: Keep-Alive

    Content-Type: text/html



    <body bgcolor="#25333D">

    <form name="mulogin" method="post" action="http://*****.net/***/login_action.php" target="_parent">
    <input name="login" id="login" type="hidden" value="*****">
    <input name="passs" id="passs" type="hidden" value="***">
    <input name="mail" id="mail" type="hidden" value="cache">

    </form>

    <body onload="javascript:document.forms.mulogin.submit();">

    etc...(connexion réussi)

    Requete de mon script perl :

    POST /login_redirige.php HTTP/1.1

    Host: *******.fr
    Accept: */*
    Connection: keep-alive
    Variable=http://*****.fr/***/&login=*****&password=******&Submit=Login&mail=cache


    HTTP/1.1 200 OK

    Date: Mon, 13 Nov 2006 06:14:51 GMT

    Server: Apache/2.0.54 (Debian GNU/Linux) mod_fastcgi/2.4.2 PHP/4.3.10-16

    X-Powered-By: PHP/4.3.10-16

    Content-Length: 221

    Keep-Alive: timeout=15, max=100

    Connection: Keep-Alive

    Content-Type: text/html



    <body bgcolor="#25333D">
    <script language=javascript> alert ("Vous avez oubli. de remplir un champ.");</script><script language="javascript" type="text/javascript">
    <!--

    window.location.replace("index.php");
    -->
    </script><html>
    etc... (redirection page d'acceuil sans être loger)
    Je ne comprends pas pourquoi je n'obtient pas le mème resultat pour deux requetes semblables.


    Pour infos voici mon script perl:
    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
    use IO::Socket;
    $socket = IO::Socket::INET->new(Proto => "tcp", PeerAddr => "******.fr", PeerPort => "80") || die "\n+ Connection failed...\n";
    print $socket "POST /login_redirige.php HTTP/1.1\r\n";
    print $socket "Host: ******r\n";
    print $socket "Accept: */*\n";
    print $socket "Connection: keep-alive\n\n";
    print $socket  "
     
     
    Variable=http://*****.fr/***/&login=*****&password=******&Submit=Login&mail=cache\n\n";
    print "+ Connected!...\n";
    #Getting
    while($answer = <$socket>) {
     
     
    printf $answer;
     
    }
    Merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Par défaut
    regarde du coté de WWW::Mechanize
    http://search.cpan.org/~petdance/WWW-Mechanize-1.20/

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 3
    Par défaut
    Merci je vais essayer avec ca.
    Mais y'a pas moyen de trouver d'ou vien l'erreur dans mon code ?
    Parce que 'ai fais le mème en php et ca a marché...

    Merci

  4. #4
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Les requêtes HTTP ont un format très strict. Ta requête ne respecte pas ce format.

    Par exemple, une requête POST doit impérativement contenir le champs Content-Length. Ou encore, une ligne blanche doit séparer le corps (les couples variables/valeurs) de l'entête.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 3
    Par défaut
    Merci, la requete Post fonctionne !!
    Par contre je n'arrive pas à faire un Get.
    Voici la requete que j'ai a simuler :

    GET /**/****i.php HTTP/1.1

    Host: *****.net

    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) Gecko/20061010 Firefox/2.0

    Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

    Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3

    Accept-Encoding: gzip,deflate

    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

    Keep-Alive: 300

    Connection: keep-alive

    Cookie: wtf_powa=2b09a05c0e8dfd2ac6d9bc1dd79adda1; PHPSESSID=GET /uni1/galaxi.php HTTP/1.1

    Host: ns21916.ovh.net

    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) Gecko/20061010 Firefox/2.0

    Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

    Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3

    Accept-Encoding: gzip,deflate

    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

    Keep-Alive: 300

    Connection: keep-alive

    Cookie: wtf_powa=***************************; PHPSESSID=**************************

    Et voici à quoir ressemble mon scipt perl :

    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
     
    $socket = IO::Socket::INET->new(Proto => "tcp", PeerAddr => "******.fr", PeerPort => "80") || die "\n+ Connection failed...\n";
    print $socket "GET /***/****i.php HTTP/1.1\r\n\r\n";
    print $socket "Host: ******.net\r\n";
    print $socket "Accept: */*\n";
    print $socket "Content-Type: application/x-www-form-urlencoded\r\n";
    print $socket  "Keep-Alive: 300\r\n";
    print $socket  "Connection: keep-alive\r\n";
     
    print $socket  "Cookie: wtf_powa=*********************; PHPSESSID=***********************
    \r\n\r\n";
    print "+ Connected!...\n";
    #Getting
    while($answer = <$socket>) {
     
     
    printf $answer;
     
    }
    Malheuresement il me met :
    <p>Your browser sent a request that this server could not understand.<br />

    J'imagine que la requete POST doit aussi avoir un format tres strict, mais je ne le connais pas.


    Merci d'avance

Discussions similaires

  1. [2.x] Requete HTTP vers serveur web
    Par Alex63530 dans le forum Symfony
    Réponses: 5
    Dernier message: 07/05/2014, 23h05
  2. requete HTTP mobile (J2ME) serveur web
    Par jonbegood dans le forum Java ME
    Réponses: 2
    Dernier message: 22/04/2013, 12h38
  3. [http] comment faire une requete http
    Par Slimer dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 28/07/2004, 11h48
  4. Réponses: 4
    Dernier message: 16/07/2004, 09h16
  5. Réponses: 3
    Dernier message: 01/06/2004, 09h44

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