Sometimes I need to send my traffic to a proxy, sometimes I don't.
Currently, I have to go to the settings every time to click it.
Is there any simple way for me to switch this? For instance, use a shell command to do this.
This can be done with
Get all services:
Then with the proper service (e.g Ethernet or the name of your USB 10/100/1000 LAN adapter) enter
sudo networksetup -setsocksfirewallproxy <networkservice> <domain> <port number> <authenticated> <username> <password>
sudo networksetup -setwebproxy <networkservice> <domain> <port number> <authenticated> <username> <password>
to configure it (which isn't necessary in your case, because you already entered all necessary values).
sudo networksetup -setsocksfirewallproxy Ethernet 127.0.0.1 18080 sudo networksetup -setwebproxy Ethernet 127.0.0.1 18080
To simply toggle it on or off use:
sudo networksetup -setsocksfirewallproxystate networkservice on | off sudo networksetup -setwebproxystate networkservice on | off
sudo networksetup -setsocksfirewallproxystate Ethernet off sudo networksetup -setwebproxystate Ethernet off
man networksetup will reveal other proxy options (gopher, ftp, etc.)
Take a look at this page at YourMacGuy about the Terminal command
networksetup. Although the page dates from 2008, the command exists and works in macOS Sierra. Perhaps one of the proxy-related commands will work for you. You can always create multiple Locations in System Preferences > Network that can enable or disable the proxy. You will still need to open System Preferences, though.