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 :

Recuperation de cookie avec LWP::UserAgent && HTTP::Cookies


Sujet :

Web Perl

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Recuperation de cookie avec LWP::UserAgent && HTTP::Cookies
    Bonjour a tous,
    Apres de nombreuses recherches je ne parviens pas a recuperer les cookies d une page web.

    Mes principales recherches m'ont menes a utiliser HTTP::Cookies dans LWP::UserAgent
    Voila le code que j ai actuellement (concernant le 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
    19
    20
    21
    22
    23
    24
    25
    #!/usr/bin/perl
     
    use strict;
    use LWP::UserAgent;
    use HTTP::Cookies;
    use Data::Dumper;
     
    my $cookie = HTTP::Cookies->new(
        file           => 'cookie.txt',
        autosave       => 1,
        ignore_discard => 1
        );
     
    my $ua = new LWP::UserAgent;
     
    $ua->agent("Mozilla 3.6.2");
    $ua->cookie_jar($cookie);
     
    my $req = new HTTP::Request(
        GET         => 'http://***URL***/test.html'
        );
     
    my $res = $ua->request($req);
     
    $cookie->extract_cookies($res);
    Et concernant la page web en question :
    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
     
    <html>
        <head>
            <script language="JavaScript">
            function setCookie(nom, valeur, jours)
            {
                var expDate = new Date()
                expDate.setTime(expDate.getTime() + (jours * 24 * 3600 * 1000))
                document.cookie = nom + "=" + escape(valeur)
                + ";expires=" + expDate.toGMTString()
            }
            </script>
        </head>
        <body>
            <script>
                setCookie("toto", 24, 2);
            </script>
        </body>
    </html>
    Le cookie se SET correctement dans le navigateur internet, cependant dans cookie.txt il n'y a que "#LWP-Cookies-1.0"

    J ai souvent trouve sur le net l utilite de l attribut "ignore_discard" set a 1 pour la gestion des cookies. mais il y est deja et ca n a pas resolu le probleme.

    Si quelqu'un parmi vous a une idee de l origine du probleme j en serai tres reconnaissant.

    Merci

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Il y a du nouveau : lorsque je cree un cookie en PHP, j arrive a le recuperer mais toujours rien pour les cookies crees en JS

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Août 2008
    Messages : 505
    Points : 712
    Points
    712
    Par défaut
    Citation Envoyé par tony872 Voir le message
    Il y a du nouveau : lorsque je cree un cookie en PHP, j arrive a le recuperer mais toujours rien pour les cookies crees en JS
    Ca me parait logique. LWP ne sait pas exécuter du javascript (ni mechanize d'ailleurs). Je ne vois pas vraiment de solution "perl", ou "python" d'ailleurs à ce type de problème.

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 164
    Points : 218
    Points
    218
    Par défaut
    Bonjour,

    Le plus pratique, pour créer et lire un cookie en Perl est d'utiliser le module CGI.pm
    voici deux scripts cgi à placer dans le même répertoire du serveur, le premier crée un cookie, le second le lit.
    (Il faudra changer la première ligne car je les ai testés sous windows)
    On peut appeler le premier creercookie.cgi et le second lirecookie.cgi
    Voici donc creercookie.cgi
    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
    #!/perl/bin/perl -wT
    use CGI qw(:standard) ;
    use CGI::Carp qw(warningsToBrowser fatalsToBrowser) ;
    use strict ;
    my $cookie=cookie(-name=>'moncookie',
                      -value=>'#LWP-Cookies-1.0',
                      -expire=>'+3d') ;
    print header(-cookie=>$cookie) ;
    print start_html("Exemple de cookie");
    print <<EndofData;
    <h2>Bonjour </h2>
    Je viens de créé un cookie nommé moncookie
    de valeur : #LWP-Cookies-1.0
    d'une durée de vie de 3 jours.
    </body></html>
    EndofData
    Et voici lirecookie.cgi
    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
    #!/perl/bin/perl -wT
    use CGI qw(:standard) ;
    use CGI::Carp qw(warningsToBrowser fatalsToBrowser) ;
    use strict ;
     
    print header ;
    print start_html("Exemple de lecture d'un cookie") ;
    print h2("Bonjour") ;
    if(my $valeurducookie=cookie('moncookie'))
    {
      print "la valeur du cookie nommé moncookie est $valeurducookie\n";
    }
    else
    {
    print "Il n'existe pas de cookie nommé moncookie\n";
    }
    print end_html ;
    CGI.pm permet de créer plusieurs cookie et de définir leurs propriétés.
    Après la mise au point il plus prudent de supprimer la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    use CGI::Carp qw(warningsToBrowser fatalsToBrowser) ;
    des scripts.
    Cordialement,
    Nibroc.


    Citation Envoyé par tony872 Voir le message
    Bonjour a tous,
    Apres de nombreuses recherches je ne parviens pas a recuperer les cookies d une page web.

    Mes principales recherches m'ont menes a utiliser HTTP::Cookies dans LWP::UserAgent
    Voila le code que j ai actuellement (concernant le 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
    19
    20
    21
    22
    23
    24
    25
    #!/usr/bin/perl
     
    use strict;
    use LWP::UserAgent;
    use HTTP::Cookies;
    use Data::Dumper;
     
    my $cookie = HTTP::Cookies->new(
        file           => 'cookie.txt',
        autosave       => 1,
        ignore_discard => 1
        );
     
    my $ua = new LWP::UserAgent;
     
    $ua->agent("Mozilla 3.6.2");
    $ua->cookie_jar($cookie);
     
    my $req = new HTTP::Request(
        GET         => 'http://***URL***/test.html'
        );
     
    my $res = $ua->request($req);
     
    $cookie->extract_cookies($res);
    Et concernant la page web en question :
    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
     
    <html>
        <head>
            <script language="JavaScript">
            function setCookie(nom, valeur, jours)
            {
                var expDate = new Date()
                expDate.setTime(expDate.getTime() + (jours * 24 * 3600 * 1000))
                document.cookie = nom + "=" + escape(valeur)
                + ";expires=" + expDate.toGMTString()
            }
            </script>
        </head>
        <body>
            <script>
                setCookie("toto", 24, 2);
            </script>
        </body>
    </html>
    Le cookie se SET correctement dans le navigateur internet, cependant dans cookie.txt il n'y a que "#LWP-Cookies-1.0"

    J ai souvent trouve sur le net l utilite de l attribut "ignore_discard" set a 1 pour la gestion des cookies. mais il y est deja et ca n a pas resolu le probleme.

    Si quelqu'un parmi vous a une idee de l origine du probleme j en serai tres reconnaissant.

    Merci

Discussions similaires

  1. recuperation du mois avec un timestamp
    Par matrxjean1984 dans le forum Requêtes
    Réponses: 3
    Dernier message: 16/10/2003, 14h41

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