如何使用Perl的LWP登录Web应用程序?

max*_*kie 5 perl www-mechanize lwp

我想编写一个脚本来登录Web应用程序,然后转移到应用程序的其他部分:

use HTTP::Request::Common qw(POST);
use LWP::UserAgent;
use Data::Dumper;

$ua = LWP::UserAgent->new(keep_alive=>1);

my $req = POST "http://example.com:5002/index.php",
[ user_name     => 'username',
  user_password => "password",
  module        => 'Users',
  action        => 'Authenticate',
  return_module => 'Users',
  return_action => 'Login',
];

my $res = $ua->request($req);
print Dumper(\$res);
if ( $res->is_success ) {
    print $res->as_string;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试这段代码时,我无法登录该应用程序.返回的HTTP状态代码是302,但没有数据.

如果我发布所有必需的用户名/密码,那么它应该返回应用程序的主页并保持连接实时移动应用程序的其他部分.

Sin*_*nür 15

您可以为此目的使用WWW :: Mechanize:

Mech支持执行一系列页面提取,包括以下链接和提交表单.解析每个获取的页面并提取其链接和表单.可以选择链接或表单,填写表单字段并可以获取下一页.Mech还会存储您访问过的URL的历史记录,可以查询和重新访问这些URL.


mve*_*man 9

我猜这LWP不是重定向:

push @{ $ua->requests_redirectable }, 'POST';
Run Code Online (Sandbox Code Playgroud)

您没有使用WWW :: Mechanize的原因