【问题标题】:HTTPS Request with Perl UserAgent使用 Perl UserAgent 的 HTTPS 请求
【发布时间】:2014-01-20 14:03:38
【问题描述】:

我正在尝试使用 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 Unauthorized”页面。我可以通过浏览器登录。浏览器使用一个弹出窗口,显示“需要身份验证——服务器 xyz.url.com:80 需要用户名和密码。服务器说:Blah Blah' 我读过很多帖子,指示安装 Crypt::SSLeayLWP::Protocol::https 之类的东西。这些已安装。我被难住了。

我还下载了一个名为 Charles 的程序,以查看请求/响应是否有任何值得注意的地方,但我不确定该去哪里找。我尝试为领域添加“Blah Blah”,但这并不成功。可以使用 Charles 识别领域吗?

【问题讨论】:

  • 这个问题很相似,我在发布这个问题之前阅读了一个问题。但是,我没有解决方案,如果有人指导我使用 Charles 或其他工具解决问题,我将不胜感激。

标签: perl https lwp charles-proxy


【解决方案1】:

文档说凭据的第一个参数是<host>:<port>——也就是说,端口号不是可选的。试试"xyz.url.com:443"。此外,'' 的领域是无效的,除非这是服务器发送的内容;我相信你实际上想使用"Blah Blah" 作为领域。

【讨论】:

  • 我尝试添加端口和领域,但我不确定我指定的领域是否正确。
【解决方案2】:

可能是因为你没有设置合适的代理。试试这个:

#! /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,因为您似乎没有将它用于任何事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多