From 2c3592f1174e4e9d5cb07684dfa5e05f7c2d07d1 Mon Sep 17 00:00:00 2001 From: Noah Date: Sun, 30 Aug 2026 14:52:47 +0000 Subject: [PATCH] =?UTF-8?q?fix(bilibili):=20=E7=A8=BF=E4=BB=B6=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E6=9F=A5=E8=AF=A2=E5=A4=8D=E7=94=A8=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AB=AF=EF=BC=8C=E4=B8=8D=E5=86=8D=E6=AF=8F?= =?UTF-8?q?=E9=A1=B5=E6=96=B0=E5=BB=BA=20Client=20(#1675)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit archives() 之前在分页循环中每请求一页都重新 build 一个 reqwest::Client 和 cookie jar:连接无法复用,代理配置丢失导致 查询绕过 --proxy 直连;且 Jar::add_cookie_str 会把 "; " 拼接的 整串 Cookie 当作单条 Set-Cookie 解析,实际只有第一个 Cookie 生效,其余键值被当作 Cookie 属性丢弃。 改为复用登录时构建的 self.client:cookie store 已含全部登录 Cookie,UA 与原实现一致,并保留代理配置与连接池,同时按原 行为为该请求保留 60 秒总超时。 --- crates/biliup/src/uploader/bilibili.rs | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/crates/biliup/src/uploader/bilibili.rs b/crates/biliup/src/uploader/bilibili.rs index 59a1873..43debb3 100644 --- a/crates/biliup/src/uploader/bilibili.rs +++ b/crates/biliup/src/uploader/bilibili.rs @@ -876,20 +876,13 @@ impl BiliBili { /// 稿件管理 async fn archives(&self, status: &str, page_num: u32) -> Result { - let url_str = "https://member.bilibili.com/x/web/archives"; - let params = [("status", status), ("pn", &page_num.to_string())]; - let url = reqwest::Url::parse_with_params(url_str, ¶ms).unwrap(); - - let cookie = self.get_cookie()?; - let jar = reqwest::cookie::Jar::default(); - jar.add_cookie_str(&cookie, &url); - - let res: ResponseData = reqwest::Client::builder() - .user_agent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 Chrome/63.0.3239.108") - .cookie_provider(std::sync::Arc::new(jar)) + // 复用登录时构建的客户端:cookie store 已含全部登录 Cookie, + // 且保留代理等配置,避免分页循环中每页新建 Client 和 cookie jar。 + let res: ResponseData = self + .client + .get("https://member.bilibili.com/x/web/archives") + .query(&[("status", status), ("pn", &page_num.to_string())]) .timeout(Duration::new(60, 0)) - .build()? - .get(url) .send() .await? .json()