Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Perl and Javascript

by mattdeans (Novice)
on Sep 27, 2011 at 06:23 UTC ( #928017=perlquestion: print w/ replies, xml ) Need Help??
mattdeans has asked for the wisdom of the Perl Monks concerning the following question:

Hello,all

I'm using perl to auto login a website(not public). I use firebug in Firefox to capture the login process:
1. post user=&pwd= to a fixed url.
2. this post return a javascript code. Some random stuff:
try{sso.gen(RANDOM_STUFF1,RANDOM_STUFF2)}catch(e){}
and sso.gen is defined in a single js file,almost 20K (cannot post here).
In this complex single js file, ----cannot fully understand.
Yet I see it use the RANDOM_STUFF and something in cookie, to generate a random url with some random params, and set cookies.
3. GET this new rand url. ( looks like request by javascript, within the js file )
I tried LWP::UserAgent and JE . It seems not possible...
so how could I auto login this website with perl? Any advice? Any other options?

Thanks

Comment on Perl and Javascript
Download Code
Re: Perl and Javascript
by Corion (Pope) on Sep 27, 2011 at 06:48 UTC

    Have you looked at WWW::Mechanize::Firefox? If you cannot reverse engineer what sso.gen does, you will have to use a Javascript interpreter.

      It seems WWW::Mechanize::Firefox need firefox install? I cannot, its a server.
      Is JE - Pure-Perl ECMAScript (JavaScript) Engine a Javascript interpreter?

        If it is a server, then yes, you will have to make-do with the other solutions (Javascript). I'm currently working on getting nodejs to do the same as WWW::Mechanize::Firefox does, except without the need for a display, but that is still very much a work in progress, so I recommend you look at the other methods.

        Alternatively, you could write a small Javascript wrapper for your sso.gen script and call it via node sso.gen-wrapper.js $ARG1 $ARG2 via backticks.

Re: Perl and Javascript
by technojosh (Priest) on Sep 28, 2011 at 17:02 UTC
    With a little more info about the REQUEST/RESPONSE sequences, I think I can help. Your post is kind of unclear... (How do I post a question effectively?)

    1. use WWW::Mechanize (no need for Firefox specifics, I don't think. Its ok to use Firebug to "discover" how to automate a process, but it doesnt' really tie you to firefox after that point)
    2. you seem to indicate you are able to pull the new, random URL you need from sso.gen??

    *If* #2 is true, or at least close to reality, you should be able to parse that random URL and load it through a second GET request (I think that is what you are asking for in #3??)

    If #2 is not true, then I think that will be your focus. If you get sso.gen successfully, are you able to successfully parse this random URL from the javascript? the "GET" method returns a HTTP::Response object, can you learn anything from that?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://928017]
Approved by moritz
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (4)
As of 2014-11-29 03:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (203 votes), past polls