0x676e67/wreq

An ergonomic, privacy-aware Rust HTTP Client

Rust

1,067

2,890 commits

updated Oct 11, 2026

See the code

README

wreq

CI Crates.io License Crates.io MSRV crates.io Discord chat

🚀 Help me work seamlessly with open source sharing by sponsoring me on GitHub

An ergonomic and modular Rust HTTP Client for high-fidelity protocol matching, featuring customizable TLS, JA3/JA4, and HTTP/2 signature capabilities.

Features

  • Plain bodies, JSON, urlencoded, multipart
  • HTTP Trailer
  • Cookie Store
  • Redirect Policy
  • Original Header
  • Rotating Proxies
  • Tower Middleware
  • WebSocket Upgrade
  • HTTPS via BoringSSL
  • HTTP/2 over TLS Parity
  • Certificate Store (CAs & mTLS)
  • Multiple Runtime (Tokio, Compio)

Example

The following example uses the Tokio runtime with optional features enabled by adding this to your Cargo.toml:

[dependencies]
tokio = { version = "1", features = ["full"] }
wreq = "0.16"
wreq-util = "0.2"

And then the code:

use wreq::Client;
use wreq_util::Emulation;

#[tokio::main]
async fn main() -> wreq::Result<()> {
    // Build a client
    let client = Client::builder()
        .emulation(Emulation::Safari26)
        .build()?;

    // Use the API you're already familiar with
    let resp = client.get("https://pingly.us.kg/api/all").send().await?;
    println!("{}", resp.text().await?);
    Ok(())
}

Behavior

  • HTTP/1 over TLS

In the Rust ecosystem, most HTTP clients rely on the http library, which performs well but does not preserve header case. This causes some WAFs to reject HTTP/1 requests with lowercase headers (see discussion). wreq addresses this by fully supporting HTTP/1 header case sensitivity.

  • 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

TLS and HTTP/2 fingerprints are often identical across various browser models because these underlying protocols evolve slower than browser release cycles. 100+ browser device emulation profiles are maintained in wreq-util.

Building

Compiling alongside openssl-sys can cause symbol conflicts with boringssl that lead to link failures, and on Linux and Android this can be avoided by enabling the prefix-symbols feature.

Install BoringSSL build dependencies and build with:

sudo apt-get install build-essential cmake perl pkg-config libclang-dev musl-tools git -y
cargo build --release

This GitHub Actions workflow can be used to compile the project on Linux, Windows, and macOS.

Services

Help sustain the ongoing development of this open-source project by reaching out for commercial support. Receive private guidance, expert reviews, or direct access to the maintainer, with personalized technical assistance tailored to your needs.

License

Licensed under either of Apache License, Version 2.0 (LICENSE or http://www.apache.org/licenses/LICENSE-2.0).

Contribution

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

Solve reCAPTCHA in less than 2 seconds

Captcha.fun delivers fast, reliable CAPTCHA solving built for automation at scale.

With simple API integration, consistent performance, and competitive pricing, it's an easy way to keep your workflows moving without delays—use code WREQ for 10% bonus credits.

Dashboard | Docs | Discord


Byteful

35M+ residential IPs with 99.9% success rates

UK-based Byteful provides ethically sourced residential, mobile, static residential (ISP), and datacenter proxies. Its API-first scraping, data collection, and AI automation tools handle tens of billions of monthly requests.

With free geo-targeting and ~0.5s response times, Byteful helps you collect data at scale. Use code WREQ10 for 10% off residential proxies.

Dashboard | Docs | Discord


TLS fingerprinting alone isn't enough for modern bot protection. Hyper Solutions provides the missing piece - API endpoints that generate valid antibot tokens for:

Akamai • DataDome • Kasada • Incapsula

No browser automation. Just simple API calls that return the exact cookies and headers these systems require.

Dashboard | Docs | Discord

Accolades

A hard fork of reqwest.

akamai
censorship-resistant
client
crawler
fingerprint
http
http2
http3
http-client
https
ja3
ja4
quic
rust
scraper
tls
tls-fingerprint
web-scraper
websocket

0x676e67/wreq

An ergonomic, privacy-aware Rust HTTP Client

Rust

1,067

2,890 commits

updated Oct 11, 2026

See the code

README

wreq

CI Crates.io License Crates.io MSRV crates.io Discord chat

🚀 Help me work seamlessly with open source sharing by sponsoring me on GitHub

An ergonomic and modular Rust HTTP Client for high-fidelity protocol matching, featuring customizable TLS, JA3/JA4, and HTTP/2 signature capabilities.

Features

  • Plain bodies, JSON, urlencoded, multipart
  • HTTP Trailer
  • Cookie Store
  • Redirect Policy
  • Original Header
  • Rotating Proxies
  • Tower Middleware
  • WebSocket Upgrade
  • HTTPS via BoringSSL
  • HTTP/2 over TLS Parity
  • Certificate Store (CAs & mTLS)
  • Multiple Runtime (Tokio, Compio)

Example

The following example uses the Tokio runtime with optional features enabled by adding this to your Cargo.toml:

[dependencies]
tokio = { version = "1", features = ["full"] }
wreq = "0.16"
wreq-util = "0.2"

And then the code:

use wreq::Client;
use wreq_util::Emulation;

#[tokio::main]
async fn main() -> wreq::Result<()> {
    // Build a client
    let client = Client::builder()
        .emulation(Emulation::Safari26)
        .build()?;

    // Use the API you're already familiar with
    let resp = client.get("https://pingly.us.kg/api/all").send().await?;
    println!("{}", resp.text().await?);
    Ok(())
}

Behavior

  • HTTP/1 over TLS

In the Rust ecosystem, most HTTP clients rely on the http library, which performs well but does not preserve header case. This causes some WAFs to reject HTTP/1 requests with lowercase headers (see discussion). wreq addresses this by fully supporting HTTP/1 header case sensitivity.

  • 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

TLS and HTTP/2 fingerprints are often identical across various browser models because these underlying protocols evolve slower than browser release cycles. 100+ browser device emulation profiles are maintained in wreq-util.

Building

Compiling alongside openssl-sys can cause symbol conflicts with boringssl that lead to link failures, and on Linux and Android this can be avoided by enabling the prefix-symbols feature.

Install BoringSSL build dependencies and build with:

sudo apt-get install build-essential cmake perl pkg-config libclang-dev musl-tools git -y
cargo build --release

This GitHub Actions workflow can be used to compile the project on Linux, Windows, and macOS.

Services

Help sustain the ongoing development of this open-source project by reaching out for commercial support. Receive private guidance, expert reviews, or direct access to the maintainer, with personalized technical assistance tailored to your needs.

License

Licensed under either of Apache License, Version 2.0 (LICENSE or http://www.apache.org/licenses/LICENSE-2.0).

Contribution

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

Solve reCAPTCHA in less than 2 seconds

Captcha.fun delivers fast, reliable CAPTCHA solving built for automation at scale.

With simple API integration, consistent performance, and competitive pricing, it's an easy way to keep your workflows moving without delays—use code WREQ for 10% bonus credits.

Dashboard | Docs | Discord


Byteful

35M+ residential IPs with 99.9% success rates

UK-based Byteful provides ethically sourced residential, mobile, static residential (ISP), and datacenter proxies. Its API-first scraping, data collection, and AI automation tools handle tens of billions of monthly requests.

With free geo-targeting and ~0.5s response times, Byteful helps you collect data at scale. Use code WREQ10 for 10% off residential proxies.

Dashboard | Docs | Discord


TLS fingerprinting alone isn't enough for modern bot protection. Hyper Solutions provides the missing piece - API endpoints that generate valid antibot tokens for:

Akamai • DataDome • Kasada • Incapsula

No browser automation. Just simple API calls that return the exact cookies and headers these systems require.

Dashboard | Docs | Discord

Accolades

A hard fork of reqwest.

akamai
censorship-resistant
client
crawler
fingerprint
http
http2
http3
http-client
https
ja3
ja4
quic
rust
scraper
tls
tls-fingerprint
web-scraper
websocket

Project health

crates.io

Latest release

5.3.0 · Jul 30, 2025

Releases this year

5
Deprecated

Significant stargazers

Amaan Qureshi

379 followers · starred Sep 2026

Ofek Lev

929 followers · starred Jul 2026

Brandon Thomas

1,952 followers · starred Aug 2025

raf

907 followers · starred Sep 2026