我有一个脚本,它使用以下代码连接到服务器。
$sock = new IO::Socket::INET (
PeerAddr => $server,
PeerPort => $port,
Proto => 'tcp',
);
但是,我在代理服务器后面,不能使用这个脚本。为了克服这个问题,我必须添加代理支持。关于SO的一个建议是使用CCD_ 1。由于我不懂Perl,我不知道如何用使用UserAgent
的代码替换这段代码。我不想碰其余的代码。我可以用UserAgent
重新定义$sock
吗。我所说的脚本在这里可用
我不确定你指的是什么"UserAgent"模块。没有一个模块叫它。有很多模块的名称中都包含UserAgent,但我不知道有哪一个适用于您的情况。
不管怎样,我想你在找IO::Socket::Socks。我自己从来没有尝试过,但你应该能够做到:
use IO::Socket::Socks;
my $sock = IO::Socket::Socks->new(
ProxyAddr => $hostname_of_your_proxy,
ProxyPort => $port_number_your_proxy_listens_on,
ConnectAddr => $server,
ConnectPort => $port,
);
并保留代码的其余部分。
我猜你指的是这次讨论?但是,从HTTP服务器远程获取一些文件(对于这个LWP::UserAgent确实更相关)和通过IO::Socket(::INET)提交文件之间存在差异,就像您链接的脚本中一样。
你可以使用cjm提供的伟大解决方案,或者只使用socat,比如:
socat TCP4-LISTEN:9999 TCP4:moss.stanford.edu:7690
其中9999表示本地代理端口。好处是:您不必更改moss的脚本;坏的是:你必须先安装socat。