The wreq dependency was declared without the gzip, brotli, deflate and zstd features, so the stealth client returned bodies still compressed while the reqwest path decoded them. The Chrome145 emulation advertises those encodings, so origins do compress, and the raw gzip bytes reached the HTML parser as document text. Add a regression test that serves one gzip response and asserts the stealth client decodes it. Fixes #563.
46 lines
2.0 KiB
TOML
46 lines
2.0 KiB
TOML
[package]
|
|
name = "obscura-net"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
|
|
[features]
|
|
default = []
|
|
stealth = ["wreq", "wreq-util"]
|
|
|
|
[dependencies]
|
|
reqwest = { workspace = true }
|
|
tokio = { workspace = true }
|
|
url = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
tracing = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
async-trait = "0.1"
|
|
encoding_rs = "0.8"
|
|
tempfile = "3"
|
|
# wreq and wreq-util are pre-release crates whose API changes between rc builds
|
|
# (CertStore moved out of `tls`, `cert_store` renamed to `tls_cert_store`, the
|
|
# Emulation builder reshuffled). A caret requirement let a fresh resolve pull a
|
|
# newer, incompatible rc and broke `cargo build --features stealth` (issue #234).
|
|
# Pin exact versions so the build always resolves to the API wreq_client.rs targets.
|
|
wreq-util = { version = "=3.0.0-rc.12", optional = true }
|
|
|
|
[dev-dependencies]
|
|
# TLS fixtures for the configured-roots tests: rcgen mints a throwaway CA + leaf,
|
|
# tokio-rustls serves one HTTPS response with them. Pinned to the ring
|
|
# provider so the test binary has a single rustls CryptoProvider (reqwest's
|
|
# rustls also uses ring; adding aws-lc-rs would make provider auto-selection
|
|
# panic).
|
|
rcgen = "0.13"
|
|
tokio-rustls = { version = "0.26", default-features = false, features = ["ring", "tls12", "logging"] }
|
|
|
|
# `prefix-symbols` renames BoringSSL exports to avoid clashes with system OpenSSL,
|
|
# but the renaming is only correct on Linux and Android (per wreq's README).
|
|
# Enabling it on other platforms produces unresolved `build_script_main_*`
|
|
# symbols at link time (see issue #39).
|
|
[target.'cfg(any(target_os = "linux", target_os = "android"))'.dependencies]
|
|
wreq = { version = "=6.0.0-rc.29", optional = true, features = ["prefix-symbols", "socks", "gzip", "brotli", "deflate", "zstd"] }
|
|
|
|
[target.'cfg(not(any(target_os = "linux", target_os = "android")))'.dependencies]
|
|
wreq = { version = "=6.0.0-rc.29", optional = true, features = ["socks", "gzip", "brotli", "deflate", "zstd"] }
|