# Fake IE ua "Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)" get http://www.attachmail.com/ # Navigate to login frame open bott # Login value UserId test01 value Passwd s click imageField # Got empty page. Why? content # Aaah - it is a META refresh page # Extract the target url : eval $self->agent->content =~ /URL=(.*)'>/; qq{http://www.attachmail.com/cg-bin/$1} # Jump to that page get http://www.attachmail.com/cg-bin/userpagedisplay.cgi?user_no=1057348162&domain=attachmail.com&dtexpiry=19-Jul-2003&status=0&spacebal=4.998&bounce=&flmove= # Multi-frame page, go to the content frame open mailatt open /AddressBook/ open /AddressBook/ # Still no action - must be JavaScript. # Looking at the JavaScript, I know now that I need the # user number : eval $self->agent->uri eval $self->agent->uri=~/userno=(\d+)/; $1 # Go to the page referenced from the JavaScript get http://www.attachmail.com//cg-bin/am_bring_Addbook.cgi?userno=1057348162&flg=Disp # Find the correct frame : open mainFrame back open bottomFrame # More JavaScript interaction: get http://www.attachmail.com/cg-bin/add_entry.cgi?username=1057348162 # Fill in the values and submit the form value nam foo value email bar@example.com submit #### #!D:\Programme\indigoperl-5.6\bin\perl.exe -w use strict; use WWW::Mechanize; use URI::URL; my $agent = WWW::Mechanize->new(); $agent->env_proxy(); $agent->get('http://www.attachmail.com/'); $agent->form(1) if $agent->forms and scalar @{$agent->forms}; $agent->agent('Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)'); # navigate to the login frame $agent->follow('bott'); { local $^W; $agent->current_form->value('UserId', 'test01'); }; { local $^W; $agent->current_form->value('Passwd', 's'); }; $agent->click('imageField'); # The login page is a redirect die "Unknown page received" unless $agent->content =~ /URL=(.*)'>/; my $redirect = qq{http://www.attachmail.com/cg-bin/$1}; $agent->get($redirect); $agent->form(1) if $agent->forms and scalar @{$agent->forms}; $agent->follow('mailatt'); die "Couldn't retrieve user number" unless $agent->uri=~/userno=(\d+)/; my $userno = $1; $agent->get("http://www.attachmail.com//cg-bin/am_bring_Addbook.cgi?userno=$userno&flg=Disp'); $agent->form(1) if $agent->forms and scalar @{$agent->forms}; $agent->follow('bottomFrame'); $agent->get("http://www.attachmail.com/cg-bin/add_entry.cgi?username=$userno"); $agent->form(1) if $agent->forms and scalar @{$agent->forms}; { local $^W; $agent->current_form->value('nam', 'foo'); }; { local $^W; $agent->current_form->value('email', 'bar@example.com'); }; $agent->submit(); #### perl -MHTTP::Daemon -MHTTP::Response -MLWP::Simple -e ' ; # The $d = new HTTP::Daemon and fork and getprint $d->url and exit;#spider ($c = $d->accept())->get_request(); $c->send_response( new #in the HTTP::Response(200,$_,$_,qq(Just another Perl hacker\n))); ' # web