Skip to content

Quickstart

Five minutes from a clean clone to your first decrypted HTTPS capture.

Prerequisites

  • macOS 14+
  • Node 20 LTS + pnpm 9+ (corepack enable && corepack prepare pnpm@10 --activate)
  • Go 1.22+
  • brew install protobuf (for code generation)

Steps

  1. Clone + bootstrap

    Terminal window
    git clone https://github.com/trongitnlu/proxypro.git
    cd proxypro
    make bootstrap

    make bootstrap runs go install protoc-gen-go protoc-gen-go-grpc and pnpm --dir app install.

  2. Generate code + build engine

    Terminal window
    make proto # Go + TypeScript bindings
    make engine # universal arm64+amd64 binary at engine/bin/proxypro-engine
  3. Launch the app

    Terminal window
    make dev

    You should see:

    start electron app...
    ...spawning engine: .../proxypro-engine --ipc=/tmp/proxypro-XXXX.sock
    ...proxy listening on 127.0.0.1:9090

    The Electron window opens with status running in the header.

  4. Install the root CA

    In the app, switch to the Cert panel and click Install to Keychain. For Chrome (which reads the System keychain, not login), also run:

    Terminal window
    sudo security add-trusted-cert -d -r trustRoot \
    -k /Library/Keychains/System.keychain \
    ~/Library/Application\ Support/ProxyPro/ca/root.pem

    See Install the certificate for details on why two keychains.

  5. Route traffic through the proxy

    Click ○ system proxy OFF in the app header. It flips to green ● system proxy ON and routes all macOS HTTP/HTTPS traffic through ProxyPro.

    Equivalent manual commands (if you prefer):

    Terminal window
    networksetup -setwebproxy "Wi-Fi" 127.0.0.1 9090
    networksetup -setsecurewebproxy "Wi-Fi" 127.0.0.1 9090
  6. Restart Chrome and browse

    Terminal window
    pkill -x "Google Chrome" && open -a "Google Chrome"

    Visit any HTTPS site. Captures stream into the captures view with method, host, path, status, size, duration, and a kind badge (h1, h2, ws, grpc).

  7. Test a Map Local rule

    Switch to the rules view, click + Add. Set:

    • URL pattern: https://api.example.com/*
    • File path: any local JSON file
    • Status: 200

    Reload the matching endpoint in your browser — ProxyPro serves the local file instead of the real upstream. The capture shows X-Proxypro-Rule: map-local to confirm the short-circuit.

What’s next