You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
An ergonomic all-in-one HTTP client for browser emulation with TLS, JA3/JA4, and HTTP/2 fingerprints.
Features
Plain bodies, JSON, urlencoded, multipart
Cookie Store
Redirect Policy
Original Header
Rotating Proxies
Certificate Store
Tower Middleware
WebSocket Upgrade
HTTPS via BoringSSL
HTTP/2 over TLS Emulation
Example
This asynchronous example utilizes Tokio with optional features enabled, requiring the following configuration in Cargo.toml:
[dependencies]
tokio = { version = "1", features = ["full"] }
wreq = "5"wreq-util = "2"
And then the code:
use wreq::Client;use wreq_util::Emulation;#[tokio::main]asyncfnmain() -> wreq::Result<()>{// Build a clientlet client = Client::builder().emulation(Emulation::Firefox136).build()?;// Use the API you're already familiar withlet resp = client.get("https://tls.peet.ws/api/all").send().await?;println!("{}", resp.text().await?);Ok(())}
Emulation
HTTP/2 over TLS
Due to the complexity of TLS encryption and the widespread adoption of HTTP/2, browser fingerprints such as JA3, JA4, and Akamai cannot be reliably emulated using simple fingerprint strings. Instead of parsing and emulating these string-based fingerprints, wreq provides fine-grained control over TLS and HTTP/2 extensions and settings for precise browser behavior emulation.
Device Emulation
Most browser device models share identical TLS and HTTP/2 configurations, differing only in the User-Agent string. Common browser device emulation templates are maintained in wreq-util, a companion utility crate.
Building
Avoid compiling with packages that depend on openssl-sys, as it shares the same prefix symbol with boring-sys, potentially leading to link failures and other issues. Even if compilation succeeds, using both openssl-sys and boring-sys together can result in memory segmentation faults. Until the upstream Boring resolves these linking conflicts, using rustls is the best workaround.
Install the dependencies required to build BoringSSL
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.
Sponsors
CapSolver leverages AI-powered Auto Web Unblock to bypass Captchas effortlessly, providing fast, reliable, and cost-effective data access with seamless integration into Colly, Puppeteer, and Playwright—use code RQUEST for a 6% bonus!