A powerful, modular Python utility for automating raw HTTP request replays. Designed for flexibility, it supports proxy rotation, placeholder substitution, and parallel proxy checking.
Everything is file-based (plain text), making it easy to version control and edit with any text editor.
- 📝 Raw Requests: Just copy-paste raw HTTP from your browser dev tools (Fiddler/Burp style).
- 🔄 Smart Rotation: Rotates placeholders (
{name}) sequentially or randomly. - 🛡️ Proxy Management: Pins working proxies, automatically drops dead ones, and supports failover.
- ⚡ Parallel Checker: Built-in tool to check thousands of proxies concurrently.
- 🔌 Plug & Play: No complex databases. Just text files.
- 🔍 Response Dumping: Inspect responses in the console or save them to files.
- 📊 Metrics & Reporting: Tracks success rates and prints a beautiful summary table on exit.
- 🎨 Rich UI: Colored logs and formatted output.
python3 -m venv .venv
source .venv/bin/activate # or .venv\Scripts\activate on Windows
pip install -r requirements.txtCreate a file requests/my_request.txt:
POST /api/login HTTP/1.1
Host: example.com
Content-Type: application/json
{"username": "admin", "token": "{my_token}"}Create placeholders/my_token.txt:
token_123
token_456
token_789
python requester.pyThe script will loop through your requests every 30 seconds (configurable).
Run the project in an isolated container without installing Python locally.
# Build and run
docker-compose up --build
# Run in background
docker-compose up -dVolumes are mapped, so you can edit requests/ or config.py locally, and the container will see them. Logs are available in logs/.
- Format: Standard HTTP format. Request line + Headers + Empty Line + Body.
- URL Handling: If the request line has a full URL (
GET https://...), it's used. Otherwise, it combinesSCHEME+Hostheader. - Ignored Files: Files starting with
example(e.g.,requests/example_login.txt) are skipped.
- File-based: Define values in
placeholders/name.txt(one per line). - Dynamic (Built-in):
{uuid}: Generates a random UUID v4.{timestamp}: Current UNIX timestamp (seconds).{random_int:min:max}: Random integer between min and max (e.g.,{random_int:100:999}).
- Faker (Realistic Data):
- Requires
pip install Faker(included in requirements). {email},{first_name},{last_name},{user_agent},{country}.{faker:method}: Calls any Faker method, e.g.,{faker:ipv4},{faker:phone_number},{faker:address}.
- Requires
- Rotation: File-based values support Sequential (default) or Random rotation (see
config.py).
- Formats:
ip:port,user:pass@ip:port,http://...,socks5://.... - Logic:
- The script pins a working proxy until it fails.
- If a proxy fails (connection error or 400+ status), it is removed from
proxies.txt. - If SSL fails, it retries once without verification.
- Direct Mode: Run with
--directto ignore proxies entirely.
| Command | Description |
|---|---|
python requester.py |
Start the main loop (sends requests every 30s). |
python requester.py --direct |
Run without proxies. |
python requester.py --workers 20 |
Set number of parallel threads (default: 10). |
python requester.py --check |
Run the Parallel Proxy Checker to prune dead proxies. |
python requester.py --response |
Print full responses to the console. |
python requester.py --response out.txt |
Save responses to responses/out.txt. |
The requests/ folder contains template examples. They are ignored by default (because they start with example). To use them, rename them (e.g., remove example_ prefix).
requests/example_login.txt: JSON POST request with{uuid}and{timestamp}.requests/example_registration.txt: Form submit using Faker ({email},{first_name},{user_agent}).requests/example_complex_headers.txt: Shows custom headers likeX-Forwarded-Forwith{faker:ipv4}.
You can configure the tool by editing config.py OR by setting environment variables (great for Docker).
| Variable | Default | Description |
|---|---|---|
INTERVAL_SECONDS |
30 |
Seconds to wait between batches. |
PROXY_CHECK_WORKERS |
32 |
Threads for proxy checking. |
VERIFY_TLS |
True |
Verify SSL certificates. |
TIMEOUT_SECONDS |
20 |
Request timeout. |
PROXY_DROP_STATUSES |
407 |
Comma-separated HTTP status codes that drop a proxy. |
PROXIES_PERSIST_INTERVAL |
2 |
Debounce interval (seconds) for writing proxies.txt. |
RESPONSE_MAX_BYTES |
1048576 |
Max bytes to dump per response (0/<=0 disables). |
RESPONSE_DUMP_CHUNK_SIZE |
16384 |
Chunk size for streaming response dumps. |
Docker example (env override):
services:
requester:
build: .
environment:
- INTERVAL_SECONDS=10
- VERIFY_TLS=false
- PROXY_DROP_STATUSES=407,429
- RESPONSE_MAX_BYTES=200000You can control behavior for individual requests using # @key: value comments at the top of the .txt file.
Supported Options:
delay: Seconds to sleep after sending this specific request (per thread).
Example:
# @delay: 5
POST /api/login HTTP/1.1
Host: example.com
...The project is structured as a modular package in src/.
├── config.py # ⚙️ Settings
├── requester.py # 🚀 Entry Point
├── proxies.txt # 🛡️ Proxy List
├── requests/ # 📂 HTTP Templates
├── placeholders/ # 🧩 Data for injection
├── src/ # 🧠 Core Logic
│ ├── app.py # Main Loop
│ ├── network.py # HTTP Engine
│ └── ...
└── tests/ # 🧪 Unit Tests
Ensure code quality with the included test suite:
pip install -r requirements.txt
export PYTHONPATH=.
pytest -v- "Proxy list exhausted": All proxies failed. Run
python requester.py --checkto find working ones or add fresh proxies. - InsecureRequestWarning: TLS verification was skipped. Update your proxies or set
VERIFY_TLS = False. - No requests sent?: Ensure your file inside
requests/does not start withexample.
Happy Requesting! 🕵️♂️