🚀 Help me work seamlessly with open source sharing by sponsoring me on GitHub
An ergonomic all-in-one HTTP client for browser emulation with TLS, JA3/JA4, and HTTP/2 fingerprints.
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:
```rust,no_run use wreq::Client; use wreq_util::Emulation;
async fn main() -> Result<(), wreq::Error> { // Build a client let client = Client::builder() .emulation(Emulation::Firefox136) .build()?;
// Use the API you're already familiar with
let resp = client.get("https://tls.peet.ws/api/all").send().await?;
println!("{}", resp.text().await?);
Ok(())
}
## Emulation
- **HTTP/2 over TLS**
**JA3**/**JA4**/**Akamai** fingerprints cannot accurately simulate browser fingerprints due to the sophistication of TLS encryption and the popularity of HTTP/2. wreq does not plan to support parsing these fingerprint strings for simulation. Users are encouraged to customize the configuration according to their own needs.
- **Emulation Device**
Most browser device models share the same TLS and HTTP/2 configuration, differing only in the User-Agent. The browser device emulation template is managed by [wreq-util](https://github.com/0x676e67/wreq-util).
## 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](https://github.com/cloudflare/boring/issues/197) 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](https://github.com/google/boringssl/blob/master/BUILDING.md#build-prerequisites)
```shell
sudo apt-get install build-essential cmake perl pkg-config libclang-dev musl-tools -y
cargo build --release
This GitHub Actions workflow can be used to compile the project on Linux, Windows, and macOS.
Released under the Apache-2.0 License.
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.
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!
The project is based on a fork of reqwest.