Newsgroup: it.comp.lang.perl
Titolo: problema di login

Ciao a tutti,
sto' cercando di scrivere uno script in grado di logarsi nella mia
webmail, tirar giu' le ultime notizie e poi disconnettersi.Per far
cio' sto' utilizzando LWP::UserAgent per la fase di login:
es:
use LWP::UserAgent;
use HTTP::Request;
use strict;
my $usr='';
my $pass='';
my $ua = LWP::UserAgent->new();
my $resp = $ua->get( "
http://www.webmail.it/login?u=
".
$usr."&password=".$pass );
die if !$resp->is_success();
# continua il codice------>
Non riesco a superare la fase di autentica.
Il mio problema e' di riuscire a trovare il giusto percorso (http) e
la sequenza corretta di coppie name=value da inserire nella $ua->get
().
Grazie 1000

 Non riesco a superare la fase di autentica.
La butto l�: sicuro che lo script di destinazione accetta i parametri in 
modalit� "GET"? Non � che il form � in modo "POST" e lo script � fatto 
ad-hoc per accettare solo in POST?
Enrico

Giorgio wrote:

Se il servizio a cui stai tentando di connetterti � proprio 
http://www.webmail.it
 allora, come ha detto giustamente Enrico, la 
richiesta � di tipo POST e l'applicazione server-side potrebbe 
controllarlo, per cui � meglio usare: $ua->post(...)
Inoltre, i parametri della form per il login sono 4 e si chiamano:
_action (settato a "login"), _timezone (settato a 2), _user, _pass.
Poi ti tocca anche settare un cookie_jar (e, forse, scaricare prima la 
pagina principale).
Infine, per sicurezza, setta anche un agent /credibile/ (IE o Mozilla).
Dopodich�, non dovresti avere alcun problema ;-)

 Dopodiché, non dovresti avere alcun problema ;-)
Grazie 1000 per gli input che mi state dando.
Il sito e' quello di virgilio:
mail.virgilio.it
 o in 
alternativamail.alice.it
 dal momento che in
entrambi sono presenti i quattro domini.
Ho provato con wireshark ad analizzare il traffico di rete, ed ho
notato la presenza di SSL durante le prime fasi dell' handshake.Nel
sorgente della pagina vedo il METHOD=POST ( come da voi gia'
sottolineato ) ma al campo action ho ACTION="". Inoltre i parametri
del form da utilizzare dovrebbero essere 'usernameDisplay' e
'password' con l'aggiunta del 'dominio'.
Insomma ho provato diverse combinazioni, ma non riesco ancora ad
autenticarmi con successo.
Non riesco ancora a trovare il corretto path dove passare la
richiesta.
Ricapitolando:
use LWP::UserAgent;
use HTTP::Request;
use strict;
my $usr='';
my $pass='';
my $dom = "@
tin.it
"
my $ua = LWP::UserAgent->new();
$ua->cookie_jar({});
$ua->agent('Mozilla/5.0');
my $resp = $ua->post( "
http://mail.virgilio.it/cp/ps/Main/login
?
usernameDisplay=".$usr."&password=".$pass."&d=".$dom );


 Ho provato con wireshark ad analizzare il traffico di rete, [...]
Ovviamente, se il browser passa a SSL, sniffando la rete non vedrai nulla di
interessante. Non serve lavorare a quel livello. Usa Firefox. Installati
HttpFox, oppure FireBug. Entrambi ti consentono di esaminare tutti i
dettagli delle conversazioni HTTP. Il secondo fa molto di pi�. Per i tuoi
scopi, forse ti basta il primo. Disabilita Javascript e analizza il
processo di login. Se esige Javascript, le cose potrebbero essere un po'
pi� complicate. Ma nulla � impossibile (soprattutto per chi -come me- non
lo deve fare).
Max

 Max
Grazie Max