perl – 如何强制LWP使用Crypt :: SSLeay进行HTTPS请求?
发布时间:2020-12-15 21:15:56 所属栏目:大数据 来源:网络整理
导读:我的症状是我无法使用带有LWP的HTTPS请求的代理.这似乎是一个常见的问题,谷歌甚至 here上的提示都提出了设置HTTPS_PROXY环境变量以供Crypt :: SSLeay使用的解决方法. 我的具体问题似乎是LWP :: Protocol :: https正在加载IO :: Socket :: SSL而不是Crypt ::
我的症状是我无法使用带有LWP的HTTPS请求的代理.这似乎是一个常见的问题,谷歌甚至
here上的提示都提出了设置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 简单地在我的脚本中添加显式使用Crypt :: SSLeay已被证明是无效的.它加载模块,但它继续加载IO :: Socket :: SSL,并将其用于HTTPS请求. 解决方法
尝试这个:
use strict; use warnings; use Net::SSL (); # From Crypt-SSLeay BEGIN { $Net::HTTPS::SSL_SOCKET_CLASS = "Net::SSL"; # Force use of Net::SSL $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; 我没有合适的代理,所以我自己没试过. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |