簡體   English   中英

如何在 Perl 中操作 Javascript 網站

[英]How to manipulate Javascript websites in Perl

我被要求自動登錄到一個 webapp(我假設是一個,它運行很多 .aspx 和 .js 腳本),目前只能在 IE 中運行。 現在我在 Perl 編程並嘗試使用 Win32::IE::Mechanize 運行 IE 瀏覽器並登錄。我所做的是嘗試從 webapp 中提取所有 forms,並給出用戶信息,填寫需要forms,但這是問題出現的地方,當我嘗試運行子程序時沒有出現forms......

於是我過渡到 WWW::Mechanize 並使用了 post 子程序(來自 LWP::UserAgent),它在很大程度上解決了這個問題。 現在我在響應中遇到了問題,從服務器,我得到這個腳本作為響應的內容,我不知道該怎么處理它。

所以我的問題是:使用 Perl 我如何在 go 中操縱 Javascript 功能在網站上? 這甚至是解決問題的有效方法嗎?

我也願意用其他編程語言寫這個。 在此先感謝您的幫助! (這樣我就可以完全登錄webapp了)

更新:響應的內容:

 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;

還有這個帶有src的框架標題:

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

嘗試使用功能齊全的 JS 引擎來模擬瀏覽器將是一項艱巨的任務。 相反,我建議您只嘗試模擬與 web 站點的實際交互,而不關心實際發回的 HTML/JS 是什么。 您的服務器端代碼不關心 HTTP 提交是如何發生的,只關心它們是如何發生的。 誠然,如果 forms 發生很大變化,這會更加脆弱,但至少您並沒有嘗試實現完整的瀏覽器。

因此,請查看LWP::UserAgen t、 HTTP::RequestHTTP::Response等模塊。

我在這里復制並粘貼我對您的另一個重復問題的回答(您應該考慮刪除其中一個?)

該內容是網站來源:)

WWW::Mechanize 如何將 FRAME SRC 作為鏈接處理

請注意,<FRAME SRC="..."> 標記從 HTML 中解析出來並被視為鏈接,因此此方法適用於它們。

您需要在該鏈接上使用follow_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.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM