我的症状是我无法使用带有 LWP 的 HTTPS 请求的代理。这似乎是一个常见问题,Google 甚至这里的提示都建议了一种解决方法来设置HTTPS_PROXY
环境变量以供 Crypt::SSLeay 使用。
我的具体问题似乎是 LWP::Protocol::https 正在加载 IO::Socket::SSL 而不是 Crypt::SSLeay。我怎样才能强制使用 Crypt::SSLeay?
我的代码:
#!/usr/bin/perl
use strict;
use warnings;
$ENV{HTTPS_PROXY} = 'http://10.0.3.1:3128';
use LWP::UserAgent;
my $ua = LWP::UserAgent->new();
my $req = HTTP::Request->new('GET','https://www.meritrustcu.org/');
my $res = $ua->request($req);
print "$_\n" for grep { $_ =~ /SSL/ } keys %INC;
它的输出显示 Crypt::SSLeay 没有被使用:
Net/SSLeay.pm
IO/Socket/SSL.pm
/usr/lib/perl5/auto/Net/SSLeay/autosplit.ix
/usr/lib/perl5/auto/Net/SSLeay/set_proxy.al
/usr/lib/perl5/auto/Net/SSLeay/randomize.al
简单地向我的脚本添加显式use Crypt::SSLeay
已被证明是无效的。它会加载模块,但会继续加载 IO::Socket::SSL,并将其用于 HTTPS 请求。