Files
sub2api/backend
erio bde1dcd9de fix(tls): stabilize JA3/JA4 integration tests by pinning plain variant
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)。
2026-04-20 22:11:09 +08:00
..
2026-04-20 20:52:09 +08:00
…