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

如何通过OWASP ZAP Python API控制爬虫最大爬取深度?

解决OWASP ZAP Python API控制爬虫爬取深度的问题

我之前也碰到过这个问题!ZAP的Python API和GUI的设置逻辑确实有点不一样,你之前的写法没用到正确的API方法/参数,所以才没生效。下面给你两种可靠的实现方式:

方法1:设置全局爬虫最大深度

这种方式会修改ZAP爬虫的全局配置,后续所有的爬虫任务都会沿用这个深度设置:

from zapv2 import ZAPv2
import time

# 初始化ZAP客户端(替换成你的API密钥和代理地址)
zap = ZAPv2(apikey='your_api_key', proxies={'http': 'http://localhost:8080', 'https': 'http://localhost:8080'})

# 正确设置爬虫最大深度为1(注意方法名是下划线分隔的驼峰转写)
zap.spider.set_option_max_depth(1)

# 启动爬虫任务
target_url = "https://your-target-url.com"
spider_id = zap.spider.scan(target_url)

# 等待爬虫完成
while int(zap.spider.status(spider_id)) < 100:
    print(f"爬虫进度:{zap.spider.status(spider_id)}%")
    time.sleep(5)

print("爬虫扫描完成!")

方法2:启动爬虫时单独指定深度(推荐)

如果只想要当前爬虫任务使用指定深度,不影响全局配置,可以在调用scan()方法时直接传递max_depth参数:

from zapv2 import ZAPv2
import time

zap = ZAPv2(apikey='your_api_key', proxies={'http': 'http://localhost:8080', 'https': 'http://localhost:8080'})

target_url = "https://your-target-url.com"
# 启动爬虫时直接指定max_depth参数
spider_id = zap.spider.scan(target_url, max_depth=1)

# 等待扫描完成
while int(zap.spider.status(spider_id)) < 100:
    print(f"爬虫进度:{zap.spider.status(spider_id)}%")
    time.sleep(5)

print("爬虫扫描完成!")

关键注意点

  • 你之前尝试的spider.setOptionMaxDepth = 1是错误的,这是给属性赋值,而不是调用API方法;正确的方法是set_option_max_depth()(ZAP Python API会把官方API的驼峰命名转成下划线分隔的格式)。
  • 确保你的zapv2包是最新版本,旧版本可能存在方法名不匹配的问题,可以用pip install --upgrade zapv2更新。
  • 如果设置后还是不生效,检查ZAP的API密钥是否有足够的权限,以及ZAP服务是否正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:53:14