krystv commited on
Commit
bc37913
·
verified ·
1 Parent(s): 18b857d

feat: replace reqwest+rustls with rquest (Chrome TLS impersonation via BoringSSL)

Browse files
Files changed (1) hide show
  1. crates/bex-core/Cargo.toml +13 -14
crates/bex-core/Cargo.toml CHANGED
@@ -1,6 +1,6 @@
1
  [package]
2
  name = "bex-core"
3
- version = "2.0.0"
4
  edition = "2021"
5
 
6
  [dependencies]
@@ -14,19 +14,18 @@ serde = { workspace = true }
14
  serde_json = { workspace = true }
15
  serde_yaml = { workspace = true }
16
  tracing = { workspace = true }
17
- # CRITICAL: reqwest with full browser-like features
18
- # - rustls-tls: TLS support
19
- # - gzip/brotli/deflate: Accept-Encoding decompression (browsers always send these)
20
- # - cookies: Cookie jar for session persistence (needed for CF challenges)
21
- # - http2: HTTP/2 support (Chrome always negotiates H2)
22
- reqwest = { version = "0.12", default-features = false, features = [
23
- "rustls-tls",
24
- "json",
25
- "gzip",
26
- "brotli",
27
- "deflate",
28
- "cookies",
29
- "http2",
30
  ] }
31
  wasmtime = { version = "30", features = ["component-model", "cranelift", "parallel-compilation"] }
32
  wasmtime-wasi = "30"
 
1
  [package]
2
  name = "bex-core"
3
+ version = "2.1.0"
4
  edition = "2021"
5
 
6
  [dependencies]
 
14
  serde_json = { workspace = true }
15
  serde_yaml = { workspace = true }
16
  tracing = { workspace = true }
17
+ # CRITICAL: rquest Chrome TLS/HTTP2 impersonation via BoringSSL
18
+ # This is the key to bypassing Cloudflare without a WebView.
19
+ # rquest uses a patched BoringSSL that emits a byte-for-byte identical
20
+ # TLS ClientHello to Chrome (JA3, JA4, H2 SETTINGS, GREASE, ALPS, etc.)
21
+ #
22
+ # Why not reqwest+rustls? rustls has a completely different JA3 fingerprint
23
+ # than Chrome. Cloudflare detects this instantly and blocks the connection.
24
+ #
25
+ # rquest is the successor to reqwest-impersonate, maintained by 0x676e67.
26
+ # API is 99% compatible with reqwest — mostly a find-and-replace migration.
27
+ rquest = { version = "1.0", features = [
28
+ "full",
 
29
  ] }
30
  wasmtime = { version = "30", features = ["component-model", "cranelift", "parallel-compilation"] }
31
  wasmtime-wasi = "30"