使用Perl用户代理的HTTPS请求

使用Perl用户代理的HTTPS请求,perl,https,lwp,charles-proxy,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(k

我正在尝试使用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();
打印的响应基本上是“401未经授权”页面。我可以通过浏览器登录。浏览器使用一个弹出窗口,显示“需要身份验证”——服务器xyz.url.com:80需要用户名和密码。服务器说:废话废话‘我读过很多帖子,指示安装像
Crypt::SSLeay
LWP::Protocol::https
。这些都已安装。我被难住了。


我还下载了一个名为Charles的程序,以查看请求/响应是否有值得注意的地方,但我不确定该去哪里查找。我曾尝试为这个领域添加“废话”,但没有成功。这个领域可以用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();

另外,我删除了代码中的变量
$browser
,因为您似乎没有使用它做任何事情。

文档中说凭据的第一个参数是
-也就是说,端口号不是可选的。试试
“xyz.url.com:443”
。另外,
'
域将无效,除非服务器正在发送该域;我相信你真的想在这个领域里使用
“废话”

这个问题的可能的重复是类似的,我在发布这个问题之前读过一个。但是,我没有解决方案,如果有人教我使用Charles或其他工具来解决这个问题,我将不胜感激。我已经尝试添加端口和领域,但是我不相信我指定的领域是正确的。