Som*_*day 5 perl https lwp charles-proxy
我试图使用Perl请求使用HTTPS身份验证的html文档.我过去没有遇到过非HTTPS代码的问题.我目前正在使用LWP :: UserAgent:
#! /usr/bin/perl
use LWP;
use HTTP::Request::Common;
my $browser = LWP::UserAgent->new;
my $baseurl = "https://xyz.url.com/directory";
my $ua = LWP::UserAgent->new(keep_alive=>1);
$ua->cookie_jar({});
$ua->credentials('xyz.url.com:80', '', 'login', 'password');
my $response = $ua->get($baseurl);
print $response->content();
Run Code Online (Sandbox Code Playgroud)
打印的响应基本上是"401 Unauthorized"页面.我可以通过浏览器登录.浏览器使用弹出窗口显示"需要身份验证 - 服务器xyz.url.com:80需要用户名和密码.服务器说:等等等等"我已经看了很多帖子,指示安装的东西像Crypt::SSLeay和LWP::Protocol::https.这些已安装.我很难过.
我还下载了一个名为Charles的程序,看看请求/响应是否有任何注意事项,但是我不确定在哪里查看.我曾尝试为这个领域添加'Blah Blah',但这并不成功.可以使用Charles识别领域吗?
可能是因为你没有设置合适的代理。尝试这个:
#! /usr/bin/perl
use LWP;
use HTTP::Request::Common;
my $baseurl = "https://xyz.url.com/directory";
my $ua = LWP::UserAgent->new(keep_alive=>1);
$ua->agent('Mozilla/5.0');
$ua->cookie_jar({});
$ua->credentials('xyz.url.com', '', 'login', 'password');
my $response = $ua->get($baseurl);
print $response->content();
Run Code Online (Sandbox Code Playgroud)
另外,我删除了代码中的变量$browser,因为看起来您没有将它用于任何用途。