Ram*_*Ram 9 perl lwp lwp-useragent
我正在尝试访问受保护的文件.服务器正在使用摘要式身份验证 - 我可以从打印出的响应中看到.以下是示例代码:
use LWP;
use strict;
my $url = 'http://somesite.com/aa/bb/cc.html';
my $username = 'scott';
my $password = 'tiger';
my $browser = LWP::UserAgent->new('Mozilla');
$browser->credentials("http://somesite.com:80","realm-name",$username=>$password);
my $response=$browser->get($url);
print $response->content;
Run Code Online (Sandbox Code Playgroud)
当我尝试从浏览器访问该资源时,我从弹出窗口获取它的领域的名称.相同的用户名和密码在浏览器中工作得非常好,我能够看到内容,但是当我运行上面的脚本时,它总是说401 Authorization required.
LWP如何运作?
我是否需要要求LWP发送用户名和密码的MD5哈希(摘要),或者它是否在内部检查要使用的身份验证并发送相应的(基本/摘要)发送凭据的方式.我的问题是
任何快速帮助都非常感谢!
Gre*_*con 18
请考虑以下LWP::UserAgent模块文档的摘录:
$ua->credentials( $netloc, $realm )
$ua->credentials( $netloc, $realm, $uname, $pass )获取/设置要用于领域的用户名和密码.
这
$netloc是一个表单的字符串"<host>:<port>".用户名和密码只会传递给此服务器.例:Run Code Online (Sandbox Code Playgroud)$ua->credentials("www.example.com:80", "Some Realm", "foo", "secret");
更改
$browser->credentials("http://somesite.com:80","realm-name",$username=>$password);
Run Code Online (Sandbox Code Playgroud)
至
$browser->credentials("somesite.com:80","realm-name",$username=>$password);
Run Code Online (Sandbox Code Playgroud)
rda*_*mon 12
HTTP GET Authed Request也可以按如下方式完成
use LWP::UserAgent;
my $address = "localhost";
my $port = "8080";
my $username = "admin";
my $pass = "password";
my $browser = LWP::UserAgent->new;
my $req = HTTP::Request->new( GET => "http://$address:$port/path");
$req->authorization_basic( "$username", "$pass" );
my $page = $browser->request( $req );
Run Code Online (Sandbox Code Playgroud)