Hi everyone,
I am trying to use Mechanize to scrape information of my account page at www.attwireless.com. am having problems signing on.
The commands to fill in the form all work without complaint:
$mech->form_name($formname); $mech->field($usernameField,$loginID); $mech->field($passwordField,$pswd);
However, when I submit the form, I don't get logged in, I come back to the Login page (which is the target of the POST). There is no error message on the login page, but it doesn't let me in either.
When I sign on with Firefox, everything works fine. The only difference I have been able to determine, compared to the trace from LWP::Debug, is that a cookie named phonenumberflag is set to "false" in LWP/Mechanize and is "true" in Firefox. (Although I admit I don't know how to create/interpret the dumps described in Colin Magee's Thread Viewing exchange between browser and website. <http://www.mail-archive.com/libwww@perl.org/msg05155.html>)
Anyone have any ideas on what the problem could be, how to find it or how to fix it? Thanks in advance!
Peter Stevens
Sample Code:
#!/usr/local/bin/perl -w ######### ######### ######### ######### ######### ######### ######### ######### # bug.pl - log into AT_and_T user account # use strict; use LWP::Debug qw(+); use WWW::Mechanize;
############ start
sub load{my ($loginID, $pswd) = @_ ;
my ($mech) ;
$mech = WWW::Mechanize->new( autocheck => 0 );
my $homepage="http://www.attwireless.com" ;
my $formname="LoginForm"; # from mech_dump/source my $usernameField="/attws/ocx/userprofiling/OCXProfileFormHandler.value.login" ; my $passwordField="/attws/ocx/userprofiling/OCXProfileFormHandler.value.password" ;
$mech->agent_alias ( "Windows IE 6" ); print STDERR "Get $homepage \n"; $mech->get( $homepage ); die "Can't even get $homepage: " . $mech->response->status_line unless ($mech->success) ; print STDERR "Got $homepage as ". $mech->uri() . "\n";
print STDERR "fill in form...\n"; $mech->form_name($formname); $mech->field($usernameField,$loginID); $mech->field($passwordField,$pswd); # print STDERR "Login ID is $loginID , Pass is $pswd\n"; print STDERR "submit form...\n"; $mech->submit();
die "Could not submit $homepage: ". $mech->response->status_line unless
($mech->success) ;
print STDERR "Login brought us to ". $mech->uri() . "\n";
if ( $mech->uri() =~ /Login/i ) {
print STDERR "Wrong answer\n";
}# print $mech->content; }
my ($parms, $i) ; $parms = {} ;
foreach $i ( qw (loginID pswd) ) {
print "$i: " ;
$parms->{$i} = readline STDIN ;
chomp $parms->{$i};
} load($parms->{"loginID"}, $parms->{"pswd"});
# end of bug.pl
######### ######### ######### ######### ######### ######### ######### ####################Dump from LWP::Debug (indented, prints are left flush):
LWP::UserAgent::new: () Get http://www.attwireless.com LWP::UserAgent::request: () HTTP::Cookies::add_cookie_header: Checking www.attwireless.com for cookies HTTP::Cookies::add_cookie_header: Checking .attwireless.com for cookies HTTP::Cookies::add_cookie_header: Checking attwireless.com for cookies HTTP::Cookies::add_cookie_header: Checking .com for cookies LWP::UserAgent::send_request: GET http://www.attwireless.com LWP::UserAgent::_need_proxy: Not proxied LWP::Protocol::http::request: () LWP::Protocol::collect: read 475 bytes [ snip ] ... LWP::Protocol::collect: read 1010 bytes HTTP::Cookies::extract_cookies: Set cookie DSESSIONID => H0HZKOGKXE4AVB4R0HYSFEY HTTP::Cookies::extract_cookies: Set cookie phonenumberflag => false HTTP::Cookies::extract_cookies: Set cookie browserid => 1100175229559H0HZKOGKXE4AVB4R0HYSFEY LWP::UserAgent::request: Simple response: OK Got http://www.attwireless.com as http://www.attwireless.com fill in form... submit form... LWP::UserAgent::request: () HTTP::Cookies::add_cookie_header: Checking www.attwireless.com for cookies HTTP::Cookies::add_cookie_header: - checking cookie path=/ HTTP::Cookies::add_cookie_header: - checking cookie DSESSIONID=H0HZKOGKXE4AVB4R0HYSFEY HTTP::Cookies::add_cookie_header: it's a match HTTP::Cookies::add_cookie_header: - checking cookie phonenumberflag=false HTTP::Cookies::add_cookie_header: it's a match HTTP::Cookies::add_cookie_header: - checking cookie browserid=1100175229559H0HZKOGKXE4AVB4R0HYSFEY HTTP::Cookies::add_cookie_header: it's a match HTTP::Cookies::add_cookie_header: Checking .attwireless.com for cookies HTTP::Cookies::add_cookie_header: Checking attwireless.com for cookies HTTP::Cookies::add_cookie_header: Checking .com for cookies LWP::UserAgent::send_request: POST https://www.attwireless.com/ocs/authenticate/Login.jhtml;dsessionid=H0HZKOGKXE4AVB4R0HYSFEY?_DARGS=/home/left_frag_b2c.jhtml LWP::UserAgent::_need_proxy: Not proxied LWP::Protocol::http::request: () LWP::Protocol::collect: read 658 bytes LWP::Protocol::collect: read 1 bytes [ snip ] LWP::Protocol::collect: read 182 bytes HTTP::Cookies::extract_cookies: Set cookie browserid => 1100175229559H0HZKOGKXE4AVB4R0HYSFEY LWP::UserAgent::request: Simple response: OK Login brought us to https://www.attwireless.com/ocs/authenticate/Login.jhtml;dsessionid=H0HZKOGKXE4AVB4R0HYSFEY?_DARGS=/hom e/left_frag_b2c.jhtml Wrong answer
###########End Dump from LWP::Debug:
