[package]
name = "browser_oxide"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
homepage.workspace = true
description = "Stealth headless browser engine in Rust: real HTML/CSS/DOM/JS, V8 via deno_core, own BoringSSL TLS/JA4 fingerprint, no Chromium, no CDP — for anti-bot web scraping, archival, and AI agents"
keywords = [
"stealth-browser",
"headless-browser",
"anti-bot",
"web-scraping",
"tls-fingerprint",
]
categories = ["web-programming", "network-programming", "api-bindings"]
readme = "../../README.md"
[features]
default = []
webgl-render = ["glow"]
blocker = ["dep:adblock"]
[dependencies]
tokio = { version = "1", features = ["full"] }
futures-util = "0.3"
async-trait = "0.1"
deno_core = "0.408"
deno_error = "0.7"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
serde_yaml_ng = "0.10"
html5ever = "0.39"
markup5ever = "0.39"
url = "2"
percent-encoding = "2"
httparse = "1"
boring2 = { version = "4.15", features = [
"pq-experimental",
"cert-compression",
] }
boring-sys2 = "4.15"
tokio-boring2 = "4.15"
webpki-root-certs = "1.0"
webpki-roots = "1"
http = "1"
http2 = { version = "0.5", features = ["unstable"] }
bytes = "1"
foreign-types = "0.5"
tokio-tungstenite = { version = "0.30", features = ["rustls-tls-webpki-roots"] }
quinn = "0.11"
h3 = "0.0.8"
h3-quinn = "0.0.10"
rustls = { version = "0.23", default-features = false, features = [
"ring",
"std",
] }
adblock = { version = "0.13", optional = true }
flate2 = { version = "1", default-features = false, features = ["zlib-rs"] }
brotli = "8"
zstd = "0.13"
sha1 = "0.11"
sha2 = "0.11"
rand = "0.10"
rand_chacha = "0.10"
rand_distr = "0.6"
skia-safe = "0.99"
png = "0.17"
image = { version = "0.25", default-features = false, features = [
"png",
"jpeg",
] }
fontdb = { version = "0.23", default-features = false }
rustybuzz = "0.20"
swash = "0.2"
rustfft = "6"
glow = { version = "0.18", optional = true }
taffy = "0.12"
chrono = "0.4"
thiserror = "2"
base64 = "0.23"
lazy_static = "1"
tracing = "0.1"
[dev-dependencies]
tokio = { version = "1", features = ["full", "test-util"] }
serde_json = "1"
serde = { version = "1", features = ["derive"] }
sha2 = "0.11"
hex = "0.4"
tokio-tungstenite = "0.30"
futures-util = "0.3"
url = "2"
criterion = { version = "0.5", features = ["async_tokio"] }
[[bench]]
name = "page_throughput"
harness = false
[lints]
workspace = true