Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1298 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  Perl + LWP + Cookie

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Perl + LWP + Cookie

n°1805552
couak
Posté le 28-10-2008 à 16:01:57  profilanswer
 

J'ai un soucis dans l'utilisation de LWP, je ne comprend pas où ca merde.
J'utilise en parallèle JMeter pour "sniffer" et reproduire les dialogues avec le serveur HTTP
 
 
Mon code commence "normal" :
 

Code :
  1. use Data::Dumper;
  2. use HTTP::Request::Common qw(POST);
  3. use LWP::UserAgent;
  4. use HTTP::Cookies;
  5. $ua = LWP::UserAgent->new();
  6. $cookie_jar = HTTP::Cookies->new(
  7.         file => "lwpcookies.txt",
  8.         hide_cookie2 => 1,
  9.         autosave => 1);
  10. $ua->cookie_jar($cookie_jar);


 
Première requête : affichage de la page de login

Code :
  1. $req = HTTP::Request->new(GET => 'http://xxxx.yyyy.net/myccs2/sms_login.aspx?action=login&md=Home');
  2. print "\n\n============================= Request ===========================\n";
  3. print "\n";
  4. print "header => ".$req->headers_as_string();
  5. print "request = ".$req->as_string;
  6. print "\n\n============================= Response ==========================\n";
  7. my $result = $ua->request($req)->as_string;


 
Côté header et requête, j'obtiens ca :

Citation :


============================= Request ===========================
header =>
request = GET http://xxxx.yyyy.net/myccs2/sms_lo [...] mp;md=Home


 
Ca me plait car quand je le fais avec JMeter j'ai la même chose :


 
Cette fois-ci j'envoie un POST pour faire un login avec password associé :

Code :
  1. my $req = POST 'http://xxxx.yyyy.net/myccs2/sms_login.aspx?action=login&md=Home',
  2. [
  3.         '__EVENTTARGET'         => '',
  4.         '__EVENTARGUMENT'       => '',
  5.         '__VIEWSTATE'           => '/wEPDwUKMTE0NTk3NDY0Nw9kFgJmD2QWAgIED2QWAgIFD2QWAgIBDzwrABUBAA8WAh4OXyFVc2VWaWV3U3RhdGVnZBYCZg9kFgJmD2QWAmYPZBYCZg9kFgJmD2QWAgICD2QWAgIBD2QWAmYPZBYCAgcPPCsABQEADxYCHwBnZGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgIFD2N0bDAwJHJwJHBoMyR0bQUQY3RsMDAkcGg0JHJwbSRzbQ==',
  6.         'ctl00_rp_ph3_tmSI'     => '',
  7.         'ctl00$ph5$rp$Username' => 'monlogin',
  8.         'ctl00$ph5$rp$Password' => 'monpasswd',
  9.         '__CALLBACKID'          => 'ctl00$ph5$rp$callback',
  10.         '__CALLBACKPARAM'       => 'undefined'
  11. ];
  12. $cookie_jar->add_cookie_header($req);
  13. print "\n\n============================= Request ===========================\n";
  14. print "header => ".$req->headers_as_string();
  15. print "\n";
  16. print "request = ".$req->as_string;


 
Côté requête j'obtiens ca :

Citation :


============================= Request ===========================
header => Content-Length: 476
Content-Type: application/x-www-form-urlencoded
Cookie: ASP.NET_SessionId=sbncklabld0rkb45eibeamzf
 
request = POST http://xxxx.yyyy.net/myccs2/sms_lo [...] in&md=Home
Content-Length: 476
Content-Type: application/x-www-form-urlencoded
Cookie: ASP.NET_SessionId=sbncklabld0rkb45eibeamzf
 
__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwUKMTE0NTk3NDY0Nw9kFgJmD2QWAgIED2QWAgIFD2QWAgIBDzwrABUBAA8WAh4OXyFVc2VWaWV3U3RhdGVnZBYCZg9kFgJmD2QWAmYPZBYCZg9kFgJmD2QWAgICD2QWAgIBD2QWAmYPZBYCAgcPPCsABQEADxYCHwBnZGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgIFD2N0bDAwJHJwJHBoMyR0bQUQY3RsMDAkcGg0JHJwbSRzbQ%3D%3D&ctl00_rp_ph3_tmSI=&ctl00%24ph5%24rp%24Username=monlogin&ctl00%24ph5%24rp%24Password=monpasswd&__CALLBACKID=ctl00%24ph5%24rp%24callback&__CALLBACKPARAM=undefined


Le résultat est bon et j'obtiens ce qu'il faut
 
Ce qui est sensiblement identique que la requête faite avec JMeter. On remarque que la seule chose qui diffère est la valeur du cookie utilisée pour la session :

Citation :


POST http://xxxx.yyyy.net/myccs2/sms_lo [...] in&md=Home
 
POST data:
__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwUKLTg1NTMwNzk2NA9kFgJmD2QWAgIED2QWAgIFD2QWAgIBDzwrABUBAA8WAh4OXyFVc2VWaWV3U3RhdGVnZBYCZg9kFgJmD2QWAmYPZBYCZg9kFgJmD2QWAgICD2QWAgIBD2QWAmYPZBYCAgMPPCsABQEADxYCHwBnZGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgIFD2N0bDAwJHJwJHBoMyR0bQUQY3RsMDAkcGg0JHJwbSRzbQ%3D%3D&ctl00_rp_ph3_tmSI=&ctl00%24ph5%24rp%24Username=monlogin&ctl00%24ph5%24rp%24Password=monpasswd&__CALLBACKID=ctl00%24ph5%24rp%24callback&__CALLBACKPARAM=undefined
 
Cookie Data:
ASP.NET_SessionId=pbe2czqeluywyo45wdp33z45


 
 
Bon et bien maintenant voilà là où ca merde : j'essaie de requêter une page accessible uniquement une fois loggué :

Code :
  1. $req = HTTP::Request->new(GET => 'http://xxxx.yyyy.net/myccs2/sms_outlook.aspx');
  2. $req->referer('http://xxxx.yyyy.net/myccs2/sms_login.aspx?action=login&md=Home');
  3. $cookie_jar->add_cookie_header($req);
  4. print "\n\n============================= Request ===========================\n";
  5. print "header => ".$req->headers_as_string();
  6. print "request = ".$req->as_string;


 
La requête semble bonne :

Citation :


============================= Request ===========================
header = Cookie: ASP.NET_SessionId=sbncklabld0rkb45eibeamzf
 
request = GET http://xxxx.yyyy.net/myccs2/sms_outlook.aspx
Referer: http://xxxx.yyyy.net/myccs2/sms_lo [...] in&md=Home
Cookie: ASP.NET_SessionId=sbncklabld0rkb45eibeamzf


 
Sensiblement pareil que la requête faite par JMeter :

Citation :


GET http://xxxx.yyyy.net/myccs2/sms_outlook.aspx
 
Cookie Data:
ASP.NET_SessionId=pbe2czqeluywyo45wdp33z45


 
Avec Jmeter ca passe, mais avec mon script Perl je reviens à la page de login... Alors là je comprends pas, si une âme charitable pouvait me dépanner dans l'utilisation de LWP.. thanks

mood
Publicité
Posté le 28-10-2008 à 16:01:57  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  Perl + LWP + Cookie

 

Sujets relatifs
Utilisation d'un programme perl sous VBAProblème d'execution de module perl
[PERL] Lecture bufferisé sur socketProblème d'affichage perl
ou est passé ce cookie flashproblem de recuperation du contenu d variable sous perl
problem de recuperation du contenu d variable sous perlaccés de partout au cookie
[Perl ou Java?] Comment cacher la valeur d'un attribut dans du XML[PERL] Remplacement d'une fil d'attente
Plus de sujets relatifs à : Perl + LWP + Cookie


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR