mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-09-24 16:05:44 +08:00
CI 一直挂在 TestJA3Fingerprint / TestAllProfiles/default_node_v24 — 调查发现根因不是 Go/Node 版本升级,而是生产 dialer 的 maybeEnrichExtensions() 以约 50% 概率 追加 ECH(65037) + padding(21) 扩展,产出 plain / rich 两种变体;测试断言单一 JA3 时天然 flaky。 修复: - 两个 integration test 的 Profile 显式设置 Extensions(plain 13-extension 列表) 锁定为 plain 变体,让 end-to-end 断言确定性 - expectedJA3Hash: 048900f5... → dc782a9d905fdcee1223a3d4e8108bc6 (dialer.go 头部注释已文档化的 plain 变体值) - expectedJA4CipherHash: b262b3658495 → 5b57614c22b0 (与 dialer.go 的 17-cipher defaultCipherSuites + unit test 一致) - 加详细 WHY 注释,说明 plain/rich 二态、原期望值是 2026-04-19 realign commit 未经验证的猜测、为什么在此 pin extensions probabilistic 行为本身由 maybeEnrichExtensions 的 unit test 覆盖, end-to-end 不重复验证。 本地 PASS(直连 tls.peet.ws)。