⚡ High-performance Python proxy server with authentication, load balancing, caching, and multi-protocol support
Project description
ProxyCraft
ProxyCraft is the easiest and quickest way to deploy a web proxy.
✨ Features
ProxyCraft offers many features:
- 🔒 Protocol Support: Handle HTTP, HTTPS, WebSockets, TCP/UDP, and SOCKS proxies
- 🔐 Authentication: Support for various auth methods (Basic, Digest, NTLM, Kerberos)
- 🔄 Connection Pooling: Efficient reuse of connections to improve performance
- ⚖️ Load Balancing: Distribute traffic across multiple proxies
- 🏥 Health Checking: Automatic detection and recovery from failed proxies
- 💾 Caching: Store and reuse responses for identical requests
- 🔄 Retry Mechanisms: Automatically retry failed requests
- 🔧 Circuit Breaking: Prevent cascading failures
- 📊 Metrics Collection: Track proxy performance, latency, error rates
- 🔐 TLS/SSL Termination: Handle encryption/decryption
- 🌍 IP Rotation: Change public IP addresses for scraping
- 🎯 Geo-targeting: Route requests through proxies in specific locations
🚀 Quick Start
Installation
pip install proxycraft
Or with uv:
uv add proxycraft
Basic Usage
from proxycraft import ProxyCraft
if __name__ == "__main__":
proxycraft: ProxyCraft = ProxyCraft(config_file='proxy.json')
proxycraft.serve(host='0.0.0.0', port=8091)
📋 Configuration Example
{
"version": "1.0",
"name": "Simple example",
"endpoints": [
{
"prefix": "/",
"match": "**/*",
"backends": {
"https": {
"url": "https://jsonplaceholder.typicode.com/posts"
}
},
"upstream": {
"proxy": {
"enabled": true
}
}
}
]
}
🐳 Docker Usage
docker build -t proxycraft -f dockerfiles/proxycraft.Dockerfile .
docker run -p 8080:8080 proxycraft
Project structure
proxycraft/
├── app/ # ASGI application composition root
├── features/ # Capability-owned modules (routing, backends, middleware, …)
└── shared/ # Cross-cutting infrastructure (logging, connection pooling)
See docs/architecture.md and SPECS.md for details.
Development
just install
just test
just lint
Build a release (requires VERSION):
VERSION=1.0.0 just build
Run a subset of tests:
just test tests/path/to/test_file.py
List all available commands:
just
📄 License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file proxycraft-2.2.1.tar.gz.
File metadata
- Download URL: proxycraft-2.2.1.tar.gz
- Upload date:
- Size: 199.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4cf533bad5bd05d7b2d9c5ab7406c4b34e595fa47772e89e79bbf6351d8a58a7
|
|
| MD5 |
5af1fc59f20622b934660000e733ef7a
|
|
| BLAKE2b-256 |
06a50a8edfe7de484d9b83cc00389fce4e354beb26be1dab6d10e012d21a055b
|
File details
Details for the file proxycraft-2.2.1-py3-none-any.whl.
File metadata
- Download URL: proxycraft-2.2.1-py3-none-any.whl
- Upload date:
- Size: 100.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
94d4fa24da0ac6459e9089a923921f17a7b71229673d5ab075be6f708bc6c38d
|
|
| MD5 |
fb980f5f4ff73ffd0c06ef6f1b01b951
|
|
| BLAKE2b-256 |
34b4873e4298302356bc2a2d4772025276b61b236317b9c01e46c01e5b7b0272
|