fix(bilibili): 稿件分页查询复用登录客户端,不再每页新建 Client (#1675)

archives() 之前在分页循环中每请求一页都重新 build 一个
reqwest::Client 和 cookie jar:连接无法复用,代理配置丢失导致
查询绕过 --proxy 直连;且 Jar::add_cookie_str 会把 "; " 拼接的
整串 Cookie 当作单条 Set-Cookie 解析,实际只有第一个 Cookie
生效,其余键值被当作 Cookie 属性丢弃。

改为复用登录时构建的 self.client:cookie store 已含全部登录
Cookie,UA 与原实现一致,并保留代理配置与连接池,同时按原
行为为该请求保留 60 秒总超时。
This commit is contained in:
Noah authored and GitHub committed 2026-08-30 14:52:47 +00:00
1 parent 5c6c720fdc
commit 2c3592f117
1 file changed
+6 -13
+6 -13
View File
@@ -876,20 +876,13 @@ impl BiliBili {
/// 稿件管理
async fn archives(&self, status: &str, page_num: u32) -> Result<Value> {
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, &params).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()