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>>

person CircuitB0T    schedule 03.02.2014    source источник
comment
Это не тот код, который вы запускали. LWP::Simple->new() — ошибка времени выполнения.   -  person ikegami    schedule 04.02.2014
comment
@ikegami Вы правы, я проверял, работает ли это в какой-то момент, и, должно быть, скопировал неправильный код. Я починил это.   -  person CircuitB0T    schedule 04.02.2014


Ответы (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;
}

См. http://search.cpan.org/~gaas/LWP-Protocol-https-6.04/lib/LWP/Protocol/https.pm и LWP::UserAgent.

person Kenosis    schedule 03.02.2014
comment
Также см. это: stackoverflow.com/questions/13385846/ - person Richard Huxton; 03.02.2014
comment
@ CircuitB0T - В качестве уточнения, у вас это сработало, когда verify_hostname => 0 или verify_hostname => 1? - person Kenosis; 04.02.2014

Причина, по которой $ua->ssl_opts( verify_hostnames => 0 ); не работает, вероятно, заключается в том, что вы неправильно написали verify_hostname.

Я не знаю, почему $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0; потерпел неудачу, но это может быть связано с тем, что переменная окружения должна быть установлена ​​до загрузки библиотеки SSL.

person ikegami    schedule 04.02.2014