Configure the proxy
ProxyPro listens on 127.0.0.1:9090. Clients reach it three ways: the
in-app system-proxy toggle, the macOS Network preferences, or
process-level flags (Chrome, curl, etc.).
Recommended — in-app toggle
Click ○ system proxy OFF in the app header. It flips to
● system proxy ON:
- Calls
networksetup -setwebproxy+-setsecurewebproxyfor every enabled network service (Wi-Fi, Ethernet, USB ethernet). - Auto-disables when:
- You quit the app (cmd+Q)
- The engine subprocess crashes
- The process receives
SIGINT/SIGTERM
Manual — system preferences
# Enablenetworksetup -setwebproxy "Wi-Fi" 127.0.0.1 9090networksetup -setsecurewebproxy "Wi-Fi" 127.0.0.1 9090
# Checknetworksetup -getwebproxy "Wi-Fi"
# Disablenetworksetup -setwebproxystate "Wi-Fi" offnetworksetup -setsecurewebproxystate "Wi-Fi" offSwap "Wi-Fi" for your active service. List them with:
networksetup -listallnetworkservicesPer-process — Chrome
Don’t want to touch the system proxy? Launch a separate Chrome process just for ProxyPro:
open -na "Google Chrome" --args --proxy-server="http://127.0.0.1:9090"Your normal Chrome keeps working as usual.
Per-process — curl
curl --proxy http://127.0.0.1:9090 https://example.comSet the https_proxy env var to make it stick for a shell session:
export https_proxy=http://127.0.0.1:9090export http_proxy=http://127.0.0.1:9090Per-process — Node, Python, others
NODE_EXTRA_CA_CERTS=~/Library/Application\ Support/ProxyPro/ca/root.pem \ https_proxy=http://127.0.0.1:9090 \ node my-script.jsNODE_EXTRA_CA_CERTS adds the ProxyPro CA to Node’s trust store for the
duration of the process.
import requestsr = requests.get( 'https://example.com', proxies={'https': 'http://127.0.0.1:9090', 'http': 'http://127.0.0.1:9090'}, verify='/Users/you/Library/Application Support/ProxyPro/ca/root.pem',)import ( "crypto/x509" "net/http" "net/url" "os")
caPem, _ := os.ReadFile("/Users/you/Library/Application Support/ProxyPro/ca/root.pem")roots := x509.NewCertPool()roots.AppendCertsFromPEM(caPem)
tr := &http.Transport{ Proxy: http.ProxyURL(&url.URL{Scheme: "http", Host: "127.0.0.1:9090"}), TLSClientConfig: &tls.Config{RootCAs: roots},}client := &http.Client{Transport: tr}What ProxyPro does to your traffic
- HTTP/1.1 — full decrypt + capture.
- HTTP/2 — ALPN-negotiated h2, full decrypt + capture.
- HTTP/3 (QUIC) — ALPN-stripped via
Alt-Svcheader rewrite. Browsers fall back to h2. We do not decrypt QUIC directly. - WebSocket — handshake captured, frames relayed with byte + frame counters (per-message reassembly + deflate coming in P03.5).
- gRPC — content-type sniffed, heuristic protobuf walker decodes messages (named-field decoding via reflection in P04.5).
- Pinned apps (banking, Spotify, most native iOS apps) will refuse to trust our CA and fail to connect through the proxy. That’s expected.