Авто логин веб-форма - PullRequest
       9

Авто логин веб-форма

0 голосов
/ 29 декабря 2011

У меня следующая проблема:

У меня есть устройство с 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 Ответ

3 голосов
/ 29 декабря 2011

authorization_basic подходит для стандартной HTTP-аутентификации , но веб-формы - это нечто иное. Удалите этот вызов метода и узнайте, как работают веб-формы.

Ниже приведено простейшее изменение вашего кода, чтобы заставить его работать. Обратите внимание, что мы нацелены на ресурс в атрибуте action формы напрямую.

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