ProxyServer Documentation Learn how HTTP proxies work by building and using one

ProxyServer is a local HTTP/HTTPS forward proxy with a real-time web dashboard. It lets you see, inspect, and modify every HTTP request and response flowing through it — a powerful tool for reverse engineering APIs, debugging web applications, and understanding how the web works under the hood.

Browser / App │ ▼ HTTP request ┌──────────────────┐ │ ProxyServer:9080 │ ← You configure your app to route traffic here └────────┬─────────┘ │ │ ① Captures request + response │ ② Optionally intercepts (hold/modify/drop) │ ③ Forwards to real server │ ├──────────────────► Upstream Server (the real destination) │ ▼ ┌──────────────────┐ │ Dashboard :9081 │ ← You open this in your browser to see traffic └──────────────────┘

What Can You Do With It?

Inspect API Traffic

See every request and response in real time with syntax-highlighted bodies, headers, and timing.

🔒

Decrypt HTTPS

See inside encrypted connections with automatic TLS interception and on-the-fly certificate generation.

Intercept & Modify

Pause requests mid-flight, edit headers/body/method, then forward or drop them.

🤖

AI Chat Agent

Ask an embedded AI about captured traffic, generate curl commands, and create rules using natural language.

🛠

Understand the Architecture

Learn how every component works — from the proxy core to the TLS handler to the ring buffer.

📖

REST & WebSocket API

Full reference for programmatic control — traffic, rules, sessions, export, and real-time events.

Prerequisites

Quick Start

# Clone and install
npm install

# Start the proxy
node server.js

# In another terminal — send a test request through the proxy
curl -x http://localhost:9080 http://httpbin.org/get

# Open the dashboard
open http://localhost:9081

You should see your request appear in the dashboard immediately. Read the full setup guide for configuring browsers, HTTPS, and system-wide proxying.

Key Concepts

What Is a Forward Proxy?

A forward proxy sits between your HTTP client (browser, curl, app) and the internet. Instead of your client connecting directly to example.com, it connects to the proxy, which then makes the request on your behalf. This lets the proxy inspect, log, and optionally modify the traffic flowing through it.

Without proxy: Browser ────────────────────► example.com With forward proxy: Browser ──► Proxy (:9080) ──► example.com │ ▼ Dashboard (:9081) ← you see everything here

Why Two Ports?

The proxy runs on :9080 and the dashboard on :9081. This separation is critical: if both were on the same port and your browser used the proxy, every dashboard request would create traffic entries of itself — an infinite feedback loop. Two ports keeps proxy traffic and your viewing traffic cleanly separated.

HTTP vs HTTPS Interception

HTTP traffic is plaintext — the proxy can read it directly. HTTPS is encrypted, so the proxy uses a technique called Man-in-the-Middle (MITM) interception: it generates a fake certificate for each hostname, signed by a Certificate Authority (CA) that you trust locally. This creates two separate TLS sessions — one between your client and the proxy, and one between the proxy and the real server — allowing the proxy to see the plaintext in between.

Read the TLS & Certificates guide for a deep explanation of how this works.