Perl   发布时间:2022-04-05  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了perl – 如何强制LWP使用Crypt :: SSLeay进行HTTPS请求?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的症状是我无法使用带有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;

我没有合适的代理,所以我自己没试过.

大佬总结

以上是大佬教程为你收集整理的perl – 如何强制LWP使用Crypt :: SSLeay进行HTTPS请求?全部内容,希望文章能够帮你解决perl – 如何强制LWP使用Crypt :: SSLeay进行HTTPS请求?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。