• Publicidad

Login con Perl en phpbb2

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Notapor zozo666 » 2007-07-25 20:57 @915

Tengo la 0.72, ¿de dónde la actualizo?
zozo666
Perlero nuevo
Perlero nuevo
 
Mensajes: 139
Registrado: 2007-05-26 10:36 @483

Publicidad

Notapor explorer » 2007-07-26 03:58 @207

Siendo root del sistema, ejecuta el comando cpan WWW::Mechanize, para actualizarlo. Si estás en Windows, usa el PPM de ActiveState.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor zozo666 » 2007-07-26 08:08 @381

Ya anda, muchas gracias. Ahora el tema es que me tira el mail del usuario que yo ingreso al login, pero no me queda logueado el usuario, ¿qué es lo que tengo que hacer?. Tengo este código.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

use WWW::Mechanize;

use strict;
use warnings;

print "content-type: text/html \n\n";

# Nuestro agente web. La jarra de galletas, en memoria
my $agente = WWW::Mechanize->new( cookie_jar => {} );

# Traemos la página de login
$agente->get('http://localhost:8080/phpbb1/login.php');

# Nos logueamos
my $res = $agente->submit_form(
    with_fields => {
                    username => 'roberto',
                    password => '123456',
                    autologin=> 'off',
                    },
    button      => 'login',
);

# Si hemos tenido éxito
if ( $res->is_success ) {

    # Pedimos el panel de control
    $agente->get('http://localhost:8080/phpbb1/profile.php?mode=editprofile');

    # Buscamos el formulario con el email
    $agente->form_with_fields('email')     or die "ERROR: No encuentro el formulario";

    # Lo sacamos a pantalla
    print $agente->value('email'), "\n";
}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Este es del ejemplo que me dijo explorer. ¿Se puede hacer desde acá el logueo? Muchas Gracias
zozo666
Perlero nuevo
Perlero nuevo
 
Mensajes: 139
Registrado: 2007-05-26 10:36 @483

Notapor kidd » 2007-07-26 09:00 @416

Cambia el
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
autologin=> 'off',
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

a
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
autologin=> 'on',
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Saludos
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

Notapor zozo666 » 2007-07-26 10:11 @466

No, no paso nada. Yo diría que son las cookies que no se crean, pero como nunca hablaron de cookies con este programa no sé...

Lo que quiero es registrarme desde un Perl en el foro phpbb y utilizando WWW::Mechanize. ¿Habrá que agregarle algo más con respecto a las cookies?
zozo666
Perlero nuevo
Perlero nuevo
 
Mensajes: 139
Registrado: 2007-05-26 10:36 @483

Notapor explorer » 2007-07-26 10:37 @484

¿Qué quieres con que el usuario no se logueó?

WWW::Mechanize SÍ maneja cookies. Repasa el programa que has escrito. Está en la línea del new(): estás indicando que la jarra de galletas (la contenedera de las cookies) va a estar en memoria ( cookie_jar => {} ).

Esto se hace así porque se supone que las cookies de acceso a ese web sólo las vamos a necesitar durante la ejecución del programa, y nada más.

Si necesitas usar las cookies más adelante, cuando el programa se termine, ahí debes indicarle un lugar donde debe crearse la jarra de galletas. Así podrás usarlas desde el mismo programa u otro distinto.

Y dices que lo que quieres es registrarte en un foro. Bueno, pues primero debes saber qué pasos darías tu mismo (qué páginas visitas, qué formularios rellenas y con qué información) y luego eso mismo es lo que le dirás a WWW::Mechanize que haga.

Pero... ¿por qué quieres hacerlo con WWW::Mechanize? ¿El foro phpbb no es tuyo o de tu administración? Lo digo porque si tienes acceso a la máquina que gestiona el phpbb, no necesitas nada de esto... yo creo (no probado) que bastaría con que te conectaras a la base de datos (MySQL) y agregaras un nuevo usuario en la tabla de usuarios.

Si no tienes acceso a phpbb o no es de propiedad, te arriesgas a que el dueño del foro ponga contramedidas para evitar estos usos.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Norther » 2007-07-26 11:22 @515

Ya anda, muchas gracias. Ahora el tema es que me tira el mail del usuario que yo ingreso al login, pero no me queda logueado el usuario,


Creo que el no quiere que las cookies mueran al terminar el programa, de todas formas ahora la mayoría de foros bien phpbb o smf tienen captchas o medidas de seguridad similares para evitar los spam bot, y en ese caso nada de esto va a servir =O

Y si lo único que quiere es registrarse en un foro, ¿no valdría con enviar un simple formulario POST a la página de registro? :S
Norther
Perlero nuevo
Perlero nuevo
 
Mensajes: 117
Registrado: 2007-07-24 13:47 @616
Ubicación: Asturias

Notapor zozo666 » 2007-07-26 12:22 @557

EL tema es lo siguiente:

Yo ejecuto el programa que utiliza WWW::Mechanize y funciona perfectamente. En pantalla me muestra el mail del usuario que loguee. Armé un formulario de login y le pasé los parámetros por GET y funciona perfecto también, ahora... cuando corro el programa de LOGIN en Perl no me arma las cookies. En cambio al correr el login desde el foro, si las arma.

Yo quisiera saber con este mismo programa ¿qué forma tengo de crear la misma cookie que me crea cuando le doy LOGIN en el foro?

El foro lo tengo montado en el servidor de mi máquina, con base de datos MySQL. Probé tratando de modificar en la base de datos para loguearme pero lamentablemente phpbb2 no se maneja así.

Lo único que me faltaría es saber de qué forma puedo armar con el programa que tengo, las mismas cookies que genera el login.php. No entiendo por qué no las crea si estoy realizando mediante el WWW::Mechanize los mismo pasos que realizaría el login dentro del foro.

Muchas gracias a todos.
zozo666
Perlero nuevo
Perlero nuevo
 
Mensajes: 139
Registrado: 2007-05-26 10:36 @483

Notapor Norther » 2007-07-26 12:32 @564

Mirate esto: http://search.cpan.org/dist/libwww-perl/lib/HTTP/Cookies.pm

Para guardar las cookies que te genera puedes hacer un formulario tipo post para que se logee y meterle algo asi:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Cookies;

$txt='Un archivo donde quieras guardar las cookies en formato LWP';
$url='La url de tus foros donde te logeas';
$query='Los campos y datos que te haga falta rellenar para registrarte';
$cookie_jar = HTTP::Cookies->new;
$ua = LWP::UserAgent->new;
$ua->agent("Untested");
$ua->cookie_jar($cookie_jar);
$req = HTTP::Request->new (POST, $url);
$req->content_type("application/x-www-form-urlencoded");
$req->content($query);
$res = $ua->request($req);
$cookie_jar->save( $txt );
if ($res->is_success) {
print $cookie_jar->as_string;
} else {
print "Algo salio mal, comprueba la url y el query";
}
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

No lo probe ni nada pero vamos que es para que te hagas una idea
Norther
Perlero nuevo
Perlero nuevo
 
Mensajes: 117
Registrado: 2007-07-24 13:47 @616
Ubicación: Asturias

Notapor explorer » 2007-07-26 12:56 @581

Bien, si lo que quiere entonces es quedarse con las cookies que se generan en el momento del login, se puede modificar el programa del WWW::Mechanize agregando estas líneas, al principio, y modificando la que crea el agente mecánico:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use HTTP::Cookies;

# Nuestra jarra de galletas
my $jarra_de_galletas
    = HTTP::Cookies->new(
        file     => "$ENV{HOME}/lwp_cookies.dat",        # Lugar donde guardaremos las cookies
        autosave => 1,
);

# Nuestro agente
my $agente = WWW::Mechanize->new( cookie_jar => $jarra_de_galletas );
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


El resultado será el mismo que antes, pero la cookie se habrá quedado en el fichero, con un contenido parecido a este:
Código: Seleccionar todo
#LWP-Cookies-1.0
Set-Cookie3: phpbb2mysql_data=a%3A2%3A%3A%22autologinid%22%3Bs646a8df3207e5a5.63536898%223A%22userid%2254%22%3B%7D; path="/"; domain=perlenespanol.com; path_spec; expires="2008-07-25 17:51:45Z"; version=0
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

AnteriorSiguiente

Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado