From 808db83cf43b37577b79cce46985ad4f96e6b791 Mon Sep 17 00:00:00 2001 From: Elegy233 <82034747+wan0ge@users.noreply.github.com> Date: Sun, 28 Jun 2026 08:13:31 +0800 Subject: [PATCH] =?UTF-8?q?fix(renren):=20=E8=AF=B7=E6=B1=82=E8=B6=85?= =?UTF-8?q?=E6=97=B6=E8=AE=BE=E4=B8=BA=205=20=E7=A7=92=E5=B9=B6=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E9=87=8D=E8=AF=95=20(#347)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 各端 HTTP 请求均显式传入 timeout: 5000 替代全局 VOD_REQUEST_TIMEOUT, 确保被屏蔽的非大陆 IP 在 Netlify/Vercel 等平台快速失败而非累积超时。 renrenHttpGet / renrenRequest 移除 retries: 1, 被 ban 的 IP 重试无意义反而倍乘等待时间。 --- danmu_api/sources/renren.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/danmu_api/sources/renren.js b/danmu_api/sources/renren.js index 7a0886b..9079e84 100644 --- a/danmu_api/sources/renren.js +++ b/danmu_api/sources/renren.js @@ -313,7 +313,7 @@ export default class RenrenSource extends BaseSource { async fetchStandardDanmu(url, headers, tierName) { try { // 中间节点执行快速失败策略,移除 retries 控制 - const resp = await httpGet(url, { headers, validStatusCodes: [404] }); + const resp = await httpGet(url, { headers, timeout: 5000, validStatusCodes: [404] }); // 校验 404 特征:若返回特定错误文本,说明服务器正常响应但该集确实无弹幕数据 if (resp.status === 404) { @@ -341,7 +341,7 @@ export default class RenrenSource extends BaseSource { const u = updateQueryString(url, params); const resp = await httpGet(u, { headers: headers, - retries: 1, // 网页端为终极兜底链路,保留重试容错机制 + timeout: 5000, validStatusCodes }); return resp; @@ -352,7 +352,7 @@ export default class RenrenSource extends BaseSource { const headers = this.buildSignedHeaders({ method, url, params, deviceId }); const resp = await httpGet(url + "?" + sortedQueryString(params), { headers: headers, - retries: 1, // 网页端为终极兜底链路,保留重试容错机制 + timeout: 5000, }); return resp; } @@ -387,7 +387,7 @@ export default class RenrenSource extends BaseSource { const url = `https://${this.API_CONFIG.TV_HOST}${path}?${queryString}`; - const resp = await httpGet(url, { headers }); + const resp = await httpGet(url, { headers, timeout: 5000 }); if (!resp.data || resp.data.code !== "0000") { log("info", `[Renren] TV搜索接口异常: code=${resp?.data?.code}, msg=${resp?.data?.msg}`); @@ -440,7 +440,7 @@ export default class RenrenSource extends BaseSource { const queryString = sortedQueryString(params); const url = `https://${this.API_CONFIG.MAC_HOST}${path}?${queryString}`; - const resp = await httpGet(url, { headers }); + const resp = await httpGet(url, { headers, timeout: 5000 }); if (!resp.data || resp.data.code !== "0000") { log("info", `[Renren] Mac端搜索接口异常: code=${resp?.data?.code}`); return null; @@ -491,7 +491,7 @@ export default class RenrenSource extends BaseSource { const queryString = sortedQueryString(params); const headers = this.buildWinHeaders(); - const resp = await httpGet(`${url}?${queryString}`, { headers }); + const resp = await httpGet(`${url}?${queryString}`, { headers, timeout: 5000 }); if (!resp.data || resp.data.code !== "0000") { log("info", `[Renren] Win端搜索接口异常: code=${resp?.data?.code}`); return null; @@ -712,7 +712,8 @@ export default class RenrenSource extends BaseSource { const headers = this.generateTvHeaders(timestamp, sign); const resp = await httpGet(`https://${this.API_CONFIG.TV_HOST}${path}?${queryString}`, { - headers: headers + headers: headers, + timeout: 5000 }); // 1. 基础网络或数据校验 @@ -789,7 +790,7 @@ export default class RenrenSource extends BaseSource { // 请求发往目标网关 const url = `https://${targetHost}${path}?${queryString}`; - const resp = await httpGet(url, { headers }); + const resp = await httpGet(url, { headers, timeout: 5000 }); // 1. 基础网络或数据校验 if (!resp || !resp.data) { @@ -1117,6 +1118,7 @@ export default class RenrenSource extends BaseSource { const resp = await httpGet(url, { headers: headers, + timeout: 5000, validStatusCodes: [404] });