Vamos a ver... creo que no se me ha entendido...
Cuando digo que NO es necesario crear cookies 'a mano' para entrar en un foro (como puede ser este), es que NO es necesario...
Voy a poner un ejemplo, usando este mismo foro. Lo que necesitamos es acceder a la página de login.php, poner nuestro nombre de usuario y contraseña. Eso nos devolverá una cookie, que usaremos para acceder a... nada más y nada menos que nuestro propio panel de control (el enlace Perfil), y de éste, sacar nuestra dirección de correo electrónico.
Bueno, pues el código es el siguiente:
Using perl Syntax Highlighting
#!/usr/bin/perl
use LWP
::UserAgent;
use HTTP
::Cookies;
use HTTP
::Request::Common qw(POST
);
use strict
;
use warnings
;
# Creamos el objeto para acceder vía web
my $ua = LWP
::UserAgent->new;
# Decimos dónde pondremos nuestra jarra de galletas.
# Es un fichero normal, por lo que la colocaremos en el mismo directorio de trabajo, con un nombre determinado
$ua->cookie_jar(HTTP
::Cookies->new(file
=> "lwpcookies.txt", autosave
=> 1
));
# Bien, vamos a loguearnos.
# Hacemos un POST al formulario de login.php, pasándole los parámetros requeridos
my $req = POST
'http://perlenespanol.com/foro/login.php',
[ username
=> 'explorer', password
=> 'australab10', autologin
=> 1, login
=> 'Login' ];
#Aquí, si todo va bien, obtendríamos una cabecera HTTP con un redirect a la página de entrada
#print $ua->request($req)->as_string;
# Ya estamos dentro (que sí, que sí), así que vamos a nuestro panel de control, nuestro perfil
# Para eso, hacemos una petición de una página normal, con un GET.
# ATENCIÓN: LA COOKIE SALE DE FORMA AUTOMÁTICA DE NUESTRA JARRA DE GALLETAS
my $res = $ua->request(
HTTP
::Request->new(GET
=> 'http://perlenespanol.com/foro/profile.php?mode=editprofile')
);
# Si todo va bien, veremos un 200 OK
#print $res->status_line, "\n";
# Si hemos tenido éxito
if ($res->is_success) {
# Pintamos toda la información de nuestro perfil
#print $res->as_string;
# De todo el perfil, solo nos interesa la línea que pone email y sacamos su valor
my ($email) = $res->as_string =~ m/email.*?value="(.*?)"/;
print "$email\n";
}Coloreado en 0.005 segundos, usando
GeSHi 1.0.8.4
¡Tachán! Estamos logueados (porque sino no podríamos ver nuestro propio perfil
) y cada vez que pidamos una página o mandemos un correo, la cookie se envía de forma automática... ¿A quién le interesa saber cómo está hecha una galleta? Solo importa su saboooooorrrrr