diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index da73f07..6a29c5a 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -323,6 +323,7 @@ dependencies = [ "tracing-appender", "tracing-error", "tracing-subscriber", + "urlencoding", "uuid", "yaserde", ] @@ -5133,6 +5134,12 @@ dependencies = [ "serde", ] +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + [[package]] name = "urlpattern" version = "0.3.0" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 501d0c0..d55dac9 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -61,6 +61,7 @@ md-5 = { version = "0.10.6" } rand = { version = "0.9.1" } base64 = { version = "0.22.1" } rayon = { version = "1.12.0" } +urlencoding = { version = "2.1.3" } [profile.release] strip = true diff --git a/src-tauri/src/bili_client.rs b/src-tauri/src/bili_client.rs index f8361bb..40ea8fb 100644 --- a/src-tauri/src/bili_client.rs +++ b/src-tauri/src/bili_client.rs @@ -1098,7 +1098,12 @@ impl BiliClient { pub fn get_cookie(&self) -> String { let sessdata = self.app.get_config().read().sessdata.clone(); - format!("SESSDATA={}", sessdata.trim_end_matches(';')) + + let trimmed = sessdata.trim_end_matches(';'); + let decoded = urlencoding::decode(trimmed).unwrap_or_else(|_| trimmed.into()); + let encoded = urlencoding::encode(&decoded); + + format!("SESSDATA={encoded}") } }