使用JMeter进行安卓APP负载测试时遇到443错误如何解决
JMeter 5.4.1 安卓APP负载测试443端口错误排查方案
443是HTTPS协议默认服务端口,出现报错基本和网络连通性、证书信任、TLS协议匹配这三类问题相关,可按以下顺序排查:
1 基础网络&代理配置校验
- 确认移动设备和JMeter所在设备连接同一局域网,不存在多网段、VPN分流的情况
- 核对移动设备WiFi代理填写的IP、端口,和JMeter HTTP(S)测试脚本录制器的配置完全一致,注意不要误填虚拟机、虚拟网卡的IP
- 检查JMeter所在设备的防火墙、杀毒软件是否放行JMeter的运行权限,同时放行了JMeter代理监听端口的入站规则
- 直接在JMeter所在设备运行命令
curl -v https://你要测试的目标服务域名验证443端口连通性,如果该命令也报错,说明是服务端本身封禁了你的出口IP,或本地网络无法访问目标服务,和JMeter配置无关
2 证书信任问题排查(占443报错的90%以上)
- 确认你已将JMeter生成的
ApacheJMeterTemporaryRootCA.crt证书安装到移动设备的系统根证书目录:安卓7.0及以上版本默认不信任用户安装的证书,普通安装后APP无法识别,要么root设备后把证书移动到/system/etc/security/cacerts/目录,要么修改APP的网络安全配置信任用户证书,示例配置如下:
在APP的res/xml目录下新增network_security_config.xml文件:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" /> <certificates src="user" /> </trust-anchors> </base-config> </network-security-config>之后在AndroidManifest.xml的application标签添加
android:networkSecurityConfig="@xml/network_security_config"重新打包APK即可生效
- 无法重打包正式APK的情况下,可使用VirtualXposed、VMOS等虚拟容器运行APP,在虚拟容器内安装JMeter证书即可绕过系统证书限制
- 检查JMeter临时证书是否过期:默认证书有效期只有7天,过期后删除JMeter bin目录下的
ApacheJMeterTemporaryRootCA.crt和proxyserver.jks文件,重启JMeter录制器会自动生成新证书,重新安装到设备即可
3 JMeter配置兼容性校验
- 录制阶段打开HTTP(S)测试脚本录制器时,
HTTPS Domains字段如果不需要限定录制范围可留空,避免填错域名导致拦截失败 - 打开JMeter bin目录下的
user.properties文件,添加配置https.default.protocol=TLSv1.2,匹配绝大多数线上服务的TLS协议版本要求,避免协议不兼容导致握手失败 - 录制完成后运行脚本出现443报错的,检查HTTP请求采样器的
协议字段是否填为https、端口是否填为443,同时确认已添加HTTP Cookie管理器、HTTP请求头管理器,请求头配置和真实APP的请求参数一致
内容的提问来源于stack exchange,提问作者Jaitavya Mishra
相关产品推荐
相关产品推荐

