• Publicidad

Login request Post web

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Login request Post web

Notapor jimr1984 » 2016-12-28 18:02 @793

Hola, estoy intentando registrarme vía POST.

Lo que realicé fue lo siguiente: tengo una cuenta en la página xxxx.com, user: pepito, pass: 123.

Realicé el registro vía web y capturé el tráfico utilizando un proxy y esta es la petición:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
POST /appejemplo/cpuMovil/Login HTTP/1.1
Authorization: Basic Dk2NzNkZmIwN2U1MWEwZGZmYTc0NWE5MTAzOGU1NDgw
Content-Length: 33
Content-Type: application/x-www-form-urlencoded
Host: webservice.ejemplo.com.bo
Connection: Keep-Alive
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)

Username=pepito&Password=123
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Por seguridad los datos están cambiados. Este es mi código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3.  
  4.  
  5. use strict;
  6. use warnings;
  7.  
  8. use LWP::UserAgent;
  9. use HTTP::Cookies;
  10. use HTTP::Request;
  11.  
  12.  
  13.  
  14. #conecto a la 1ra url y guardo cookies  sin https
  15.  
  16.  
  17. my $url = "http://webservice.ejemolo.com.bo/appejemplo/cpuMovil/Login";
  18.  
  19.  
  20. my $datos = "Username=pepito&Password=123";
  21.  
  22.  
  23. my $ua = LWP::UserAgent->new();
  24.  
  25. my $cookies = HTTP::Cookies->new(
  26.     file     => 'COOKIES.dat',
  27.     autosave => 1,
  28. );  
  29.  
  30. $ua->cookie_jar($cookies);
  31. $ua->timeout(30);
  32. $ua->agent("Apache-HttpClient/UNAVAILABLE (java 1.4)");
  33.  
  34.  
  35. my $reqw = HTTP::Request->new(POST => $url);
  36. $reqw->content_type('application/x-www-form-urlencoded');
  37. $reqw->content($datos);
  38.  
  39. my $responsew = $ua->request($reqw);
  40. my $contentw = $responsew->content(); #contenido de la respuesta
  41.  
  42. print $contentw;
  43.  
Coloreado en 0.009 segundos, usando GeSHi 1.0.8.4

y la respuesta es: "Message":"Se ha denegado la autorizaci├│n para esta solicitud."

Siendo que los datos están correctos estoy suponiendo que el problema está en la petición ya que vía web se registra sin problemas.

Por eso es que pensé en utilizar la petición capturada con el proxy.

Quizás una alternativa sería guardar la petición en archivo, luego leerlo y enviarlo. No sé, por decir algo. Aguardo si me pueden ayudar. Muchas gracias.

Saludos.
jimr1984
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 96
Registrado: 2012-11-25 07:11 @341

Publicidad

Re: Login request Post web

Notapor explorer » 2016-12-28 20:23 @891

Pero es que no sabemos realmente cómo se hace la autenticación. Podría haber código JavaScript que hiciera una comprobación. Los datos de la Authorization: Basic podrían ser dependientes de muchas cosas, no solo del nombre de usuario y contraseña. Quizás el servidor web haga una comprobación de la dirección anterior de donde proviene la petición (lo que en el registro de actividad web llamamos Referer).

Yo, lo que sí haría es no usar content() para añadir el nombre de usuario y contraseña. Usaría algo como esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $ua->request(
  2.         POST $url,
  3.         [ Username => 'pepito', Password => '123'],
  4. );
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4
(sacado de HTTP::Request::Common) Además, queda un poco más claro.

¡Ojo! En la petición no va el campo Authorization. Si es obligatorio, mejor hacerlo así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $ua->request(
  2.         POST $url,
  3.         Authorization => 'Basic Dk2NzNkZmIwN2U1MWEwZGZmYTc0NWE5MTAzOGU1NDgw',
  4.         Content => [ Username => 'pepito', Password => '123'],
  5. );
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4

Fíjate a ver si el valor de Authorization cambia con cada petición. Podría estar almacenando el valor de la sesión, por lo que será obligatorio usarlo.
JF^D Perl Programming
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 13884
Registrado: 2005-07-24 18:12 @800
Ubicación: Madrid, España


Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados