feat: 请求中header的User-Agent使用随机值 (#447)

This commit is contained in:
Thomas Yang
2025-08-27 11:27:23 +09:00
committed by GitHub
parent fd90bc8b73
commit 8ed2fbae24
4 changed files with 40 additions and 3 deletions

36
Cargo.lock generated
View File

@@ -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"

View File

@@ -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"] }

View File

@@ -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 }

View File

@@ -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,