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:
1 file changed
+6
-13
@@ -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, ¶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()
|
||||
|
||||
Reference in new issue
Block a user