【问题标题】:Perl LWP::Simple HTTPS errorPerl LWP::简单的 HTTPS 错误
【发布时间】:2014-02-03 18:32:59
【问题描述】:

我正在尝试获取网站的内容并进行打印。该代码按照我希望它与常规 HTTP 网站一起使用的方式工作,但它不适用于 HTTPS。

我已查找此问题的修复程序,但它们在我的程序中不起作用。这是我目前拥有的代码:

#! usr/bin/perl
use strict;
use warnings;
use LWP::Simple;
use LWP::UserAgent;
use 5.014;

$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;

my $ua = LWP::UserAgent->new();
$ua->ssl_opts( verify_hostnames => 0 );

getprint('https://<website>')or die 'Unable to get page';

这是我得到的错误:

500 Can't connect to <IP address>:443 (certificate verify failed) <URL:https://<website>>

【问题讨论】:

  • 这不是您运行的代码。 LWP::Simple-&gt;new() 是一个运行时错误。
  • @ikegami 你是对的,我正在测试看看它是否在某个时候有效,并且一定是复制了错误的代码。我修好了。

标签: perl https perl-module lwp


【解决方案1】:

也许以下内容会有所帮助:

use strict;
use warnings;
use LWP::UserAgent;
use open qw(:std :utf8);

my $ua = LWP::UserAgent->new( ssl_opts => { verify_hostname => 0 } );
my $response = $ua->get('https://<website>');

if ( $response->is_success ) {
    print $response->decoded_content;
}
else {
    die $response->status_line;
}

请参阅 LWP::Protocol::httpsLWP::UserAgent

【讨论】:

【解决方案2】:

$ua-&gt;ssl_opts( verify_hostnames =&gt; 0 ); 失败的原因可能是你拼错了verify_hostname

我不知道为什么$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0; 失败,但可能是因为必须在加载 SSL 库之前设置环境变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多