diff --git a/Cargo.lock b/Cargo.lock index 07fd65f..01a6a04 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -524,6 +524,7 @@ dependencies = [ "tower", "tracing", "tracing-subscriber", + "ua_generator", "uuid", "validator", ] @@ -3123,6 +3124,7 @@ version = "0.23.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f287924602bf649d949c63dc8ac8b235fa5387d394020705b80c4eb597ce5b8" dependencies = [ + "log", "once_cell", "ring", "rustls-pki-types", @@ -4314,6 +4316,20 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "ua_generator" +version = "0.5.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a68ea0a55d5ad9e86e85f767180daff9f24a030490ac66e8490861e8484d7ed" +dependencies = [ + "dotenvy", + "fastrand", + "serde", + "serde_json", + "toml", + "ureq", +] + [[package]] name = "ucd-trie" version = "0.1.6" @@ -4353,6 +4369,26 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +[[package]] +name = "ureq" +version = "2.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d" +dependencies = [ + "base64", + "brotli-decompressor", + "encoding_rs", + "flate2", + "log", + "once_cell", + "rustls", + "rustls-pki-types", + "serde", + "serde_json", + "url", + "webpki-roots 0.26.2", +] + [[package]] name = "url" version = "2.5.4" diff --git a/Cargo.toml b/Cargo.toml index 10f3eae..8e1e0e2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -75,6 +75,7 @@ toml = "0.9.1" tower = "0.5.2" tracing = "0.1.41" tracing-subscriber = { version = "0.3.19", features = ["chrono", "json"] } +ua_generator = "0.5.22" uuid = { version = "1.17.0", features = ["v4"] } validator = { version = "0.20.0", features = ["derive"] } diff --git a/crates/bili_sync/Cargo.toml b/crates/bili_sync/Cargo.toml index a6ebe12..a406d61 100644 --- a/crates/bili_sync/Cargo.toml +++ b/crates/bili_sync/Cargo.toml @@ -54,6 +54,7 @@ toml = { workspace = true } tower = { workspace = true } tracing = { workspace = true } tracing-subscriber = { workspace = true } +ua_generator = { workspace = true } uuid = { workspace = true } validator = { workspace = true } diff --git a/crates/bili_sync/src/bilibili/client.rs b/crates/bili_sync/src/bilibili/client.rs index c204284..99462b2 100644 --- a/crates/bili_sync/src/bilibili/client.rs +++ b/crates/bili_sync/src/bilibili/client.rs @@ -4,6 +4,7 @@ use anyhow::Result; use leaky_bucket::RateLimiter; use reqwest::{Method, header}; use sea_orm::DatabaseConnection; +use ua_generator::ua; use crate::bilibili::Credential; use crate::bilibili::credential::WbiImg; @@ -19,9 +20,7 @@ impl Client { let mut headers = header::HeaderMap::new(); headers.insert( header::USER_AGENT, - header::HeaderValue::from_static( - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36", - ), + header::HeaderValue::from_static(ua::spoof_chrome_mac_ua()), ); headers.insert( header::REFERER,