JMeter录制HTTPS应用脚本时目标站点无法加载问题咨询
核心诱因
其他站点可正常录制说明代理配置、证书全局导入都没有问题,单站点无法加载通常是以下几个原因:
- 目标站点开启了证书固定(Certificate Pinning/HPKP):服务端或前端代码内置了官方合法证书的指纹校验逻辑,识别到JMeter作为MITM代理生成的动态证书后直接中断连接,这是单站点录制失败的最高频原因。
- 录制过滤规则配置错误:之前调整HTTP(S) Test Script Recorder的过滤规则时,误将目标站点域名加入了排除列表,或是包含规则写得过于严格,导致目标站点的请求被JMeter直接拦截不转发。
- 协议版本不兼容:目标站点禁用了HTTP/1.1访问,强制要求HTTP/2、QUIC/HTTP3连接,而旧版本JMeter的录制组件默认仅支持HTTP/1.1协议转发,连接协商失败就会导致站点无法加载,其余兼容HTTP/1.1的站点不受影响。
- 本地缓存冲突:浏览器缓存了目标站点此前的合法证书指纹、HSTS记录,和当前JMeter代理返回的证书信息不匹配,触发浏览器安全拦截。
- 代理到源站的链路不通:本地hosts配置、防火墙规则拦截了JMeter进程访问目标站点的请求,导致代理无法把请求转发到源站。
排查解决步骤
按顺序排查即可,不需要一次性全改:
- 确认是否为证书固定问题
关闭所有浏览器扩展,打开无痕模式访问目标站点,如果仍然提示证书无效、连接被重置,即可判定是证书固定导致。这种情况不需要反复折腾证书,直接安装JMeter的Chrome DevTools Protocol插件,基于CDP协议抓包可以绕过证书固定校验;也可以直接用浏览器开发者工具导出目标站点操作的HAR文件,再导入JMeter生成测试脚本。 - 重置录制过滤规则
打开HTTP(S) Test Script Recorder配置页,切换到Requests Filtering标签,临时清空URL Patterns to Exclude下的所有规则,在URL Patterns to Include中添加规则.*你的目标站点域名.*,重启录制组件后再尝试访问。 - 修复协议兼容问题
打开JMeter安装目录bin文件夹下的user.properties文件,新增一行配置jmeter.http2.enabled=true,保存后重启JMeter;如果仍然加载失败,在Chrome地址栏访问chrome://flags/#enable-quic将QUIC功能设为Disabled,强制浏览器走HTTP/1.1连接后再试。 - 清理本地缓存冲突
先在浏览器证书管理中删除之前导入的JMeter根证书,重新从JMeter的bin目录下找到最新生成的ApacheJMeterTemporaryRootCA.crt,重新导入到系统/浏览器的「受信任的根证书颁发机构」存储区;再单独清除目标站点的所有缓存、Cookie、站点权限数据,重启浏览器后访问。 - 验证源站连通性
先关闭JMeter代理,确认本地直连目标站点可以正常访问;再打开代理,用命令行测试代理链路连通性:curl -x 127.0.0.1:你设置的JMeter代理端口 -v https://目标站点地址,如果返回连接超时/被拒,检查本地防火墙、hosts文件是否拦截了JMeter进程对目标站点的访问。
内容的提问来源于stack exchange,提问作者Sreeshma o.k
相关产品推荐
相关产品推荐

