Skip to content

HTTP/2 支持限制 ​

⚠️ r0capture 对 HTTP/2 支持有限。

现状 ​

HTTP/2 在 Android 上的部署情况复杂:

HTTP/2 实现来源r0capture 支持
系统 OkHttp HTTP/2走系统 SSL 栈✅ 可抓明文
Cronet(Chromium)自带 BoringSSL 副本⚠️ 可能抓到但栈不同
App 自带 HTTP/2 库自带 SSL❌ 视实现而定

为什么「暂未通用支持」 ​

来自 README

暂不支持 HTTP/2、或 HTTP/3,该部分 API 在安卓系统上暂未普及或布署,为 App 自带,无法进行通用 hook。

HTTP/2 的多路复用、HPACK 头压缩在 SSL_read/SSL_write 层看到的是已解压的 HTTP/2 帧(明文),理论上可抓;但:

  1. 部分 App 用自带 HTTP/2 实现,不走系统 SSL 符号
  2. HPACK 压缩的帧需额外解压才能读懂
  3. 多路复用使一个 SSL 会话交错多个流,pcap 关联复杂

实际能抓到什么 ​

走系统 SSL 栈的 HTTP/2(如 OkHttp 默认协商的 h2),SSL_read/SSL_write 仍能抓到 HTTP/2 帧明文,但需用 Wireshark 的 HTTP/2 解析器查看(能自动解 HPACK)。

替代方案 ​

若 r0capture 抓不到目标 App 的 HTTP/2:

  • 尝试 -ssl "*libssl*" 或指定 App 自带 SSL 库
  • 用 mitmproxy 做中间人(但需绕过 pinning)
  • 反编译定位 App 的 HTTP/2 客户端实现

相关文档 ​

基于 VitePress 构建 · 教学用途