https://github.com/ykus4/pypproxy
MITM HTTP/HTTPS proxy for inspecting and modifying traffic — GUI/CUI, rule engine, GraphQL support, security tools
https://github.com/ykus4/pypproxy
graphql http-proxy https-proxy mitm nicegui penetration-testing proxy python security websocket
Last synced: 10 days ago
JSON representation
MITM HTTP/HTTPS proxy for inspecting and modifying traffic — GUI/CUI, rule engine, GraphQL support, security tools
- Host: GitHub
- URL: https://github.com/ykus4/pypproxy
- Owner: ykus4
- License: mit
- Created: 2026-06-06T07:02:21.000Z (19 days ago)
- Default Branch: main
- Last Pushed: 2026-06-06T13:20:49.000Z (18 days ago)
- Last Synced: 2026-06-06T13:21:30.128Z (18 days ago)
- Topics: graphql, http-proxy, https-proxy, mitm, nicegui, penetration-testing, proxy, python, security, websocket
- Language: Python
- Homepage: https://ykus4.github.io/pypproxy/
- Size: 1.01 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# pypproxy
MITM HTTP/HTTPS proxy for inspecting, modifying, and testing traffic from browsers and mobile apps.
[](https://github.com/ykus4/pypproxy/actions/workflows/ci.yml)
[](https://pypi.org/project/pypproxy/)
[](https://pypi.org/project/pypproxy/)
```bash
pip install pypproxy
pypproxy # GUI mode → http://localhost:8081
pypproxy --mode cui # Terminal UI
```
See the **[docs](https://ykus4.github.io/pypproxy/)** for setup, CA installation, and feature guides.
## Features
| Category | Features |
|----------|---------|
| **Proxy** | HTTP/HTTPS MITM, WebSocket, gRPC, MQTT, HTTP/2 |
| **UI** | Sidebar navigation, dark/light mode, real-time traffic table |
| **Intercept** | Manual request review, edit headers/body, forward or drop |
| **Rules** | Block / modify / redirect by host, path, method, header, body (regex) |
| **Decode** | Auto-detect gzip/brotli, JSON, XML, JWT, Base64, multipart, Protobuf, MessagePack, CBOR |
| **Replay** | One-click replay, parallel fuzzing, Resender tab with full editor |
| **Bulk Sender** | Payload list mode + race condition test |
| **Diff** | Unified diff between any two captured entries |
| **A/B Test** | Send same request to two hosts, compare responses |
| **Macro** | Chain requests with `{{variable}}` substitution and response extraction |
| **GraphQL** | Auto-detect, introspection, schema tree, query editor |
| **OpenAPI** | Auto-generate OpenAPI 3.0 spec from captured traffic |
| **Code Gen** | Export as curl / Python requests / JavaScript fetch / HTTPie |
| **Analytics** | Per-host stats, P95/P99 latency, status distribution |
| **Security** | JWT checker, header checker, token randomness, int overflow, CORS, SSRF, redirect, IDOR |
| **Frida** | SSL pinning bypass scripts, script injection, device management |
| **Sessions** | Group entries into named sessions with persistence |
| **Report** | Export HTML or Markdown report with findings |
| **Import/Export** | HAR, paxy JSON, OpenAPI, rules |
| **Full-text search** | SQLite FTS5 across all captured traffic |
| **Scope** | Capture only in-scope hosts |
| **DNS spoofing** | Built-in DNS server with domain override |
| **Scripts** | Python `on_request` / `on_response` hooks |
| **Plugins** | Drop `.py` files into `~/.pypproxy/plugins/` |
## Quick start
```bash
# Install
pip install pypproxy
# Start (GUI mode)
pypproxy
# Install CA certificate (macOS)
sudo security add-trusted-cert -d -r trustRoot \
-k /Library/Keychains/System.keychain ~/.paxy/ca-cert.pem
# Set system proxy (macOS)
networksetup -setwebproxy Wi-Fi 127.0.0.1 8080
networksetup -setsecurewebproxy Wi-Fi 127.0.0.1 8080
```
Open **http://localhost:8081** — traffic appears in real time.
## Optional: Frida integration
```bash
pip install 'pypproxy[frida]'
```
Enables one-click SSL pinning bypass and script injection from the Frida tab.
## CLI flags
```
--mode gui (default) or cui
--port Proxy port (default 8080)
--ui-port Web UI port (default 8081)
--config Path to YAML config file
--script Path to Python script file
--ca-dir CA cert directory (default ~/.paxy)
--no-db Disable SQLite persistence
```
## License
MIT