我正在尝试使用WWW连接到https网站:Mechanize。当我运行我的脚本时,我收到错误"网络无法访问..."消息如下所示。
为什么它使用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 :(得分:0)
my $ url =" https://www.cpan.org" ;;
当脚本到达站点时出现问题#1:使用浏览器进行检查。惊喜:它在ERR_CONNECTION_REFUSED的浏览器中失败。这告诉你该网站也没有浏览器,所以为什么它应该与脚本一起使用。
为什么它使用http.pm而不是https.pm,它存在于该目录中?
因为https只是SSL隧道内的http,所以LWP中的https支持会大量使用http支持。因此,您从http.pm。
收到错误消息