JMeter录制安卓APP流量异常求助:部分URL未捕获+SSL握手失败
解决JMeter 5.1录制Android 9应用时的代理与SSL问题
我来帮你一步步排查和解决这两个棘手的问题,咱们逐个击破:
一、流量未通过代理传输,仅捕获部分URL
这个问题核心是Android 9+对CA证书信任的限制以及代理配置的全局有效性,试试下面的步骤:
验证代理全局生效
- 打开Android设备的WLAN设置,手动指定代理为JMeter所在电脑的IP和端口(默认8888),确保没有设置应用代理例外(有些设备会默认让系统应用绕过代理)。
- 测试连通性:在设备浏览器访问
http://<你的JMeter电脑IP>:8888,如果能看到JMeter的代理欢迎页,说明网络连通没问题;如果看不到,检查电脑防火墙是否开放了该端口,或者设备和电脑是否在同一局域网。
正确安装CA证书到系统目录
Android 9及以上默认不信任用户安装的CA证书,必须把JMeter的证书装到系统证书目录才能让所有应用信任:- 在JMeter的HTTP(S) Test Script Recorder里,点击「Generate Root CA」生成证书,导出为
ApacheJMeterTemporaryRootCA.crt。 - 把证书重命名为
certificate.pem(Android系统只识别PEM格式的证书文件名)。 - 通过adb命令推送到设备系统目录(需要设备Root权限):
adb push certificate.pem /system/etc/security/cacerts/ adb shell chmod 644 /system/etc/security/cacerts/certificate.pem - 重启设备后,在「系统设置→安全→信任的凭据」里就能看到你的JMeter证书了。
- 在JMeter的HTTP(S) Test Script Recorder里,点击「Generate Root CA」生成证书,导出为
排除系统应用的代理绕过
Google服务、App Store这类系统应用可能硬编码了代理绕过规则,你可以:- 在JMeter的HTTP(S) Test Script Recorder的「Include URLs」里添加这些系统应用的域名(比如
*.google.com、*.apple.com)。 - 检查设备代理设置里的「不使用代理的地址」列表,把相关域名删除。如果还是不行,可能需要用VPN模式的代理工具辅助,但优先确保证书和基础代理配置正确。
- 在JMeter的HTTP(S) Test Script Recorder的「Include URLs」里添加这些系统应用的域名(比如
二、设置代理后Microsoft登录应用报SSL握手错误
这个问题是Microsoft OAuth服务对证书信任要求严格导致的,试试这些方案:
确保系统信任JMeter证书
Microsoft登录应用通常只信任系统级别的CA证书,所以一定要完成上面的「系统证书安装」步骤,不要只装在用户凭据里。重新生成并验证JMeter的SSL证书
- 打开JMeter的「Options→SSL Manager」,删除旧的临时证书,然后回到HTTP(S) Test Script Recorder重新生成Root CA。
- 导出新证书后,重新安装到设备系统目录,确保证书没有过期或格式错误。
排查端口与防火墙问题
443错误可能是代理端口被拦截:- 把JMeter的代理端口改成非默认的(比如8080),然后在设备上更新代理设置。
- 检查电脑防火墙是否允许JMeter的代理端口对外访问,或者暂时关闭防火墙测试。
总结
先搞定系统级CA证书安装,这是Android 9+抓HTTPS流量的核心前提,再逐步验证代理的全局有效性和应用的证书信任配置,应该能解决你遇到的大部分问题。
内容的提问来源于stack exchange,提问作者Lokesh Bandaru
相关产品推荐
相关产品推荐

