我希望使用Perl的LWP::UserAgent模块通过HTTPS代理请求一个URL。虽然有很多相关参考资料,但是没有一篇能够帮助我让它正常工作。
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use Data::Dumper;
BEGIN {
$ENV{HTTPS_PROXY} = 'https://<IP>:<PORT>';
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
$ENV{HTTPS_PROXY_USERNAME} = '<API_KEY>';
$ENV{HTTPS_PROXY_PASSWORD} = '';
$ENV{HTTPS_DEBUG} = 1; #Add debug output
}
my $ua = LWP::UserAgent->new(ssl_opts => {verify_hostname => 0}, SSL_version => 'SSLv3', allowed_protocols => ['https', 'http']);
$ua->proxy(['https', 'http'], 'https://<IP>:<PORT>');
my $req = HTTP::Request->new('GET','https://<DOMAIN_URL>');
print STDERR Dumper($ua);
my $response = $ua->request($req);
print $response->code ."\n";
print STDERR Dumper($response);
我收到了如下错误信息:
SSL 连接尝试失败,错误为“error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol”,位于“/home/user/project/local/lib/perl5/LWP/Protocol/http.pm”的第51行。
即使我在 LWP 中指定 allowed_protocols、代理中使用 https 协议和 URL 使用 https,它仍会转到 LWP::Protocol::HTTP 而不是 LWP::Protocol::HTTPS。
我还确认了 LWP::Protocol::HTTPS 的版本为 6.06,与 LWP::UserAgent 版本相同(这是一个论坛提到的信息)。
SSLv3
?是因为你真的需要它,还是因为你在某个地方看到了它? - Sinan Ünür