18

For every new session in OS X terminal, I have to make my proxy settings again. I do this by entering the command

export http_proxy="username:password@ip address:port number"

Is there a way to make these proxy settings once for all?

0

3 Answers 3

22

Your http proxy (just for some web sites not https ones and not for the rest of the internet) can be set for each terminal session by adding the line

export http_proxy="username:password@ip address:port number"

to your ~/.bash_profile file if using bash (the default from Panther to Mojave) or for later macOS the default shell is zsh and the file to use is ~/.zshrc

Note this will only affect command line programs.

3
  • More recently, zsh is the default shell. In that case, add the command to ~/.zshrc file.
    – Br.Bill
    Sep 10, 2021 at 23:11
  • 1
    Also set https_proxy alongside of http_proxy because some apps uses https. Oct 7, 2021 at 19:43
  • 1
    Is there a way to access the password safely without saving it in plain text?
    – Sirish
    Aug 23, 2022 at 10:06
16

Set system-wide HTTP proxy

To globally set an http proxy system-wide on MacOS (not just for a terminal session) you can use:

networksetup -setwebproxy wi-fi localhost 8080
networksetup -setwebproxystate wi-fi on

This assumes your network interface is called wi-fi (or Wi-Fi), and that your proxy is running on localhost on port 8080.

To disable the proxy:

networksetup -setwebproxystate wi-fi off

This is equivalent to setting the proxy via mac system settings > Network > wi-fi > Advanced > Proxies > Web proxy.

Set system-wide SOCKS5 proxy

networksetup -setsocksfirewallproxy wi-fi localhost 1080
networksetup -setsocksfirewallproxystate wi-fi on

To disable the socks proxy use:

networksetup -setsocksfirewallproxystate wi-fi off

Getting the correct network interface name

All the commands above assume your netowork interface is wi-fi. If you are connected via ethernet then most likely the interface will be en<SOME_NUMBER> e.g. en0 and you'll need to use that instead of wi-fi.

To find the active network interface run this from your terminal:

scutil --nwi | awk -F': ' '/Network interfaces/ {print $2;exit;}'

If you need a GUI wrapper for setting the HTTP/SOCKS/PAC proxies then check out this answer. The bitbar script linked in the answer also contains the commands for setting a SOCK5 or PAC proxy. Update: Bitbar has been renamed to xbar — it's an open-source GUI for text-mode scripts written in bash/applescript/node/golang/etc.

2
  • 1
    Not works for me (Catalina v10.15.7) Oct 7, 2021 at 19:44
  • 1
    Does not work for me in terminal. curl works both with and without proxy. Using Big Sur 11.6
    – Mugen
    Oct 28, 2021 at 11:23
-1

I'm assuming you mean aliases, not proxys.

Add it to ~/.bashrc and ~/.bash_profile. See this guide for more depth. I don't believe OS X supports a ~/.bash_aliases file.

2
  • 1
    No bash directly supports ~/.bash_aliases you call it from ~/.bashrc (which you probably should call from ~..bash_profile as well)
    – mmmmmm
    Feb 8, 2016 at 1:27
  • @Mark Fair, but (to my limited knowledge) some systems do so automagically which makes it easy.
    – JMY1000
    Feb 8, 2016 at 3:36

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .