Bien,primero que nada voy a explicar de que se trata esto:
De lo que se trata esto de la posibilidad de poder rellenar formularios web desde la misma terminal,ya se solo por probar una url,o por otros propósitos.
Bien pondré de ejemplo mi sitio que tengo en mi localhost que se llama:
mi_blog_de_ejemplo.net/El sitio esta en wordpress,así que el login se lleva a cabo en el url(wp-login.php):
http://mi_blog_de_ejemplo.php
Ahora como me puede logear desde la consola?
Bien,es un ejemplo esto,podemos usar esto con formularios como el de blogger,o como el search de esta pagina que esta arriba a la derecha:
Primero que nada vamos a instalar/actualizar los módulos perl necesarios:
sudo cpan WWW::Mechanize::GZip
sudo cpan LWP::UserAgentTerminados de instalar,podemos comenzar a escribir el script:
#!/usr/bin/env perl
use warnings;
use strict;
use WWW::Mechanize::GZip;
Vamos a definir una variable con el url del sitio:
my $url = "http://mi_blog_de_ejemplo.php";
Ahora vamos a crear un objeto de Mechanize:
my $mech = WWW::Mechanize::GZip->new();
Vamos a llamar la url:
$mech->get($url) || die $!;
Y por ultimo vamos a pasar los parametros:
Los fields y el nombre del form,como sabemos o si no saben wordpress usa los fields,pwd y log en la form loginform:
Así que :
my $respuesta = $mech->submit_form(
form_id => "loginform",
fields => {
log => "user",
pwd => "password"
});
Y listo imprimimos la respuesta:
print $respuesta->content();
Esto nos imprime en la pantalla el contenido html de la pagina,sea o no sea el usuario y la contraseña,lo que hace es exactamente como si lo hiciéramos a clic desde el navegador.
También cuenta con opciones de cookies,user agent,y si por ejemplo no hay id del formulario podemos acceder a ellos con el numero que tendrían ordenándolos:
Por ejemplo :
#!/usr/bin/env perl
#
use warnings;
use strict;
use WWW::Mechanize::GZip;
my $url = "http://desdelinux.net";
my $mech = WWW::Mechanize::GZip->new();
$mech->agent_alias("Linux Mozilla");
$mech->get($url) || die $!;
my $respuesta = $mech->submit_form(
form_number => 1,
fields => {
s => "archlinux"
}
);
print $respuesta->content();
Y si por ejemplo metieron el script en un archivo llamado script.pl pueden probar este comando:
perl script.pl > pagina.html && xdg-open pagina.html
Les dejo un script un poco mas detallado:
Enlace
Para mas información,en terminal :
perldoc WWW::Mechanize::GZip
No hay comentarios.:
Publicar un comentario
Los comentarios serán revisados antes de ser publicados.