如何使用特定代理服务器调用命令?

如何使用特定代理服务器调用命令?

有些应用程序支持代理(http代理或socks代理),有些则不支持。

对于浏览器,我可以在首选项/选项对话框中指定代理服务器,其他应用程序可能能够在配置文件中配置代理服务器。

出于一般目的,我可以使用特定代理调用命令吗?如下所示:

$ proxy-exec --type sock5 --server 1.2.3.4:8000 -- wget/ftp ...

我正在使用 Ubuntu Maverick。

附言

在 win32 中,可以通过劫持套接字 dll 来实现,也许吧,我不熟悉 Linux 编程,但我猜在 Linux 上是可能的。不过。

答案1

大多数访问互联网的 Linux 命令都会在HTTP_PROXYFTP_PROXYSOCKS_SERVER环境变量中查找代理信息。因此,要执行类似您的示例的操作,只需运行:

export SOCKS_SERVER=1.2.3.4:8000
wget http://superuser.com/q/262956

HTTP_PROXY和的语法FTP_PROXY稍有不同:

export HTTP_PROXY=http://1.2.3.4:3128/
export FTP_PROXY=ftp://1.2.3.4:25/

Ubuntu 的代理设置中包含的默认 GNOME 桌面环境具有应用全系统按钮,它将自动为您设置这些环境变量。否则,您可以将这些export行添加到文件中~/.bashrc,以使它们在每次登录时生效。

不幸的是,wget根本不支持 SOCKS。您可以使用curl,包含在 Ubuntu 中,可以实现许多功能wget。不幸的是,它不检查SOCKS_SERVER,但它会检查HTTP_PROXY(就像 一样wget)。要使用 curl 通过 SOCKS5 服务器下载此页面(使用该服务器执行 DNS 解析)并将其另存为superuser.html,请运行以下命令:

curl --socks5-hostname 1.2.3.4:8000 http://superuser.com/q/262956 > superuser.html

如果您想curl始终使用该 SOCKS代理,您可以创建一个shell别名。只需将以下行添加到您的~/.bashrc

alias curl='curl --socks5-hostname 1.2.3.4:8000'

您需要重新启动终端或运行该行,就像它是命令一样,以使更改生效。

答案2

尝试代理链

可以使用 进行安装apt-get。然后你需要在以下任一位置创建一个配置文件

1) ./proxychains.conf
2) $(HOME)/.proxychains/proxychains.conf
3) /etc/proxychains.conf **

您将能够调用其他命令,例如proxychains wget google.com- 连接将通过代理。您可以指定一次或随机使用多个代理。

例如:

➜  ssh -ND 4000 sockshost &
[1] 3446
➜  wget whoer.net -q -O- | grep remote_addr
89.71.*.*
➜  cat proxychains.conf 
[ProxyList]
socks5 127.0.0.1 4000
➜  proxychains wget whoer.net -q -O- | grep remote_addr
|D-chain|-<>-127.0.0.1:4000-<><>-95.211.121.18:80-<><>-OK
78.98.*.*

我删除了一些 HTML 标签和 IP,但正如您所见,代理已被使用并且 IP 地址确实发生了变化。

答案3

wget 不支持 socks,curl 可以正常工作补丁说:

curl --socks5-hostname 1.2.3.4:8000 https://superuser.com/q/262956/66003

如果您需要 wget,您可以安装tsocks

安装sudo aptitude install tsocks和设置:

$ sudo vim /etc/tsocks.conf
server = 1.2.3.4
server_type = 5
server_port = 8000

用法:

tsocks wget https://superuser.com/q/262956/66003

相关内容