连接到 Zap 代理 Docker 图片,“最大重试次数超过 url:由 ProxyError('无法连接到代理

Connecting to Zap Proxy Docker Image, "Max retries exceeded with url: Caused by ProxyError('Cannot connect to proxy

我正在尝试使用 zap proxy via Docker 把它拉下来:

 docker pull owasp/zap2docker-stable

运行 使用 "Accessing the API from outside of the Docker container" 部分中描述的命令:

 docker run -p 8090:8090 -i owasp/zap2docker-stable zap.sh -daemon -port 8090 -host 0.0.0.0

但是我好像连接不上。当我 运行 docker inspect <CONTAINER ID> | grep IPAddress 时,我得到 172.17.0.2(编辑:我可以扫描到 运行 然后我将 ZAP_SERVER_PROXY 从 172.17.0.2:8090 更改为 0.0.0.0:8090 on Mac 所以将其编辑到下面的代码示例中)。所以我的脚本开头看起来像:

import os
import time
from pprint import pprint
from zapv2 import ZAPv2

BASE_URL = os.getenv('BASE_URL', 'https://example.appspot.com/')
ZAP_SERVER_PROXY = os.getenv('ZAP_SERVER_PROXY', '0.0.0.0:8090')
API_KEY = ''

zap = ZAPv2(
    # apikey=API_KEY,
    proxies={
        'http': "http://%s" % ZAP_SERVER_PROXY,
        'https': "https://%s" % ZAP_SERVER_PROXY
    }
)

现在正尝试使用 python 通过终端 运行 它并不断收到连接被拒绝的错误。我也试过 API_KEY 部分也被注释掉了,有没有人知道你在哪里发现文档中没有看到它。

注意:我在 macOS 上,但 运行ning docker-machine ip default 没有做任何事情,所以不确定如何到达链接页面的底部和 docker 的新手。模仿自己的测试example。 运行 在 virtualenv -p python3 env 中不确定是否会影响它。

由于您在脚本中注释掉了 API 关键参数,请尝试使用 -config api.disablekey=true.

调用 zap 守护进程

docker run -p 8090:8090 -i owasp/zap2docker-stable zap.sh -daemon -port 8090 -host 0.0.0.0 -config api.disablekey=true

此外,您将需要禁用 ip 过滤 - 请参阅 here 以了解如何执行此操作的详细信息,基本上只需使用以下内容:

docker run -p 8090:8090 -i owasp/zap2docker-stable zap.sh -daemon -port 8090 -host 0.0.0.0 -config api.disablekey=true -config api.addrs.addr.name=.* -config api.addrs.addr.regex=true

小心,因为它允许从任何 ip 连接到 Zaproxy,这很好,而 运行 它在隔离的 docker 容器中。