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.
In Windows 7 proxycfg.exe has been replaced with the netsh command. Netsh.exe is a command-line scripting utility that allows you to, either locally or remotely, display or modify the network configuration of a computer that is currently running. To setup a local machine proxy you would use the following syntax:
- open a command prompt in administrative mode (hit start globe, type
cmd, then hit Ctrl+Shift + Enter)
To set a proxy:
netsh winhttp set proxy [proxy server address:port number] [bypass list]
Example:
netsh winhttp set proxy "myproxy.proxyaddress.com:8484" "<local>;*.proxyaddress.com"
To check your proxy server setting:
netsh winhttp show proxy
To remove the proxy server setting:
netsh winhttp reset proxy
The netsh
command is interactive so you can always just type netsh and then the subsequent commands you need to save some key stroaks.
Important note: If you're running on a 64-bit OS, and want the proxy to be applied for 32-bit processes as well, you'll need to also modify your settings by running C:\Windows\SysWow64\netsh.exe
. This is caused by a bug in Windows 7's version of netsh.exe
, which doesn't write the registry values to the Wow6432Node
key. This bug seems to be fixed for Windows 10 (and probably Windows 8 as well)
Best Answer
EDIT: I am assuming you actually means Mac OS X, and not Mac OS..
You can use the commandline tool 'networksetup'
There is a manpage for it - networksetup(8)
You will find many options for proxy settings in there:
Alternatively, if you just need to set the proxy for something like wget, or curl, then you can use the fairly universal 'http_proxy' and 'ftp_proxy' env variables.
Eg in bash:
Where '1234' is the port number.
cheers
sc.