wreq-js
A modern, actively maintained HTTP client that makes your scripts behave like real browsers on the network layer.Native Performance
No process spawning or browser overhead. Native speed via Rust bindings.
Real Browser Fingerprints
Authentic TLS (JA3/JA4) and HTTP/2 fingerprints from Chrome, Firefox, Safari, and more.
Drop-in Fetch API
A fetch-like API with extra options for browser profiles and sessions.
WebSocket Support
Full WebSocket support with consistent browser fingerprinting.
Why wreq-js?
Standard HTTP clients likeaxios, fetch, got, and curl don’t behave like browsers on the network layer. They differ in:
- TLS handshake: cipher suite order and extension sets
- HTTP/2 frames: SETTINGS and PRIORITY behavior
- Header ordering: the order headers are sent on the wire
wreq-js reproduces browser networking behavior using the wreq Rust engine underneath. Your job is to write scripts. wreq-js handles the network-level impersonation.
When to use wreq-js
✅ Great for
✅ Great for
- Web scraping and data collection
- API automation with stealth requirements
- High-throughput HTTP requests
- Login flows and session management
- Proxy rotation scenarios
❌ Not for
❌ Not for
- DOM or JavaScript execution (not a browser runtime)
- CAPTCHA solving or page automation
- Full browser automation (use Playwright/Puppeteer instead)
Quick Example
If your script makes more than one request, start with a session and reuse it.
Sessions reuse cookies and connection state, and are usually much faster than repeated one-off
fetch() calls.