You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:JMeter录制安卓原生APP HTTPS流量失败,目标APP无网络

解决JMeter录制自研Android App HTTPS流量失败的问题

我之前也碰到过类似的场景,你已经搞定了系统代理和证书的基础配置,但自研App连不上网的情况,大概率是App自身的安全策略或者代理覆盖不到位导致的,给你几个针对性的排查和解决思路:

1. 优先排查自研App的证书固定(Certificate Pinning)问题

很多自研App为了安全会启用证书固定——也就是在代码里硬编码了信任的服务器证书/CA,不会信任系统安装的第三方CA(比如你的JMeter根证书)。这种情况下,App检测到代理返回的证书不是它预期的,就会直接断开连接,表现为无法联网。

解决办法:

  • 如果你们有App源码,可以临时注释掉证书固定的逻辑,或者把JMeter证书的指纹添加到App的信任列表里,重新打包测试包。
  • 没有源码的话,用Xposed框架配合JustTrustMe模块(专门绕过证书校验的工具),在ROOT的Android设备上安装启用后,它会强制App信任所有证书,包括JMeter的代理证书(注意这只适合测试环境,绝对不能用于生产)。

2. 确认ProxyDroid的代理是否真的覆盖了自研App

虽然设置了全局代理,但有些App会通过代码绕过系统代理(比如用OkHttp/Retrofit时设置了Proxy.NO_PROXY),或者ProxyDroid的规则里不小心排除了这个App:

  • 打开ProxyDroid的应用列表,找到你的自研App,确保它的代理规则是强制使用代理,而不是“忽略”或“默认”。
  • 查看JMeter的控制台输出(代理日志),如果完全没有来自这个App的请求记录,说明代理根本没生效到App上。

3. 检查JMeter的代理配置细节

确保JMeter的HTTP(S)测试脚本录制器配置没有疏漏:

  • 确认代理端口和ProxyDroid里设置的端口完全一致(比如都是8888)。
  • 在JMeter代理设置里,勾选HTTPS选项,并且指定正确的JMeter根证书路径(就是你安装到Android设备上的那一份)。
  • 可以尝试勾选Capture HTTP Headers,有时候某些自定义请求头会影响连接建立。

4. 验证Android 5.1的系统证书是否真的生效

Android 5.1的系统证书安装有细节要注意:

  • 证书必须安装到系统证书目录(/system/etc/security/cacerts/),而不是用户证书目录——很多App只会信任系统级别的CA,用户安装的证书不被认可。ROOT设备上可以把JMeter证书(转成.crt格式,重命名为「哈希值.0」的格式)复制到这个目录,修改权限为644,然后重启设备。
  • 去系统设置的「安全-信任的凭据」里,查看「系统」标签下是否有你的JMeter证书,确保它处于启用状态。

5. 先验证App的基础网络连通性

暂时关闭JMeter代理,让App直接联网,确认App本身可以正常访问服务器。如果无代理情况下App也无法联网,那问题就不在JMeter这边,得先排查App的网络配置或服务器状态。


内容的提问来源于stack exchange,提问作者Happy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:19:32