From c325fdd5f162df4e68cc1d7831df482913bbf116 Mon Sep 17 00:00:00 2001 From: Wayne Date: Wed, 4 Nov 2026 19:09:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=BD=91=E7=BB=9C=E6=8A=96=E5=8A=A8?= =?UTF-8?q?=E6=97=B6=E4=B8=8D=E5=86=8D=E4=B8=AD=E6=96=AD=E6=95=B4=E4=B8=AA?= =?UTF-8?q?=E5=BF=85=E5=BA=94=E6=90=9C=E7=B4=A2=E4=BC=9A=E8=AF=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Bing flyout 仪表板兜底请求从 retries: 0 改为 retries: 2, 连接类错误(如 TLS 握手 EOF)可由 Http 层退避重试 - BrowserSearch 每次搜索后的积分测量失败时,只记为本轮未得分并继续, 下一次成功测量会补算累计增量,不再因一次异常放弃剩余搜索积分 Co-Authored-By: Claude Opus 5.5 --- src/browser/BrowserFunc.ts | 3 ++- src/functions/activities/search/BrowserSearch.ts | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/browser/BrowserFunc.ts b/src/browser/BrowserFunc.ts index 69a0228..d2e9e77 100644 --- a/src/browser/BrowserFunc.ts +++ b/src/browser/BrowserFunc.ts @@ -97,7 +97,8 @@ export default class BrowserFunc { Referer: `${URLs.bing.origin}/`, Origin: URLs.bing.origin }, - retries: 0 + // flyout 是最后的兜底:网络抖动(如 TLS 握手 EOF)要重试,否则会直接中断整个搜索会话 + retries: 2 }) await this.applyResponseCookies(URLs.bing.rewardsFlyoutUserInfo, response.headers['set-cookie']) diff --git a/src/functions/activities/search/BrowserSearch.ts b/src/functions/activities/search/BrowserSearch.ts index 3e08924..bb2d968 100644 --- a/src/functions/activities/search/BrowserSearch.ts +++ b/src/functions/activities/search/BrowserSearch.ts @@ -118,8 +118,18 @@ export class Search extends BaseActivity { await this.bingSearch(page, query, isMobile) stats.performed++ - await this.bot.browser.func.synchronizeActiveBrowserCookies('SEARCH-COOKIE-CAPTURE') - const gained = await tracker.measure() + // 查分失败(网络抖动)不应中断整个会话:本轮记为未得分,下一次成功的 measure 会把累计增量补算回来 + let gained = 0 + try { + await this.bot.browser.func.synchronizeActiveBrowserCookies('SEARCH-COOKIE-CAPTURE') + gained = await tracker.measure() + } catch (error) { + this.bot.logger.warn( + isMobile, + tracker.context, + `查询积分进度失败,继续下一次搜索 | ${error instanceof Error ? error.message : String(error)}` + ) + } if (gained > 0) { stats.stagnant = 0 stats.totalGained += gained