我正在尝试获取网站的内容并打印。代码的工作原理是我希望它能够与常规的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>>
答案 0 :(得分:3)
也许以下内容会有所帮助:
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;
}
答案 1 :(得分:0)
$ua->ssl_opts( verify_hostnames => 0 );
失败的原因可能是因为您拼写错误verify_hostname
。
我不知道为什么$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
失败,但可能是因为必须在加载SSL库之前设置环境var。