仅使用IO::Socket通过代理从Perl发出HTTP(S)请求
我有一个Perl脚本,我将请求放入HTTPS服务器并发送一个文件。 请求仅通过IO::Socket::SSL完成仅使用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
$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,
}
);