Página 1 de 2

Login request Post web

NotaPublicado: 2016-12-28 18:02 @793
por jimr1984
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.003 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.

Re: Login request Post web

NotaPublicado: 2016-12-28 20:23 @891
por explorer
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.001 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.001 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.

Re: Login request Post web

NotaPublicado: 2019-04-23 17:19 @763
por programadorCO
Hola, estoy realizando algo similar y me arroja el siguiente error
Free to wrong pool e57d50 not 9202ff007e25b6af at C:/Perl64/lib/IO/Socket/SSL.pm line 2739.
¿A qué se debe este error? Gracias por su ayuda.

Re: Login request Post web

NotaPublicado: 2019-04-23 19:18 @846
por explorer

Re: Login request Post web

NotaPublicado: 2019-04-24 13:15 @594
por programadorCO
Hola, explorer.

Según indican el error se corrigió para la versión 1.85 del módulo Net::SSLeay.

Aquí indican la solución que se iba a implementar en la última versión:

https://rt.cpan.org/Public/Bug/Display. ... xn-1795167

Descargué la última versión de Net::SSLeay pero no me funciona. Ahí hablan sobre un parche pero no sé cómo adecuarlo.

Re: Login request Post web

NotaPublicado: 2019-04-25 14:29 @645
por explorer
Según la página de MetaCPAN, sí que está ahí la versión 1.85 de Net-SSLeay, y además pone exactamente que está corregido ese error.

O no te has bajado esa versión o no la has instalado bien.

Mira. Esto lo he ejecutado en mi computadora:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
> perl -MNet::SSLeay -E 'say $Net::SSLeay::VERSION'
1.85
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Re: Login request Post web

NotaPublicado: 2019-04-25 20:03 @877
por programadorCO
Ya logré que funcione. Ahora cuando intento adjuntar un archivo me sale este error:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
400 URL missing
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


El llamado al servicio lo realizo así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $request = HTTP::Request->new(POST $url, Content_Type => 'multipart/form-data', Content => [ file => [$file_path]]);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

¿Qué puede estar pasando?

Cuando lo realizo con este otro código funciona pero me sale error del pendiente del archivo.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $request = HTTP::Request->new('POST', $url, $header, $encoded_data);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4



Gracias por su apoyo.

Re: Login request Post web

NotaPublicado: 2019-04-26 04:34 @232
por explorer
Te falta un '=>' después de 'POST'.

O una coma (tiene el mismo efecto).

Re: Login request Post web

NotaPublicado: 2019-04-26 08:04 @377
por programadorCO
Al poner la ',' o '=>' me sale este mensaje
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Bad header argument
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Re: Login request Post web

NotaPublicado: 2019-04-29 14:59 @666
por explorer
Veamos el código que estás probando...