• Publicidad

Realizar método POST con LWP::UserAgent

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Realizar método POST con LWP::UserAgent

Notapor BigBear » 2013-12-04 20:29 @895

Hola. Estoy formando la petición POST a cierta página pero la duda que me mató fue cuando vi este código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. <input name="md5" class="text_input" value="Put MD5 hash here" onclick="if(this.value=='Put MD5 hash here')this.value='';" onblur="if(this.value=='')this.value='Put MD5 hash here';" type="text">
  2. </td><td>
  3. <center><span style="font-weight: bold"><input src="/img/search_button2.png" title="go >>>" type="image"></span></center>
  4. </td></tr>
  5. </tbody></table>
  6. </form>
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


El código del script:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use LWP::UserAgent;
  2.  
  3. my $nave = LWP::UserAgent->new;
  4. $nave->agent(
  5. "Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12"
  6. );
  7. $nave->timeout(10);
  8.  
  9. my $code = tomar("http://md5.my-addr.com/md5_decrypt-md5_cracker_online/md5_decoder_tool.php",{ 'md5' => $md5});
  10.  
  11. sub tomar {
  12.     my ( $web, $var ) = @_;
  13.     return $nave->post( $web, [ %{$var} ] )->content;
  14. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


En lugar de usar "submit"=>"Boton" tengo que hacer clic en la imagen para usar el servicio. El problema es que no sé cómo seguir la péticion POST con este módulo porque no quiero usar Mechanize.

¿ Alguien me puede ayudar ?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Realizar método POST con LWP::UserAgent

Notapor explorer » 2013-12-04 21:01 @917

No hay que "hacer clic en la imagen".

Solo tienes que hacer una petición POST con todos los parámetros que el cgi espera en el otro lado.

Tienes ejemplos en perldoc lwpcook y perldoc lwptut.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Realizar método POST con LWP::UserAgent

Notapor BigBear » 2013-12-04 21:04 @919

No es un cgi, es esta página: http://md5.my-addr.com/md5_decrypt-md5_ ... r_tool.php Lo único que me falta es completar la petición "{ 'md5' => $md5}" que normalmente hay un botón pero en este caso es una imagen y no sé qué hacer porque si es botón quedaría así: { 'md5' => $md5 , 'submit' => 'Load'}.
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: Realizar método POST con LWP::UserAgent

Notapor explorer » 2013-12-04 21:58 @957

Si la página contiene un formulario (y lo tiene) entonces estamos hablando de una petición GET o POST, y en el otro lado habrá un cgi o cualquier otro programa que debe procesar esa petición. Bueno, pues esa petición la construyes como si rellenaras el formulario y lo enviases mediante una petición HTTP GET o POST normal.

Lo que es trabajoso es averiguar todas las piezas que debe tener ese formulario.

En el caso de un botón imagen, debes enviar dos parámetros con las posiciones x e y del pixel que el usuario ha pulsado dentro del botón... pero... como yo no veo que el control <input> tenga un nombre, supongo que esos datos no le importan.

Vamos a hacer una prueba. LWP viene con un programa que se llama lwp-request, que sirve para hacer peticiones. Un alias de ese programa es POST (en algunas distribuciones Linux no está, pero sí en la mayoría) que lo que hace es llamar a lwp-request en modo POST (obvio).

Vamos a ver qué pasa:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. $ echo -n "md5=d8578edf8458ce06fbc5bb76a58c5ca4" | POST http://md5.my-addr.com/md5_decrypt-md5_ ... r_tool.php |fgrep 'Hashed string'
  2. <div class='white_bg_title'><span class='middle_title'>Hashed string</span>: qwerty</div>
  3. $
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Efectivamente, solo es necesario el parámetro 'md5' :)
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Realizar método POST con LWP::UserAgent

Notapor BigBear » 2013-12-05 10:56 @497

Ya lo había probado así con el código anterior y el formulario no funciona porque no realiza la acción y se queda la página como siempre estuvo.

Edito : perdon fue un error mio me habia olvidado de completar la variable $md5 , como siempre gracias por la ayuda explorer.
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818


Volver a Básico

¿Quién está conectado?

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