仅使用IO::Socket通过代理从Perl发出HTTP(S)请求

仅使用IO::Socket通过代理从Perl发出HTTP(S)请求,perl,proxy,Perl,Proxy,我有一个Perl脚本,我将请求放入HTTPS服务器并发送一个文件。 请求仅通过IO::Socket::SSL完成 $socket = new IO::Socket::INET(PeerAddr => $host,PeerPort => $port,Proto => 'tcp'); my $h ="PUT ".$path." HTTP/1.0\r\n"; $h.="Accept: */*\r\n"; ........ $h.="\r\n"; pri

我有一个Perl脚本,我将请求放入HTTPS服务器并发送一个文件。 请求仅通过IO::Socket::SSL完成

$socket = new IO::Socket::INET(PeerAddr => $host,PeerPort => $port,Proto    => 'tcp');
my $h ="PUT ".$path." HTTP/1.0\r\n";
    $h.="Accept: */*\r\n";
    ........
    $h.="\r\n";

print $socket $h;
但是现在我需要通过代理服务器执行这个请求

最简单的方法是什么? 我可以将prozy服务器配置为设置不同类型的连接(如果有不同类型的连接)。哪种类型最好

如何处理请求? 据我所知,我必须使用IO::Socket连接到代理,并放置类似connect的东西

这看起来怎么样

谢谢

更新1。 我找到了这样的解决办法 模块IO::Socket::Socks满足我的需要。但不适用于HTTPS。 我尝试使用IO::Socket::SecureSocks。但它总是失败

#!/usr/bin/perl

use IO::Socket::SecureSocks;


my $socket = IO::Socket::SecureSocks->new(
              ProxyAddr   => '127.0.0.1',
              ProxyPort   => 8876,  
              ConnectAddr => 'yahoo.com',
              ConnectPort => 443,
              Timeout     => 10
              ) or die "Error $!\n";

print $socket "GET / HTTP 1.1\r\n\r\n";
print join ('',<$socket>);
#/usr/bin/perl
使用IO::Socket::SecureSocks;
my$socket=IO::socket::SecureSocks->new(
ProxyAddr=>“127.0.0.1”,
ProxyPort=>8876,
ConnectAddr=>yahoo.com',
连接端口=>443,
超时=>10
)或死“错误$!\n”;
打印$socket“GET/HTTP 1.1\r\n\r\n”;
打印连接(“”,);
它显示了错误。我做错了什么


这个代理可以很好地处理PHP和https链接中的curl。代理是SOCKS 5代理

我自己找到了解决方案。 我使用模块IO::Socket::Socks::Wrapper将所有请求重定向到SOCKS5代理。 我只是在脚本的开头添加了

use IO::Socket::Socks::Wrapper (
{
    ProxyAddr => 'proxy.addr',
    ProxyPort => 8876,
}
);

我自己找到了解决办法。 我使用模块IO::Socket::Socks::Wrapper将所有请求重定向到SOCKS5代理。 我只是在脚本的开头添加了

use IO::Socket::Socks::Wrapper (
{
    ProxyAddr => 'proxy.addr',
    ProxyPort => 8876,
}
);