2011-07-13 60 views
0

所以我試圖創建一個網絡蜘蛛。我遇到了一個網站,它有一些JavaScript,我想誘使瀏覽器認爲事件已被觸發,並且它必須調用相應的JavaScript代碼來處理事件。我怎麼能夠在Perl中做到這一點?使用WWW :: Mechanize或WWW :: Scripter :: Plugin :: Javascript?欺騙瀏覽器調用JavaScript事件?

另外,這將是非常讚賞我有人可以舉一個如何使用WWW::Scripter::Plugin::Javascript的例子。

在此先感謝。另外,如果有人有更好的方式來提出問題,請繼續編輯它

+1

如果你正在做一個蜘蛛,在那裏有一個瀏覽器?一個典型的蜘蛛是一個服務器讀取網站的內容到服務器環境。 – jfriend00

+0

聽起來確實很神祕。 – gangelo

+0

在分佈的't/je.t'中看到名爲'form event attributes'的測試。從中學習。 - 當你顯示一個你遇到問題的特定代碼示例時,堆棧溢出效果最好。 – daxim

回答

1

在正常的瀏覽器設置中,JavaScript位於瀏覽器中,而不是服務器上。這是執行JavaScript的客戶端。

這意味着您需要手動確定JavaScript代碼的功能,並在Perl中編寫代碼,或者您需要加載JavaScript引擎。

這裏有三個JavaScript引擎:

+0

你知道我在哪裏可以找到一些使用WWW :: Scripter調用Javscript代碼的例子: :Plugin :: Javascript – Shahab

+0

我們的*三個發行版是Mech :: FF,IE :: Mech,WWW :: Scripter ...和Gtk2 :: WebKit :: Mech ...我們的*四* ...不... ...其中*我們的發行版... Amongst我們的JavaScript啓用...是像JE,JS/libjs等模塊... [我會再次進來。](https://github.com/daxim/www-mechanize/commit/6d73a0ad269c6b3886e90237300beec6b7f730a4) – daxim

1

使用WWW::Mechanize和現場HTTP頭,我做了一個活的Http重播。

從重播,我複製標題(即Connection: keep-alive to $agent->add_header("Connection" => "keep-alive");),然後複製發佈內容,我$content = '..

然後$agent->post($url_of_the_site, Content => $content);

這個工作點擊一個ASPX的網站,如2的鏈接。

我用這個代碼作爲指導http://pastie.org/1728196/wrap