Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Accesar a un formulario con LWP

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio
Mensaje Lun Jun 19, 2006 11:18 am
viaris
Perlero Nuevo
Perlero Nuevo
Registrado: 22 Oct 2004
Mensajes: 7
Accesar a un formulario con LWP Responder citando

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:
#!/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:

Cita:
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?
Mensaje Lun Jun 19, 2006 11:52 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4212
Ubicación: Valladolid, España
Responder citando

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.
Mensaje Mar Jun 20, 2006 6:03 pm
viaris
Perlero Nuevo
Perlero Nuevo
Registrado: 22 Oct 2004
Mensajes: 7
Accesar a un formulario con LWP Responder citando

El problema creo que es que usan una imagen en vez en l botodond e submit o enviar, ahi esta el problema, como puedo solucionarlo ?

Gracias
Mensaje Mar Jun 20, 2006 9:21 pm
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1390
Ubicación: México
Responder citando

Hola viaris:

Así que me pico la curiosidad y queria 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:

Código:

#!/usr/bin/perl -w

use strict;

use WWW::Mechanize;
use HTTP::Response;


my $to_num = '5023658';
my $from_num = '5023658';
my $message = 'Un mensaje de Uriel Lizama desde Perl en Español';


my $bot = WWW::Mechanize->new();

$bot->get( 'http://www.enitelmovil.com.ni/webechat/index.php' );

    #Hacemos submit del form
    my $response = $bot->submit_form(
                                     form_name  => 'sms',
                                     button     => 'submit',
                                     fields     => {
                                                    'sms_num'    => $to_num,
                                                    'rem_sms'    => $from_num,
                                                    'sms_mns'    => $message,
                                                   }
                                    );


print $response->content();

exit(1);


Iniciamos asignando las variables con los números de télefono 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
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group