/** # 脚本说明 * SERP 双路径(fetch+浏览器)24h 自适应吞吐优化测试(用户 2026-10-30 目标; * 2026-11-02 用户要求可用率约束上调至 >99%): * 在保证客户端成功率 >99% 的约束下,自适应逼近系统可持续的最大每分钟请求数。 * 与 serp-profile-capacity.ts(单号 sticky+fetch,绕过池/令牌)不同,本脚本走生产 * 双路径原形态(runtime=auto,无 sticky,全池公平负载选号): * GET /api/serp/json/search?q=...&num=10 * 令牌内走 go-fetch(全局限流 fetchPerSec),限流外并发走温池浏览器 —— 组合即生产形态。 * AIMD 控制器 v5.1(dp6 全天实测教训驱动;v4 基础上改四点,v5.1 再改三点): * 硬约束(成功率即约束本身):首次跌破 99%(失败≥2)×0.7、<96% ×0.5;退化段内续砍 * 需短窗 <96% 且(非验证码失败 ≥1 或验证码 ≥5/10min)且全程增量新失败 ≥2; * 涓流豁免(v5.1,dp7 前 1.5h 实测:99% 线下比率陷阱锁死 degraded 砍到 3/min): * 30min 窗零非验证码失败且短窗验证码 ≤2 = 涓流 —— 不入段、可退段(短窗 ≥98.5%)、 * 验证码涓流的唯一解药是爬坡摊薄(稀释论),砍速让分母变小占比更高; * 软信号按事件段(episode)迟滞 + 绝对数护栏:验证码 10min 窗 ≥8 个(v5.1:5→8,只砍 * 波次规模)且占比>2% ×0.5(重波次 ≥12)、≥8 个且>0.5% ×0.7;门壳 ≥3 且占比>15% ×0.85; * 池空>5 ×0.85;软砍下限 SOFT_FLOOR=40(v5.1:25→40,保稀释安全线); * 干净爬坡:不在退化段 且 短窗干净 且 无池空 且(验证码 0 个或样本 ≥300)→ 向「干净 * 水位」(30min 窗 ≥99.5% 时的最高速率)以 ×1.3/拍快速回收,水位之上每 5 拍 ×1.08。 * v5 修 dp6 实测「低速恢复锁死」:短窗成功率 ≥99.5% 在低速涓流下永不可达 * (05:00-06:10 滞留 70min 在 24-42/min,该小时实际 98.86%)→ 增加备选条件 * 「验证码 ≤1 个且短窗 ≥98.5%」(稀释论:同量涓流在高速率下占比可忽略,可爬)。 * 速率区间 [3, 400] req/min;并发 worker 默认 12(真实并发让溢出自然流向浏览器路径)。 * 判定(客户端,JSON 出口):ok = 200 且 organic>0;gate = 200 且 organic=0 且 * attempts 含 gate;empty = 200 且 organic=0 无门壳尝试;错误按响应 code 分类 * (CAPTCHA_DETECTED / SERP_POOL_EMPTY / 其余 httpErr);网络层失败记 netErr。 * 输出:data/