JMeter无法录制原生APP性能测试求助:可正常录制浏览器应用
JMeter录制Android原生APP失败的排查与解决步骤
确认手机和JMeter电脑的网络连通性
- 必须在同一WiFi下,用手机浏览器直接访问
http://[电脑局域网IP]:[JMeter代理端口],能打开JMeter证书下载页才算网络连通正常 - 检查电脑防火墙是否放行JMeter使用的端口(默认8888),避免请求被拦截
- 必须在同一WiFi下,用手机浏览器直接访问
正确配置手机代理
- 在手机WiFi设置中手动指定代理:主机名填电脑的局域网IP,端口和JMeter代理服务器设置的端口保持一致
- 注意:别填
localhost或127.0.0.1,手机无法识别这类本地回环地址
把JMeter的SSL证书安装到手机系统信任区
- 先启动JMeter的HTTP(S) Test Script Recorder,点击「Start」生成并保存证书(默认文件名为
apachejmeter.crt) - 通过邮件、聊天工具把证书传到手机,然后在手机设置中找到「安全-加密与凭据-从存储设备安装」完成证书导入
- 关键:一定要选择安装到系统凭据存储,仅安装到用户凭据的话,APP不会信任该证书
- 先启动JMeter的HTTP(S) Test Script Recorder,点击「Start」生成并保存证书(默认文件名为
处理APP的证书与代理限制
- 部分原生APP会做证书钉扎(Certificate Pinning),拒绝信任JMeter的证书导致无法抓包
- 临时解决:用Xposed框架搭配JustTrustMe模块禁用证书校验(仅用于测试环境,禁止在生产场景使用)
- 长期方案:反编译APP去除证书钉扎逻辑(需要具备一定逆向工程能力)
- 有些APP会检测代理并自动绕过或拒绝连接
- 可尝试在JMeter代理设置中勾选「Redirect HTTPS to HTTP」,或者用BurpSuite中转请求后再交给JMeter处理
- 部分原生APP会做证书钉扎(Certificate Pinning),拒绝信任JMeter的证书导致无法抓包
调整JMeter的录制规则
- 在「Target Controller」中选择正确的测试计划节点,避免录制的请求丢失
- 默认的「URL Patterns to Include」是
.*\.html,需要修改为.*或更宽泛的规则,确保能捕获APP的所有请求 - 开启「Capture HTTP Headers」,部分APP的请求依赖特定Header,录制时需要保留这些信息
先通过简单请求验证录制功能
- 先在手机上访问百度这类简单网页,确认JMeter能正常录制请求
- 如果简单请求能录制成功,再切换到目标APP逐步操作,排查是APP全局问题还是特定功能的问题
内容的提问来源于stack exchange,提问作者Curioussoul
相关产品推荐
相关产品推荐

