2011-12-29 80 views
0

我有一個問題:自動登錄網頁表單

我有,它有一個XML頁面(HTTP://IP_device/counters.xml)的設備,我想監視此文件的摘錄的一些信息。這個問題是因爲訪問此文件,之前我必須登錄到一個表單(HTTP://IP_device/frameCmd_Login.htm)是這樣的:

<form method="get" action="/Action_Login" onsubmit="return MD5HASH()"> 
<font color="#000000" align="center">Please Enter Password</font> 
<input size="21" type="password" value="" name="LOGINPASSWORD" id="PD" /> 
<input name="submit" type="submit" value="LOGIN" /> 

對於我需要登錄到之前的形式( http:// IP_device),然後下載xml文件。

我試過用LWP,URL模塊,但我不知道該怎麼做。我是一個Perl新手。我試過的Perl腳本是:

#!/usr/bin/perl 
use LWP::UserAgent; 

my $ua = new LWP::UserAgent; 
my $req = new HTTP::Request(GET => 'http://IP_device/frameCmd_Login.htm'); 
$req->authorization_basic("password123"); 

my $res = $ua->request($req); 

if ($res->is_success) 
{ 
    my $file = $res->content; 
    print $file; 
} 
else 
{ 
    die $res->status_line; 
} 

任何人都知道如何實現這個問題?任何人都可以幫助我?

回答

3

authorization_basic適用於standard HTTP authentication,但Web表單有些不同。刪除該方法調用並瞭解Web窗體的功能。

以下是對代碼進行最簡單的更改以使其工作。請注意,我們直接針對表單的action屬性中的資源。

my $u = URI->new('http://IP_device/Action_Login'); 
$u->query_form(LOGINPASSWORD => 'password123'); 
my $req = HTTP::Request->new(GET => $u->as_string); 
+0

好的。我會嘗試使用你的代碼。我在URI中錯了;正確的URI是Action_Login。謝謝。 – dseira 2012-01-02 16:27:32