2015-11-06 6 views
0

Я пытаюсь подключиться к https-сайту с помощью WWW: Mechanize. Когда я запускаю свой скрипт, я получаю сообщение об ошибке «Network is unreachable ...», показанное ниже.Perl WWW: Механизировать не подключение по https

Почему он использует http.pm, а не https.pm, который присутствует в этом каталоге? Источник и ошибки ниже ...

#!/usr/bin/env perl 
use LWP::UserAgent; 
use LWP::Protocol::https; 
use WWW::Mechanize; 

$ENV{HTTPS_DEBUG} = 1; 
print "WWW::Mechanize: ", $WWW::Mechanize::VERSION, "\n"; 
print "LWP : ", $LWP::UserAgent::VERSION, "\n"; 
print "LWP::Protocol::https : " , $LWP::Protocol::https::VERSION, "\n"; 

my $mech = WWW::Mechanize->new(); 
my $ua = LWP::UserAgent->new; 
$ua->protocols_allowed(['https']); 
$mech->add_handler("request_send", sub { shift->dump; return }); 
$mech->add_handler("response_done", sub { shift->dump; return }); 

my $url ="https://www.cpan.org"; 

$mech->get($url); 

my @links = $mech->links(); 
for my $link (@links) { 
    printf "%s, %s\n", $link->text, $link->url; 
} 

Выход:

WWW::Mechanize: 1.75 
LWP : 6.13 
LWP::Protocol::https : 6.06 
GET https://www.cpan.org 
Accept-Encoding: gzip 
User-Agent: WWW-Mechanize/1.75 

(no content) 
500 Can't connect to www.cpan.org:443 
Content-Type: text/plain 
Client-Date: Fri, 06 Nov 2015 03:29:49 GMT 
Client-Warning: Internal response 

Can't connect to www.cpan.org:443\n 
Network is unreachable at /home/coldsoda/localperl/lib/site_perl/5.22.0/LWP/Protocol/http.pm line 47.\n 
Error GETing https://www.cpan.org: Can't connect to www.cpan.org:443 at ./mechurl.pl line 24. 
+0

Я не могу подключиться к 'https: // www.cpan.org', используя' https' через браузер, но могу подключиться к 'https: // metacpan.org /', используя ваш скрипт. Я думаю, CPAN не поддерживает 'https'. –

ответ

0

мой $ URL = "https://www.cpan.org";

Правило № 1 при наличии проблем со сценарием, достигающим сайта: уточните у браузера. Сюрприз: он не работает в браузере с ERR_CONNECTION_REFUSED. Что говорит вам, что сайт не доступен в браузере, так почему он должен работать со сценарием.

Почему он использует http.pm, а не https.pm, который присутствует в этом каталоге?

Потому что https - это всего лишь http внутри SSL-туннеля. Поддержка https в LWP сильно использует поддержку http. Таким образом, вы получите сообщение об ошибке с http.pm.

+0

Спасибо. Я попробовал несколько сайтов для тестирования http v https, и присутствие вопроса http.pm омрачило мое мышление. – ColdSoda

Смежные вопросы