• Publicidad

Accesar a un formulario con LWP

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Accesar a un formulario con LWP

Notapor viaris » 2006-06-19 12:18 @554

Hola a todos,

En una página WEB XX hay un formulario para el envío de SMS a celulares. Necesito enviarme a un celular alertas de mis servidores. Estoy usando el módulo de CPAN LWP pero no funciona. les dejo el programa que estoy haciendo para esto.
Código: Seleccionar todo
#!/usr/bin/perl -W

use strict;
use HTTP::Request::Common qw(POST);
use HTTP::Response;
use LWP::UserAgent;
use LWP::Debug qw(+);

#use LWP;

my $browser = LWP::UserAgent->new();

my $response = $browser->post('http://www.teletoniaxy.com/sms/index.php',{PHPSESSID => 'f49db37436ffcc033daa986ee62c1fbd', 64404 => '64404', sms_num => '5023658', rem_sms => '5023658', sms_mns => 'server XYZ down", Reset => 'Borra', submit => 'Envia'});

print $response->content();


En el debug tengo lo siguiente:

LWP::UserAgent::new: ()
LWP::UserAgent::request: ()
LWP::UserAgent::send_request: POST http://www.enitelmovil.com.ni/webechat/index.php
LWP::UserAgent::_need_proxy: Not proxied
LWP::Protocol::http::request: ()
LWP::Protocol::collect: read 626 bytes
LWP::Protocol::collect: read 3851 bytes
LWP::Protocol::collect: read 1016 bytes
LWP::Protocol::collect: read 3637 bytes
LWP::Protocol::collect: read 1016 bytes
LWP::Protocol::collect: read 3696 bytes
LWP::Protocol::collect: read 1016 bytes
LWP::Protocol::collect: read 346 bytes
LWP::Protocol::collect: read 2736 bytes
LWP::Protocol::collect: read 21 bytes
LWP::Protocol::collect: read 1016 bytes
LWP::Protocol::collect: read 1691 bytes
LWP::Protocol::collect: read 1653 bytes
LWP::Protocol::collect: read 284 bytes
LWP::UserAgent::request: Simple response: Found


Sin embargo el mensaje nunca llega a mi celular, ¿alguna sugerencia?
Saludos,
viaris
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2004-10-22 10:49 @492

Publicidad

Notapor explorer » 2006-06-19 12:52 @578

Viendo la página se me ocurre lo siguiente:

* Los teléfonos deben empezar por 505. El tuyo empieza por 502... Quizás tenga puesto un filtro para evitar enviar mensajes a teléfonos distintos de la compañía.
* El número oculto 64404 en realidad cambia en cada sesión. Yo leería la página, los campos ocultos y luego haría la petición. Quizás sea más cómodo usar WWW::Mechanize.
* En España hacíamos estas cosas en el 97-99, hasta que las telefónicas quitaron todo esto. Ahora parece que hay algunas, pero se trata siempre de obtener el número de teléfono para luego enviarle publicidad. Y además, puede pasar un tiempo entre que envías el mensaje y luego lo recibes. Al final, lo que hicimos fue coger un teléfono viejo y con el proyecto gnokii, conectarlo a un linux y desde él nos envíamos las alertas a nuestros teléfonos. Es caro, pero funciona, con mucha seguridad y sin publicidad.
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

Accesar a un formulario con LWP

Notapor viaris » 2006-06-20 19:03 @835

El problema creo que es que usan una imagen en vez del botón donde submit o enviar, ahí está el problema, ¿cómo puedo solucionarlo?

Gracias
Saludos,
viaris
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2004-10-22 10:49 @492

Notapor kidd » 2006-06-20 22:21 @973

Hola viaris:

Así que me pico la curiosidad y quería ver si lograba hacer que funcione esto, tal y como te decía explorer tu solución la encuentras con el WWW::Mechanize.

Aquí está el script funcionando:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2.  
  3. use strict;
  4.  
  5. use WWW::Mechanize;
  6. use HTTP::Response;
  7.  
  8.  
  9. my $to_num = '5023658';
  10. my $from_num = '5023658';
  11. my $message = 'Un mensaje de Uriel Lizama desde Perl en Español';
  12.  
  13.  
  14. my $bot = WWW::Mechanize->new();
  15.  
  16. $bot->get( 'http://www.enitelmovil.com.ni/webechat/index.php' );
  17.  
  18.     #Hacemos submit del form
  19.     my $response = $bot->submit_form(
  20.                                      form_name  => 'sms',
  21.                                      button     => 'submit',
  22.                                      fields     => {
  23.                                                     'sms_num'    => $to_num,
  24.                                                     'rem_sms'    => $from_num,
  25.                                                     'sms_mns'    => $message,
  26.                                                    }
  27.                                     );
  28.  
  29.  
  30. print $response->content();
  31.  
  32. exit(1);
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Iniciamos asignando las variables con los números de teléfono y el mensaje que deseas mandar. Después creamos nuestra objeto $bot de Mechanize.

Cargamos la página y hacemos submit del formulario sms con los atributos correctos, la función submit_form() regresa un objeto HTTP::Response que al final usamos para imprimir el resultado.

El formulario lo envía de manera correcta, el único problema es que los números de teléfono los detecta como inválidos, pero una vez resuelto esto, no debes de tener ningún problema.


Saludos
Última edición por explorer el 2009-09-03 14:12 @633, editado 1 vez en total
Razón: Enlaces y bloques de código
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México


Volver a Intermedio

¿Quién está conectado?

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

cron