Skip to content
gitKBDLPublic

About

A high-performance, file-based HTTP request replayer with proxy rotation, dynamic placeholders (Faker), and Docker support. Built for automation and testing.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

🚀 Raw Request Sender

Python Version License Tests

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.


✨ Features

  • 📝 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.

🚀 Quick Start

1. Install

python3 -m venv .venv
source .venv/bin/activate  # or .venv\Scripts\activate on Windows
pip install -r requirements.txt

2. Create a Request

Create a file requests/my_request.txt:

POST /api/login HTTP/1.1
Host: example.com
Content-Type: application/json

{"username": "admin", "token": "{my_token}"}

3. Add Placeholders

Create placeholders/my_token.txt:

token_123
token_456
token_789

4. Run

python requester.py

The script will loop through your requests every 30 seconds (configurable).


🐳 Docker

Run the project in an isolated container without installing Python locally.

# Build and run
docker-compose up --build

# Run in background
docker-compose up -d

Volumes are mapped, so you can edit requests/ or config.py locally, and the container will see them. Logs are available in logs/.


📖 User Guide

📂 Request Files (requests/*.txt)

  • 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 combines SCHEME + Host header.
  • Ignored Files: Files starting with example (e.g., requests/example_login.txt) are skipped.

🧩 Placeholders ({name})

  • 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}.
  • Rotation: File-based values support Sequential (default) or Random rotation (see config.py).

🌐 Proxy System (proxies.txt)

  • 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 --direct to ignore proxies entirely.

🛠 CLI Commands

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.

📚 Examples

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 like X-Forwarded-For with {faker:ipv4}.

⚙️ Configuration

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=200000

Request-Specific Options (Meta)

You 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

...

💻 Development

The project is structured as a modular package in src/.

Project Structure

├── 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

Running Tests

Ensure code quality with the included test suite:

pip install -r requirements.txt
export PYTHONPATH=.
pytest -v

❓ Troubleshooting

  • "Proxy list exhausted": All proxies failed. Run python requester.py --check to 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 with example.

Happy Requesting! 🕵️‍♂️

About

A high-performance, file-based HTTP request replayer with proxy rotation, dynamic placeholders (Faker), and Docker support. Built for automation and testing.

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages