Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling

Re: Need to fill password in with perl on Javascript?

by Marshall (Abbot)
on Feb 23, 2012 at 17:47 UTC ( #955794=note: print w/replies, xml ) Need Help??

in reply to Need to fill password in with perl on Javascript?

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.

Replies are listed 'Best First'.
Re^2: Need to fill password in with perl on Javascript?
by Anonymous Monk on Feb 24, 2012 at 02:43 UTC

    Perl cannot run Javascript, but most of the time you don't need to do that.

    Actually it can, see WWW::Scripter::Plugin::JavaScript/JE, but writing browser is hard work and these are one-man "alpha" releases, firefox/webkit are more mature/reliable

      That's good input. However, as you said: "writing browser is hard work". It is! I recommend to avoid the complexities as much as possible. If something "straightforward" will work, then I would do that.
Re^2: Need to fill password in with perl on Javascript?
by nikosv (Chaplain) on Feb 24, 2012 at 06:03 UTC
    My remark is a bit off topic but your note that "Perl cannot run Javascript"
    made me think that with Parrot will come better interop between languages,which means that you could control the browser using Perl6 calling Javascript libraries,since everything bolts down to PIR acting as the common language denominator.
    There is an attempt to port Javascript on Parrot
    Someone with Parrot experience please correct me if I am wrong
      If you have a question about Parrot, I would ask a new question in different thread. I think that everything that was needed to be said, has already been said in this thread. A new question, in a new thread would give your question more focus.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://955794]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (2)
As of 2018-05-22 03:21 GMT
Find Nodes?
    Voting Booth?