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

Xiè*_*léi 13 proxy command-line ubuntu

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

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

出于一般目的,我可以使用特定代理调用命令吗?像下面这样:

$ proxy-exec --type sock5 --server 1.2.3.4:8000 -- wget/ftp ...
Run Code Online (Sandbox Code Playgroud)

我正在使用 Ubuntu Maverick。

聚苯乙烯

在win32中,可以通过劫持socket dll来实现,也许,我对Linux编程不熟悉,但我想在Linux中是可能的。尽管。

Pat*_*hes 18

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

export SOCKS_SERVER=1.2.3.4:8000
wget http://superuser.com/q/262956/66003
Run Code Online (Sandbox Code Playgroud)

对于语法HTTP_PROXYFTP_PROXY略有不同:

export HTTP_PROXY=http://1.2.3.4:3128/
export FTP_PROXY=ftp://1.2.3.4:25/
Run Code Online (Sandbox Code Playgroud)

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

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

curl --socks5-hostname 1.2.3.4:8000 http://superuser.com/q/262956/66003 > superuser.html
Run Code Online (Sandbox Code Playgroud)

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

alias curl='curl --socks5-hostname 1.2.3.4:8000'
Run Code Online (Sandbox Code Playgroud)

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


Flu*_*ffy 10

尝试代理链

它可以通过apt-get. 然后你需要在其中任何一个中创建一个配置文件

1) ./proxychains.conf
2) $(HOME)/.proxychains/proxychains.conf
3) /etc/proxychains.conf **
Run Code Online (Sandbox Code Playgroud)

并且您将能够调用另一个命令,例如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.*.*
Run Code Online (Sandbox Code Playgroud)

我去除了一些 HTML 标签和 IP,但正如您所看到的,使用了代理并且 IP 地址确实发生了变化。

  • 由于原来的 [proxychains](http://proxychains.sourceforge.net/) 没有维护,你可以使用 [proxychains-ng](https://github.com/rofl0r/proxychains-ng) 代替。 (3认同)