我有一个脚本,它使用以下代码连接到服务器。
$sock = new IO::Socket::INET (
PeerAddr => $server,
PeerPort => $port,
Proto => 'tcp',
);
但是,我在代理服务器后面,不能使用此脚本。为了解决这个问题,我必须添加代理支持。关于SO的建议是使用UserAgent
。由于我是Perl文盲,因此我不确定如何将此代码替换为使用UserAgent
的代码。我不想触及其余的代码。我可以使用$sock
重新定义UserAgent
以便脚本工作文件。我正在讨论的脚本可用here
答案 0 :(得分:1)
我不确定您所指的“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,
);
并保留其余代码。
答案 1 :(得分:0)
我猜你指的是this discussion?但是远程从HTTP服务器获取某些文件(因为这个LWP :: UserAgent确实更相关)和通过IO :: Socket(:: INET)提交文件之间存在差异,就像在您链接的脚本中一样。
你可以使用提供的优秀解决方案cjm,或者只使用socat,就像那样:
socat TCP4-LISTEN:9999 TCP4:moss.stanford.edu:7690
...其中9999指的是本地代理端口。好处:你不必改变苔藓的剧本;坏事:你必须先安装socat。