2011-12-29 41 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