为什么 Wireshark 不捕获某些 POST 请求?

RTF*_*RTF 4 java wireshark

如果我在 Wireshark: 中使用此过滤器http.request.method == "POST"并使用投票按钮为堆栈交换问题投票,那么 Wireshark 会捕获相应的 POST 请求。我还可以在 Chromes 调试器中看到请求是 POST。

但是,在我尝试检查的另一个站点上,当我单击触发 POST 的表单按钮(并且 Chromes 调试器确认它是 POST)时,Wireshark 没有捕获任何内容。

为什么会这样?

编辑:
感谢所有提示。最终,我确实使用 Fiddler 检查了从我的网络服务器发送的 POST,它确实帮助了我。我没有提到它,但我的网络服务器是在 Ubuntu 上本地运行的 Jetty,我使用 Apache HttpClient 来处理请求。对于 Java,如果您不使用 HttpClient,这个问题很有帮助。如果你是,然后检查这个问题

在任何一种情况下,Fiddler 仍然需要通过检查工具 --> Fiddler 选项 --> HTTPS --> 捕获 HTTPS CONNECTs 中的选项来设置以监视 HTTPS 连接

Gra*_*ant 9

HTTPS 加密来自任何在网络上窥探的人的消息内容 - 这正是您正在做的 - 所以它按预期工作。任何在浏览器和网络服务器之间进行数据包捕获的人都只会看到加密的流量。

Wireshark 不是分析 HTTPS 流量的最佳工具。为此,您可以使用浏览器内置的调试器,或类似Fiddler 之类的东西,它在您的机器上作为代理服务器运行并解密 HTTPS 流量。

Fiddler 通过坐在中间来做到这一点 - 网络服务器正在与 Fiddler 进行 HTTPS 对话,而您的浏览器正在与 Fiddler 进行 HTTPS 对话。但是 Fiddler 能够解密这两个连接。这当然会引发可怕的无效证书警告,除非您将 Fiddler 的 CA 证书添加到浏览器/操作系统。

如果您有 SSL 私钥文件,Wireshark 将起作用。因此,如果您在网络服务器端,请将您的 SSL 私钥加载到 Wireshark 中,它会为您解密流量。这仅在您有权访问私钥时才有效 - 您将无法以这种方式解密进出 stackexchange 的流量,但您可以将其用于您控制的 Web 服务器。

现在您已经明确了流量是从您的网络服务器到第三方,如果您使用的是 Linux 或 Mac,我为您提供了另一种选择:mitmproxy

fiddler 或 mitmproxy 都应该能够为您进行中间人解密。棘手的部分是让数据通过代理。在 linux 上,使用 iptables 相对容易 - mitmproxy 为此提供了设置说明。在 Windows 和 Linux 上,您应该能够使用Apache 的 mod_proxy ProxyRemote设置将流量定向到您的代理服务器。