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.
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
- Node.js 18+ — the proxy is pure Node.js with only 2 dependencies (
wsfor WebSockets,node-forgefor TLS certificates) - A browser — for viewing the dashboard
- Any HTTP client — curl, a browser, Postman, a mobile app — anything that can route through an HTTP proxy
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.
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.