You need to enable JavaScript to run this app. 如何通过ZAP Docker对需登录表单类Web应用执行主动扫描?
优惠活动
大模型
产品
解决方案
定价
更多

如何通过ZAP Docker对需登录表单类Web应用执行主动扫描?

完全可落地的ZAP Docker主动扫描方案,完全适配你们现有技术栈

整个方案不需要推翻已经写好的Python+Selenium UI自动化流程,核心逻辑是把ZAP作为代理嵌到现有Selenium链路里,既解决登录态保留、操作路径收集的问题,又能直接在Docker环境跑主动扫描。

核心实现逻辑

  • 不依赖ZAP自带的爬虫去爬站点、模拟登录,避免复杂的登录流程适配成本
  • 所有已经写好的登录、UI操作、页面跳转、表单提交的Selenium脚本,全部通过ZAP代理走流量,ZAP会自动记录这些操作对应的页面路径、请求参数、登录会话凭证
  • 等Selenium脚本走完所有需要覆盖的页面后,直接触发ZAP针对已收集到的流量做主动扫描,全程不需要重复编写业务逻辑

具体落地步骤

1. 启动带代理能力的ZAP Docker实例

直接使用ZAP官方稳定版镜像启动,需要映射两个核心端口:代理监听端口(默认8080,用来接收Selenium的流量)、ZAP API端口(默认8090,用来对接Python脚本控制扫描流程)。注意配置好API访问权限,不要把端口直接暴露到公网环境。
对应的启动命令参考:

docker run -u root -p 8080:8080 -p 8090:8090 -i owasp/zap2docker-stable zap.sh \
  -daemon -port 8090 -host 0.0.0.0 \
  -config api.addrs.addr.name=.* \
  -config api.addrs.addr.regex=true \
  -config network.localServers.mainProxy.enabled=true

2. 最小改造现有Selenium脚本对接ZAP代理

不需要重写原有UI操作代码,只需要在初始化浏览器实例的时候,把代理指向ZAP映射出来的端口,同时处理HTTPS证书校验的问题即可。
参考的浏览器初始化代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
# 配置流量走ZAP代理
chrome_options.add_argument('--proxy-server=127.0.0.1:8080')
# 忽略ZAP的MITM证书校验问题
chrome_options.add_argument('--ignore-certificate-errors')
driver = webdriver.Chrome(options=chrome_options)

配置完成后,之前写的所有登录、UI点击、表单提交的逻辑可以原封不动运行,所有请求都会自动流经ZAP,ZAP会自动捕获会话Cookie、请求参数、页面结构,不需要额外的流量导入操作。

3. 触发带正确登录态的主动扫描

等Selenium脚本跑完所有目标页面的操作流程后,直接通过Python的ZAP API客户端对接刚才启动的ZAP服务(地址就是127.0.0.1:8090),针对ZAP已经收集到的站点路径启动主动扫描即可。
扫描前记得做两个配置:

  • 提前划定扫描范围,只把要测的目标域名纳入扫描上下文,排除第三方域名、静态资源站点,避免扫到无关目标
  • 根据应用的承载能力调整扫描速率,不要用默认的高并发扫描打垮测试环境

常见踩坑点

  • 不需要额外给ZAP配置登录脚本,它会直接复用代理流量里截获的登录凭证、Cookie,只要Selenium流程里的登录是成功的,主动扫描的请求都会带着正确的身份信息,不会出现跳转登录页的问题
  • 如果站点有严格的客户端证书校验,可以把ZAP生成的根证书提前装到Selenium使用的浏览器目录里,不需要修改ZAP Docker内部的证书配置
  • 主动扫描会对接口发起大量测试请求,记得提前和测试环境的运维同学同步,避免触发WAF的拦截规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 18:06:04