Here are some more links with LWP info.. read this one and look at Planetscape's reply to my post with more online books.. Re: Perl code to check and count count if a word exists on a webpage.
Perl cannot run Javascript, but most of the time you don't need to do that. Basically with the various LWP techniques and modules, you are emulating a browser. Figure out what needs to go into the "post" back to the server and just stick the password in there. The webserver has no way to tell whether or not you actually executed some Javascript code - it just looks at what is posted back to it. Usually with some experimentation (sometimes with LOTS of experimentation), I can figure this out by looking at the source code to the webpage.
Update: When you update a post, add some kind of tag like this so that we can tell that something new has been added. I would stay away from WWW::Mechanize::Firefox unless you really need it. This thing is pretty cool and I've done some experimentation with it, but this introduces another layer of complexity into the implementation.
Another Update:
I looked back at one of my LWP programs.
(1) You are emulating a browser. You can claim to be different versions or types of browsers. I find it helpful to claim to be the "stupidest thing" that the website will allow. Many websites serve up different pages depending upon who you are claiming to be - dumber browsers get different pages than smarter browsers. Below I am claiming to be an ancient version of Netscape.
(2) Often it is not necessary to even parse what the server sends you. Below I just checked that I got a valid page (no 404 error or whatever), and then I immediately just post back my credentials. I know that this is the log-in page.
(3) In the post(), I send what I need to. Figuring out what should go into the post() is where the looking at the webpage source and experimentation comes in. The server has no way to figure out what (if any) Javascript code I ran or didn't run.
my $ua = LWP::UserAgent->new or die "Problem with the new UserAgent\n"
+;
$ua->cookie_jar(HTTP::Cookies->new);
$ua->agent("Mozilla/4.76 [en] (Windows NT 5.0; U)");
print "And now I'm calling myself ", $ua->agent( ), "!\n";
#
# Get the log on page to the Secure Server
#
my $response = $ua->get($url) or die "Problem with the get $url\n";
$response->is_success or
die "Failed to GET '$url': ", $response->status_line;
my $html_page = $response->content( );
#
# post the secure log-on with my credentials
#
$response = $ua->post(
'https://services....someurl',
[
'type' => "ABCDEF", #weird parameters that are page specific
"prev" => "GHIJK",
'p201' => "XYZZY",
'p1' => 'some_user_name',
'p2' => 'some_domain',
'p3' => 'some_password'
],
);
Of course as with all of these things, mileage varies. |