gpt4 book ai didi

perl - 如何强制 LWP 使用 Crypt::SSLeay 进行 HTTPS 请求?

转载 作者:行者123 更新时间:2023-12-04 11:13:45 24 4
gpt4 key购买 nike

我的症状是我无法使用带有 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

只需添加显式 use 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 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8026524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com