Perl LWP:: Простая ошибка HTTPS
Я пытаюсь получить содержимое веб-сайта и распечатать. Код работал так, как я хотел, чтобы он работал с обычным веб-сайтом 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>>
2 ответа
Решение
Возможно, следующее будет полезно:
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::https и LWP:: UserAgent.
Причина $ua->ssl_opts( verify_hostnames => 0 );
не может быть, вероятно, потому что вы написали с ошибкой verify_hostname
,
Я не знаю почему $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
не удалось, но это может произойти, потому что переменная окружения должна быть установлена до загрузки библиотеки SSL.