抓不到包怎么办:从启动到流量全排查
问题描述
httpCanary 抓包服务已启动(纸飞机变红色,有悬浮窗),打开目标 App 操作了半天,请求列表里却一个请求都没有。
排查清单
按以下顺序排查,从最常见的原因到最复杂的。
一、检查 VPN 连接状态
httpCanary 抓包的核心是 VPN 隧道。如果 VPN 没正常连上,自然抓不到包。
检查步骤:
- 手机状态栏是否显示 VPN 图标
- 系统设置 → 网络 → VPN → httpCanary 对应的 VPN 配置是否显示「已连接」
- 如果显示已断开或有错误提示:
- 先停止 httpCanary 抓包
- 在 VPN 设置里手动删除 httpCanary 的 VPN 配置
- 重新启动 httpCanary 抓包,让它重新创建 VPN
二、VPN 冲突:同时只能有一个 VPN
Android 系统不允许同时运行两个 VPN 连接。如果你手机上同时开着这些东西,httpCanary 就无法启动抓包:
- 其他 VPN 代理软件(Shadowrocket、Surge、Clash v2rayNG 等)
- 某些 App 自带的 VPN 功能(比如部分广告拦截器、安全管家)
- 个人 VPN 配置
解决:关闭所有其他 VPN 相关应用,只保留 httpCanary。
三、目标应用没有产生网络请求
看起来「打开了 App 操作了」,但 App 可能真的没有发任何请求——比如:
- App 有缓存,直接从本地加载数据
- 你操作的功能是纯本地的,不联网
- 网络环境差,请求超时了但客户端没显示出来
验证方法:
- 用浏览器访问
https://www.baidu.com或https://example.com - 回到 httpCanary 看能不能抓到浏览器的请求
- 如果浏览器的请求能抓到,说明 httpCanary 本身没问题,问题出在目标 App
四、过滤太严
目标应用、目标 Host 或搜索条件可能把所有请求都过滤掉了。
检查步骤:
- 进入 httpCanary 设置
- 暂时关闭所有目标应用和目标 Host 过滤
- 清除搜索面板的所有筛选条件
- 回到主界面,看列表是否有变化
五、应用使用 HTTP/3(QUIC)
HTTP/3 基于 QUIC 协议,不走标准 TCP 连接——部分版本的 httpCanary 可能无法完整捕获。
检查方法:在请求列表看已抓到的浏览器请求是什么协议版本。如果是 h3 或完全抓不到浏览器的请求,可能就是协议问题。
临时解决方案:在 WiFi 高级设置里禁用 QUIC(不同 ROM 路径不同),或者把手机切到蜂窝网络(部分运营商不支持 HTTP/3)。
六、系统级别的流量转发异常
极少数情况下,Android 的流量转发机制会出问题:
- 重启手机
- 重启后不打开其他应用,直接启动 httpCanary 抓包
- 用浏览器访问网页验证
重启能解决九成以上的系统层异常。
七、httpCanary 版本太旧
老版本的 httpCanary 可能不兼容新 Android 系统或新 TLS 协议。
检查步骤:
- 在设置 → 关于 里查看当前版本号
- 去 httpcanary.cn 或下载站点对比最新版本
- 版本过旧请升级
八、App 使用特殊网络栈
极少数 App 不走系统标准网络 API:
- 使用 NDK 层自己实现的网络库(绕过 Java 层的网络栈)
- 使用 WebView 的网络栈单独配置了代理绕过
- 使用 SOCKS5 或自定义代理服务器
这种情况 httpCanary 确实抓不到——它只能拦截走系统网络栈的流量。
九、模拟器特殊情况
如果你在模拟器里使用 httpCanary:
- 确认模拟器支持 VpnService API(大部分模拟器都支持)
- 部分模拟器(比如旧版 Genymotion)有已知的 VPN 兼容性问题
- 切换模拟器镜像试试,推荐带 Google API 的系统镜像
快速诊断流程
打开浏览器访问网页
↓
能抓到浏览器请求?
├─ 能 → httpCanary 正常,问题在目标 App(过滤/SSL Pinning/协议)
└─ 不能
↓
VPN 图标正常显示?
├─ 正常 → 关所有其他 VPN,重启 httpCanary
└─ 不正常 → 删 VPN 配置,重启 httpCanary
↓
还是不行 → 重启手机,再试