HTTP/1.1、HTTP/2 和 HTTP/3 使用同一个内置 curl 客户端。macOS arm64 和 Linux x64 使用 curl 8.22.0、OpenSSL 3.5.9、nghttp2 1.70.0、ngtcp2 1.25.0 和 nghttp3 1.18.0。Windows x64 使用 curl.se 官方 curl-for-win 8.22.0_3 静态构建,搭配 LibreSSL 4.3.3 和相同的 HTTP 库。无需回退到系统 curl,无需在运行时下载,也无需管理员权限。Windows 上游的可复现构建配方位于 https://github.com/curl/curl-for-win/tree/9d77e31e 。
打包前请使用 python3 scripts/native/build.py 进行构建(Windows:python scripts/native/build.py)。macOS/Linux 需要 C/C++ 工具、CMake、Ninja、Perl、make 和 pkg-config。源代码按版本和上游 SHA-256 固定在 scripts/native/dependencies.lock.json 中。脚本会验证每一次下载,静态链接第三方传输库,并在缺少 HTTP2/HTTP3/SSL 功能时失败。只有操作系统库保持动态链接。Windows 使用固定的官方二进制压缩包,而不是在本地编译的 Windows 传输栈。内置 CA 文件有其单独固定的哈希;组件许可证和上游构建来源信息随运行时一同提供。
客户端和信任存储安装在 app.asar 之外的 resources/native-runtime/<platform>-<arch>/ 中。每次诊断前都会验证组件哈希、架构和可执行文件的能力。配置文件、代理、TLS 信任环境覆盖以及库注入变量都会被排除。curl 以绝对路径运行,禁用 shell,使用经过验证的 CA 信任、显式解析的 IP 协议族,不使用 Cookie,不自动跟随重定向,并限制输出和时间。重定向由应用验证并重新解析。支持 443 以外端口上的 HTTPS。
HTTP/3 使用 --http3-only,只有在完成一次报告 HTTP 版本 3 且证书验证成功的传输之后才会被确认。404 之类的 HTTP 错误响应也可以确认该协议。Alt-Svc 只是一种通告,而不是证明。QUIC 超时、证书失败、DNS 失败、连接被拒绝、协议不兼容以及组件故障会被分别区分。UDP 超时意味着服务器是否支持仍未得到验证。QUIC 握手时间不会被报告为 TCP 时间。
每次测量都会启动一个单独的进程/连接。warm 选项不会声称内置客户端复用了连接。这样可以保证协议比较的一致性。报告包含运行时版本、能力、TLS 验证和 QUIC 计时,而历史记录/导出会移除正文、URL 查询参数和身份验证标头。
更新传输栈或 CA 信任存储时,请更新这些固定值并为每个受支持的平台重新构建。已发布的构件和源代码快照不可更改。