βββββββ ββββββ βββ ββββββββββ βββββββ ββββββ
βββββββββββββββββββ βββββββββββββββββββββββββββ
βββββββββββββββββββ ββββββ βββββββββββββββββββ
βββββββββββββββββββ ββββββ βββββββββββββββββββ
βββ ββββββ βββββββββββββββββββββββ ββββββ βββ
βββ ββββββ βββ βββββββ βββββββ βββ ββββββ βββ
A blazing-fast HTTP load testing tool built with Rust π¦
Features β’ Installation β’ Usage β’ Technical Details β’ Contributing
- β‘ Blazing Fast - Leverages Rust's performance and Tokio's async runtime for maximum throughput
- π― Concurrent Requests - Send thousands of concurrent HTTP requests with ease
- π Detailed Analytics - Comprehensive latency analysis with percentile distributions (P50, P90, P99)
- π User Agent Rotation - Built-in support for 10,000+ user agents (included in
user_agents.txt) - π IP Spoofing - Automatic random IP generation with proper header injection
- π¨ Beautiful CLI - Colorful, centered terminal UI with real-time progress indicators
- π HDR Histograms - High dynamic range histogram for accurate latency measurements
- π Smart Redirects - Configurable redirect policy (limited to 3 redirects)
- π‘οΈ Cache Busting - Automatic cache-control headers to ensure accurate testing
- Rust 1.70 or higher
- Cargo package manager
# Clone the repository
git clone https://github.com/chahat-101/raudra.git
cd raudra
# Build in release mode for optimal performance
cargo build --release
# Run the binary
./target/release/raudraRaudra uses the following crates:
[dependencies]
reqwest = { version = "0.11", features = ["json"] }
tokio = { version = "1", features = ["full"] }
colored = "2.0"
hdrhistogram = "7.5"
rand = "0.8"
terminal_size = "0.3"-
Start Raudra
./raudra
-
Enter target URL
Enter target URL: https://example.com -
Specify number of requests
Enter number of requests: 1000 -
Review results
- Success/failure summary
- Latency analysis with percentiles
- Min/max/average response times
π― Target Configuration
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Enter target URL: https://api.example.com/health
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Enter number of requests: 5000
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π Test Configuration
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Target: https://api.example.com/health
Requests: 5000
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π₯ Initiating load test...
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 200 OK
β 200 OK
β 200 OK
...
- Total Requests - Total number of requests sent
- Successes - Number of successful responses (2xx status codes)
- Failed - Number of failed requests (errors or non-2xx status)
- Success Rate - Percentage of successful requests
- Minimum - Fastest response time
- Maximum - Slowest response time
- Average - Mean response time
- P50 (Median) - 50th percentile
- P90 - 90th percentile (90% of requests faster than this)
- P99 - 99th percentile (99% of requests faster than this)
Raudra uses an async, concurrent architecture built on Tokio:
βββββββββββββββ
β CLI Input β
ββββββββ¬βββββββ
β
βΌ
βββββββββββββββββββ
β Request Spawner β
ββββββββββ¬βββββββββ
β
βΌ
ββββββββββββββββββββββββββββββ
β Concurrent Async Tasks β
β ββββββββ ββββββββ ββββββββ
β βTask 1β βTask 2β βTask Nβ
β ββββββββ ββββββββ ββββββββ
ββββββββββββββ¬ββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββ
β Shared State (Mutex) β
β β’ Summary Statistics β
β β’ Latency Histogram β
ββββββββββββββ¬ββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββ
β Results Aggregation β
ββββββββββββββββββββββββββββββ
- 10,000+ User Agents pre-loaded in
user_agents.txt - Random selection for each request
- Helps simulate realistic traffic patterns
- Generates random public IPv4 addresses
- Excludes private ranges (10.x.x.x, 172.16-31.x.x, 192.168.x.x)
- Excludes loopback (127.x.x.x) and multicast (224-239.x.x.x)
- Injects headers:
X-Forwarded-ForandForwarded
- Uses HDR Histogram for accurate percentile calculations
- Microsecond precision timing
- Tracks full distribution of response times
Edit the header configuration in main():
let mut headers = HeaderMap::new();
headers.insert("X-Custom-Header", HeaderValue::from_str("value")?);Change the redirect limit:
let client = Client::builder()
.redirect(Policy::limited(5)) // Allow 5 redirects
.build()?;Replace or append to user_agents.txt with your own user agent strings (one per line).
Important: This tool is designed for legitimate load testing purposes only.
- Only test systems you own or have explicit permission to test
- Respect rate limits and terms of service
- Do not use this tool for malicious purposes
- Be aware of legal implications in your jurisdiction
- High request volumes can impact system availability
The authors are not responsible for misuse of this tool.
Contributions are welcome! Please feel free to submit a Pull Request.
# Clone and enter directory
git clone https://github.com/yourusername/raudra.git
cd raudra
# Run in development mode
cargo run
# Run tests
cargo test
# Format code
cargo fmt
# Lint code
cargo clippyThis project is licensed under the MIT License - see the LICENSE file for details.
- Built with Rust
- Async runtime by Tokio
- HTTP client by Reqwest
- Terminal colors by Colored
- Latency histograms by HDR Histogram
Made with β€οΈ and Rust π¦