自动登录Web表单

时间:2011-12-29 16:22:28

标签: xml perl http perl-module

我有下一个问题:

我有一个设备,它有一个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;
}

任何人都知道如何实现这个问题?有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:3)

authorization_basicstandard 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);