mirror of
https://github.com/ZHANGTIANYAO1/teamspeak-music-bot.git
synced 2026-10-02 04:52:50 +08:00
fix: 使用SPI API获取buvid3替代访问主页 — 可靠解决412问题
之前通过axios访问bilibili.com主页获取cookie失败(axios不解析set-cookie)。 改用专用API: /x/frontend/finger/spi 直接获取buvid3和buvid4值, 构造cookie字符串传入搜索请求。已验证搜索正常返回结果和封面URL。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
dcec26feb1
commit
960ca756a6
1 file changed
+9
-12
+9
-12
@@ -38,22 +38,19 @@ export class BiliBiliProvider implements MusicProvider {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Fetch buvid3 cookie from bilibili.com (required by search API) */
|
/** Fetch buvid3 via SPI API (required by search API to avoid 412) */
|
||||||
private async ensureBuvidCookie(): Promise<void> {
|
private async ensureBuvidCookie(): Promise<void> {
|
||||||
if (this.buvidInitialized) return;
|
if (this.buvidInitialized) return;
|
||||||
this.buvidInitialized = true;
|
this.buvidInitialized = true;
|
||||||
try {
|
try {
|
||||||
const res = await axios.get("https://www.bilibili.com", {
|
const res = await axios.get(
|
||||||
headers: BILIBILI_HEADERS,
|
"https://api.bilibili.com/x/frontend/finger/spi",
|
||||||
maxRedirects: 0,
|
{ headers: BILIBILI_HEADERS, timeout: 10000 }
|
||||||
validateStatus: (s) => s < 400,
|
);
|
||||||
timeout: 10000,
|
const b3 = res.data?.data?.b_3;
|
||||||
});
|
const b4 = res.data?.data?.b_4;
|
||||||
const cookies = res.headers["set-cookie"];
|
if (b3) {
|
||||||
if (cookies) {
|
this.buvidCookie = `buvid3=${b3}; buvid4=${b4 ?? ""}`;
|
||||||
this.buvidCookie = cookies
|
|
||||||
.map((c: string) => c.split(";")[0])
|
|
||||||
.join("; ");
|
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
// If it fails, continue without — view/playurl APIs work without buvid
|
// If it fails, continue without — view/playurl APIs work without buvid
|
||||||
|
|||||||
Reference in new issue
Block a user