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

OWASP ZAP无法拦截Java回归测试发起的SOAP API请求问题求助

问题原因

  1. 你使用的Apache HttpClient 4.x组件默认不会读取JVM系统级的HTTP/HTTPS代理配置,即便你通过System.setProperty设置了代理参数,请求也会直接绕过代理访问目标服务,这就是代理不生效、ZAP无感知的核心原因。
  2. ZAP默认仅提供HTTP/HTTPS代理服务,未开启SOCKS代理支持,你配置SOCKS代理后向ZAP的HTTP代理端口发送SOCKS协议请求,自然会出现客户端连接报错、ZAP侧收到未知报文触发超时警告的问题。
  3. 现有app.keystore仅存储了SOAP服务的可信证书,后续走ZAP代理时ZAP会动态替换SSL证书,若不将ZAP根证书导入信任库会出现SSL握手失败问题。

解决步骤

1. 替换代理配置方式,直接给Apache HttpClient配置ZAP代理

删除原有JVM系统代理、SOCKS代理相关的System.setProperty代码,在构造HttpClient实例时显式指定代理,示例代码如下:

import org.apache.http.HttpHost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.DefaultProxyRoutePlanner;

// 构造ZAP代理对象
HttpHost zapProxy = new HttpHost("localhost", 8888);
DefaultProxyRoutePlanner proxyRoutePlanner = new DefaultProxyRoutePlanner(zapProxy);
// 生成绑定了代理配置的HttpClient实例
CloseableHttpClient httpClient = HttpClients.custom()
        .setRoutePlanner(proxyRoutePlanner)
        // 保留你原有HttpClient的其他配置(比如SSL相关配置)即可
        .build();

2. 导入ZAP根证书到现有信任库

  1. 打开ZAP客户端,依次点击 工具 → 选项 → 动态SSL证书,选择保存根证书到本地,命名为zap_root_ca.cer。
  2. 执行keytool命令将ZAP根证书导入你现有的app.keystore:
keytool -importcert -alias zap_root_ca -file C:\本地保存路径\zap_root_ca.cer -keystore C:/standalone/configuration/app.keystore -storepass somepassword

执行后输入yes确认导入即可。

3. 验证配置

保持ZAP启动状态,运行你的SOAP回归测试用例,查看ZAP的历史记录面板,如果能看到对应SOAP请求则说明代理配置成功。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:45:03