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

使用ZAP API运行表单脚本认证时报Does Not Exist异常如何解决

问题定位

  1. 你贴出的FormAuth代码和实际运行的报错堆栈不匹配:报错指向ScriptAuth类的uploadScript方法,你实际运行的是ScriptAuth类,报错和你贴出的表单认证配置逻辑无关,来源于你代码中主动调用的ScriptDeprecated.load加载脚本的逻辑。
  2. 触发org.zaproxy.clientapi.core.ClientApiException: Does Not Exist的常见原因如下:
  • 调用ScriptDeprecated.load时传入的脚本本地路径、脚本名称、脚本类型、脚本引擎四个核心参数任意一个错误,和ZAP服务端配置不匹配
  • ZAP服务端未安装你要使用的对应脚本引擎(比如加载JS脚本需要安装GraalJS插件,引擎不存在就会抛出该错误)
  • 传入的脚本本地路径不存在、无读取权限
  • ZAP服务端开启了API密钥校验,你代码中ZAP_API_KEY配置为null,权限校验失败返回不存在错误
  • ZAP客户端API版本和服务端版本不兼容:你用的是1.9.0版本客户端,对应服务端必须是2.9.x版本的ZAP,版本不匹配会导致API路径不存在

修复方案

  1. 如果你不需要用到自定义脚本逻辑,直接删除ScriptAuth类中调用uploadScript和ScriptDeprecated.load的相关代码,运行你贴出的FormAuth表单认证扫描逻辑即可。
  2. 如果确实需要加载自定义脚本,按以下步骤调整:
  • 优先使用非过时的Script类的load方法,不要用ScriptDeprecated下的过时API
  • 打开ZAP界面进入【工具】-【选项】-【脚本】,确认你要使用的脚本引擎已在列表中存在
  • 调用加载脚本方法时传入正确参数:脚本的绝对路径、唯一的脚本名称、正确的脚本类型(比如authentication、httpsender等)、已存在的引擎名称(比如Graal.js)、是否启用的布尔值、脚本描述
  • 如果ZAP开启了API密钥,将代码中的ZAP_API_KEY改为你ZAP配置的对应密钥值
  • 保证ZAP客户端API版本和本地运行的ZAP服务端主版本一致
  1. 额外修复你贴出的表单认证代码的隐藏问题:不要硬编码contextId = "1",改为调用clientApi.context.newContext(contextName)动态获取上下文ID,避免ZAP启动后默认上下文ID变化导致配置失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:06:00