Most Linux commands that access the Internet look in the HTTP_PROXY
, FTP_PROXY
, and SOCKS_SERVER
environment variables for proxy information. So, to do something like your example, just run:
export SOCKS_SERVER=1.2.3.4:8000
wget http://superuser.com/q/262956/66003
The syntax for HTTP_PROXY
and FTP_PROXY
is slightly different:
export HTTP_PROXY=http://1.2.3.4:3128/
export FTP_PROXY=ftp://1.2.3.4:25/
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 use curl
, which is included with Ubuntu, to achieve many things that wget
does. Unfortunately, it doesn't check SOCKS_SERVER
, while it does check HTTP_PROXY
(as does wget
). To use curl to download this page with a SOCKS5 server (performing DNS resolution with that server) and save it as superuser.html
, run this:
curl --socks5-hostname 1.2.3.4:8000 http://superuser.com/q/262956/66003 > superuser.html
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
:
alias curl='curl --socks5-hostname 1.2.3.4:8000'
You will need to restart your terminal or run that line as if it were a command for the changes to take effect.
Best Answer
As the other answer says there are some programs that don't look at the system at all you may have to set them up individually. For instance wget has a number of proxy options, that can be used to ignore or adapt the environmental proxy config during execution. Here are a number of areas in which the systems proxys can be set up.
Some Linux systems use /etc/environment
There is no uniform single set up other use env
I would check out the ~/.bashrc to have setting applied automatically on system start up.