Groovy脚本配置代理后OWASP ZAP无法捕获HTTP流量问题求助
可能的原因及对应解决方案:
- JVM默认非代理主机规则拦截
JVM的http.nonProxyHosts系统属性默认存在内置值localhost|127.*|[::1],所有匹配该规则的HTTP请求都会直接绕开代理发送。而HTTPS的代理规则校验逻辑在部分JDK版本中不会默认继承该配置,所以会出现HTTPS代理生效、HTTP不生效的情况。
解决方法:配置代理时额外增加一行清空非代理列表的代码:System.setProperty('http.nonProxyHosts', '') - HTTP客户端库未读取JVM系统代理
如果你脚本中发起HTTP请求使用的是Apache HttpClient、OkHttp、Retrofit等第三方HTTP客户端,这类客户端默认不会读取JVM的系统代理配置,需要单独为客户端指定代理参数。而如果你的HTTPS请求是通过Java原生的URLConnection类发起,该类默认会读取系统代理配置,就会出现两者表现不一致的情况。
解决方法:查阅你使用的HTTP客户端的官方文档,手动传入ZAP的代理地址和端口初始化客户端。 - ZAP过滤规则拦截了HTTP流量
ZAP默认会配置部分全局排除规则,也可能你之前手动添加过对应HTTP站点的过滤规则,导致HTTP流量被ZAP丢弃、没有展示在历史列表中。
解决方法:打开ZAP的「工具」-「选项」-「连接」-「排除的URL」页面,删除对应HTTP站点的规则,同时清空ZAP历史记录页面的过滤条件后重新测试。 - 系统级代理配置优先级更高
如果你当前设备的系统环境变量HTTP_PROXY配置了其他代理地址,该环境变量的优先级会高于JVM的系统属性配置,导致HTTP请求走了其他代理、没有流向ZAP。
解决方法:运行脚本前先清空系统的HTTP_PROXY环境变量,或者启动Groovy脚本时手动指定JVM参数强制覆盖代理配置。
内容的提问来源于stack exchange,提问作者mu1988
相关产品推荐
相关产品推荐

