This script proxyctl
helps control the Web Proxy preferences on macOS from the commandline.
I use proxyctl
in aliases like:
# ~/.bashrc
alias mitmproxy.run='proxyctl start; mitmproxy -p 8888; proxyctl stop'
Now calling mitmproxy.run
will configure and enable the system Web Proxy preferences, run mitmproxy,
and after exiting mitmproxy will disable the Web Proxy preferences.
Here is the proxyctl
script:
#!/bin/bash # $ networksetup -listallnetworkservices # An asterisk (*) denotes that a network service is disabled. # Ethernet # *Wi-Fi domain=localhost port=8888 networkservice=Ethernet protocols="web secureweb" #------------------------------------------------------------------------------ get_state() { for protocol in $protocols; do printf "\n%s:\n----------\n" "$protocol" networksetup "-get${protocol}proxy" "$networkservice" done echo } set_state() { for protocol in $protocols; do sudo networksetup "-set${protocol}proxystate" "$networkservice" "$1" done } set_domain_port() { for protocol in $protocols; do sudo networksetup "-set${protocol}proxy" "$networkservice" "$domain" "$port" done } is_enabled() { local res=0 for protocol in $protocols; do if ! networksetup "-get${protocol}proxy" "$networkservice" | grep -q 'Enabled: Yes'; then (( res += 1 )) fi done return $res } set_enabled() { set_domain_port set_state on get_state } set_disabled() { set_state off get_state } case "$1" in start) set_enabled ;; stop) set_disabled ;; toggle) if is_enabled; then set_disabled else set_enabled fi ;; status) get_state ;; *) echo $"usage: ${0##*/} {start|stop|toggle|status}" exit 1 esac
download:
proxyctl