Some applications support proxy (http proxy or socks proxy), and some are not.
For browsers, I can specify proxy server in the preferences/options dialog, and other applications may be able to configure proxy servers in config files.
For general purpose, can I invoke a command using a specific proxy? Like following:
$ proxy-exec --type sock5 --server 1.2.3.4:8000 -- wget/ftp ...
I'm using Ubuntu Maverick.
P.S.
In win32, it can be implemented by hijacking the socket dlls, maybe, I'm not familiar with Linux programming, but I guess it's possible in Linux. though.
Best Answer
Most Linux commands that access the Internet look in the
HTTP_PROXY
,FTP_PROXY
, andSOCKS_SERVER
environment variables for proxy information. So, to do something like your example, just run:The syntax for
HTTP_PROXY
andFTP_PROXY
is slightly different:The default GNOME desktop environment included with Ubuntu's proxy settings has an Apply System-Wide button, which will automatically set those environment variables for you. Otherwise, you can add the
export
lines to your~/.bashrc
file to make them take effect at every login.Unfortunately,
wget
doesn't support SOCKS at all. You can usecurl
, which is included with Ubuntu, to achieve many things thatwget
does. Unfortunately, it doesn't checkSOCKS_SERVER
, while it does checkHTTP_PROXY
(as doeswget
). To use curl to download this page with a SOCKS5 server (performing DNS resolution with that server) and save it assuperuser.html
, run this:If you want to make
curl
always use that SOCKS proxy, you could create a shell alias. Just add the following line to your~/.bashrc
:You will need to restart your terminal or run that line as if it were a command for the changes to take effect.