📦 reqrio — Lightweight, high-performance, fingerprint-oriented HTTP request library
reqrio is an HTTP request library designed for protocol research, TLS fingerprint control, high-concurrency data
collection, and complex network environment simulation. It supports HTTP/1.1 and HTTP/2, and uses reqtls to provide
programmable TLS handshake construction for browser-level network behavior simulation.
Unlike HTTP clients that prioritize ease of use, reqrio focuses on:
- browser-level TLS fingerprint consistency
- controllable header order
- HTTP/2 behavior control
- low-copy high-concurrency performance
- multi-language FFI binding support
⚡ Ideal for protocol research | anti-scraping | fingerprint control | high-concurrency systems
✨ Key Features
| Category | Capability |
|---|---|
| Protocol Support | HTTP/1.1, HTTP/2 |
| TLS Support | TLS 1.2 / TLS 1.3, browser-level TLS construction |
| TLS Fingerprinting | JA3, JA4, ClientHello, randomized TLS fingerprints |
| Request Modes | synchronous & asynchronous |
| Header Control | ordered headers, browser-like header sequencing |
| Streaming | low-copy data pipeline, large file upload and streaming response support |
| Proxy Support | HTTP proxy, SOCKS5 proxy |
| Cookie Management | automatic inheritance and session persistence |
| Compression | Gzip, Deflate, Brotli, Zstd |
| Multi-language Bindings | Rust, Python, Java, Node.js, Go, Qt/C++ |
🌊 Low-Copy Architecture
reqrio adopts a low-copy design to minimize memory overhead while simulating complex network behaviors.
- Sending: form-data, JSON, text, and other input data are converted to bytes first. A copy only occurs once during TLS encryption, while other stages borrow the data.
- File upload: files are read through
into_reader, avoiding loading the entire file into memory. - Receiving: TLS-decrypted data is written directly into an internal buffer and then parsed by the engine layer.
┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ Write ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐
│ Form ┌─────────┐ ┌───────────────┐ ┌─────────────┐ ┌──────┐ │
│ User ───────►│ Req │ Body │ RequestBuf │ Buffer │ │ Encrypted │ │ │
│ Json │ Engine ├─ Cow<T> ──┤ Header + Body │──────────►│ TlsStream │──────────►│ TCP │ │
│ Files │ (Sync) │ Lifetime │ Readers │ │ Encrypt │ │ Send │ │
│ User ───────►│ (Async) │ │ (borrowed) │ │ │ │ │ │
│ └─────────┘ └───────────────┘ └─────────────┘ └──────┘ │
└ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┘
┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ Read ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐
│ ┌──────────┐ ┌────────┐ │
│ ┌───────┐ read │ TLS │ decrypt to │ ScReq │ return │
│ │ TCP │──────►│ Fragment │───────────►│ AcReq │─────────► User │
│ └───────┘ │ Decrypt │ │(Engine)│ Response │
│ └──────────┘ └────────┘ │
└ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─┘
🔐 TLS and Fingerprinting
reqrio's TLS capabilities are provided by reqtls. reqtls is not a system TLS wrapper; it is a programmable TLS
handshake constructor designed for browser-level ClientHello and TLS behavior building.
Supported Capabilities
- TLS 1.2 / TLS 1.3
- controllable ClientHello construction
- JA3 / JA4 fingerprinting
- custom TLS fingerprints
- randomized TLS fingerprints
- ALPN, SNI, cipher suite order, and session resume control
⚠️ Some advanced fingerprint features are currently offered as subscription/advanced features.
TLS fingerprint examples
req.set_ja3;
req.set_ja4;
Custom ClientHello
let client_hello = hex_decode ?;
req.set_fingerprint ?;
🚀 Quick Start
Initialize a Session
use *;
GET Request Example
use *;
Form POST
use *;
JSON POST
use *;
POST with a Serialize struct
Requires the
serdefeature
use *;
use Serialize;
🔌 WebSocket Support
use *;
📄 License
This project is open source under the Apache 2.0 License.
🤝 Contributing
Contributions are welcome. Feel free to open issues and submit pull requests.
📬 Contact
- Telegram: https://t.me/+VVfbAeug-ohhZjU1
- QQ: 1083315546