有些应用程序支持代理(http代理或socks代理),有些则不支持。
对于浏览器,我可以在首选项/选项对话框中指定代理服务器,其他应用程序可能能够在配置文件中配置代理服务器。
出于一般目的,我可以使用特定代理调用命令吗?如下所示:
$ proxy-exec --type sock5 --server 1.2.3.4:8000 -- wget/ftp ...
我正在使用 Ubuntu Maverick。
附言
在 win32 中,可以通过劫持套接字 dll 来实现,也许吧,我不熟悉 Linux 编程,但我猜在 Linux 上是可能的。不过。
答案1
大多数访问互联网的 Linux 命令都会在HTTP_PROXY
、FTP_PROXY
和SOCKS_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