我知道這聽起來像它已經要求在論壇上的問題,但是我認爲,我這裏有一個稍微不同的情景..登錄網站使用WWW重定向::機械化
我嘗試使用Perl登錄到需要認證的網站。我已經意識到完成這個任務的最方便的工具是使用WWW :: Mechanize模塊,它很容易填寫表單並提交它們。
在我的情況,我會遇到以下困難:
- 似乎沒有「形式」這關係到我要滿山遍野。相反,這些字段被封裝在表
<table></table>
中。 - 該按鈕本身似乎啓動了一些JavaScript,我知道不被Mechanize模塊支持。但是,爲了測試此頁面的行爲,我在我的Chrome瀏覽器中禁用了JavaScript,並且仍然可以單擊該按鈕並登錄到該網站。所以我認爲JavaScript不是必須的。
我使用下面的代碼和它似乎並不重要的細節(用戶/密碼)我輸入,由於某種原因,我公司始終遵循「成功」的情況,並收到「登錄成功!」:
my $mech = WWW::Mechanize->new( cookie_jar => {}, autocheck => 1, onerror => \&Carp::croak,); # Login Form my $response = $mech->get($url); if (!$response->is_success) { die "Login page unreachable $url: ", $response->status_line, "\n"; } $mech->field('Email', $Email); $mech->field('Password', $Password); $response = $mech->click(); if ($response->is_success) { print "Login Successful!\n"; } else { die "Login failed: ", $response->status_line, "\n"; }
結果,腳本的運行似乎是成功的。然而,當我認爲我已經登錄並嘗試從該網站獲得的任何數據,我看到(嗅探器),我不斷地轉發到「註冊」頁面。
任何幫助將非常感謝!
在此先感謝!
嗨戴夫,謝謝你的回覆! 你可以請建議如何找出哪個頁面正在執行身份驗證? 只是爲了澄清.. 你的意思是我可以發送一個普通的HTTP POST請求,而不是點擊按鈕?它是否與填寫輸入和點擊實際按鈕具有相同的效果?如果是的話,我擔心我在某種程度上錯過了WWW :: Mechanize模塊的需求... 再次感謝! – 2011-12-29 14:22:33
Eugene,單擊Web窗體上的提交按鈕將發送POST或GET請求,具體取決於
嗨戴夫。感謝您的解釋和閱讀鏈接。這非常有用。 – 2012-01-01 13:04:52