wreq-js
Node.js/TypeScript HTTP client that bypasses Cloudflare, DataDome, Akamai, and other anti-bot TLS fingerprinting by impersonating real browser network behavior.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
- Bypassing Cloudflare, DataDome, Akamai TLS fingerprinting
- 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.