开发者

How to manipulate Javascript websites in Perl

I have been asked to automate the logging into a webapp(what I assume to be one, that runs a lot of .aspx and .js scripts) that, currently, can only run in IE. Now i am programming in Perl and have tried to use Wi开发者_如何学编程n32::IE::Mechanize to run the IE browser and log in. What i did was try an extract all the forms from the webapp, and given the users information, fill out the required forms, but this is where the problem arises, when I try and run the subroutine no forms appear......

So then I transitioned into WWW::Mechanize and used the post subroutine(from LWP::UserAgent) which solved the problem for the most part. Now i've run into a problem in the response, from the server, I get this script as the content of the response and I don't know what to do with it.

So my question is: Using Perl how can I go about to manipulate a Javascript functions in a website? Would that even be a valid solution to the problem?

I am open to writing this in other programming languages as well. Thanks in advance for the help! (So that I can fully log in to the webapp)

Update: The content of the response:

 var msgTimerID;

 var strForceLogOff = "false";

 function WindowOnLoad(){

    if ("false" == "true" && "false" == "false") 
        MerlinSystemMsg("",64);

    if ("false"=="true") 
        msgTimerID = window.setInterval("MerlinSystemMsg(10095,64)", 300000,'javascript');

 }

 function MyShowModal(){

     showModalDialog("", window, strFeatures);}

 function clearMsgInterval(){

    window.clearInterval(msgTimerID);

 }

 function WindowOnUnLoad(){

     if(top.frames(0).document.getElementById("OPMODE").value =="LOGOFF"){

         strFeatures = "width=1,height=1,left=1000,top=1000,toolbar=no,scrollbars=no,menubar=no,location=no,directories=no,status=yes,resizable=1";

         window.open("ForceLogOff.aspx","forcelogout",strFeatures);

     }

 }

 window.onbeforeunload = WindowOnUnLoad;

 window.onload = WindowOnLoad;

There is also this Frame Title that has the src:

FRAME TITLE="Service Desk Express Navigator" SRC="options_nailogo.aspx" MARGINWIDTH=0 MARGINHEIGHT=0 NORESIZE scrolling=no


Trying to emulate the browser with a fully functioning JS engine is going to be a mighty big task. Instead, I'd suggest that you just try to emulate the actual interaction with the web site and not care what HTML/JS is actually sent back. Your server side code doesn't care how the HTTP submissions take place, only that they do. Admittedly this is more fragile if the forms change a lot, but at least you're not trying to implement a full browser.

So look at modules like LWP::UserAgent, HTTP::Request and HTTP::Response.


I'm copying and pasting my answer to your other duplicate question here (You should consider deleting one of these?)

That content is the website source :)

How WWW::Mechanize deals with FRAME SRC as a link:

Note that <FRAME SRC="..."> tags are parsed out of the the HTML and treated as links so this method works with them.

You'll want to use follow_link on that link.

As far as dealing with Javascript, there is support for a Firefox Add-on called MozRepl that you can use in conjunction with WWW::Mechanize::Firefox that I have used in the past to call Javascript code while crawling a page.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜