如何在fiddler中查看到Windows上的docker容器的http请求?

问题描述 投票:0回答:3

我在 Windows 配置上使用默认的 docker,并运行配置这样的应用程序:

docker run -d -p 8080:80 --name openproject ...

我可以使用浏览器访问应用程序,但在 fiddler 中我看不到 docker 容器的流量。我看到其他流量,因此我假设浏览器具有正确的代理设置。

我已经在docker设置中将代理设置为fiddler(http://127.0.0.1:8888),但fiddler仍然看不到容器中的任何内容。

http docker fiddler
3个回答
5
投票

如果您想查看退出容器的流量,请将其添加到您的 Dockerfile 中:

ENV http_proxy "http://host.docker.internal:8888/"
ENV https_proxy "http://host.docker.internal:8888/"

Linux 容器中的 http_proxy 和 https_proxy 环境变量应为小写,这与某些 Docker 文档的说法相反 (https://unix.stackexchange.com/questions/212894/whats-the-right-format-for- the-http-proxy-environment-variable-caps-or-no-ca)

host.docker.internal 将您快捷地指向主机使用的内部 IP 地址 (https://docs.docker.com/docker-for-windows/networking/)。

端口 8888 是 Fiddler 在主机中监听的端口。 (8888 是默认值。)


2
投票

您可以通过查找 Docker 主机(在 Hyper-V 上运行的虚拟机)的 IP 地址来做到这一点。只需在命令 shell 上运行“ipconfig”即可。

默认IP地址可能是10.0.75.1(至少在我的机器上是这样)。

因此,不要使用 http://localhost:8080 浏览到 http://10.0.75.1:8080,fiddler 将获取流量。


0
投票

就我而言,设置

http_proxy
env。不起作用。 HTTPS 流量仍然是加密的,并在 Fiddler 中标记为
Tunnel to

经过简短分析,似乎无法解密来自 Docker 的 HTTPS 流量。

解决方案是将fiddler根证书导入到Docker容器中:

  1. 在 Fiddler 选项中标记“捕获 HTTPS CONNECT”和“解密 HTTPS 流量”选项

  2. 导出根证书

  3. 将证书复制到 docker 容器 CA 存储中。

    docker cp C:\Users\user-name\Desktop\FiddlerRoot.cer your-container- 
    id:/usr/local/share/ca-certificates/fiddlerPublicCert.cer
    
  4. 在正在运行的容器中安装 CA 证书。

    docker exec -u root -it your-container- 
    id update-ca-certificates
    
  5. Voilà,从 docker 容器中解密数据:

© www.soinside.com 2019 - 2024. All rights reserved.