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

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

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

但是,在我尝试检查的另一个站点上,当我单击触发 POST 的表单按钮(并且 Chromes 调试器确认它是 POST)时,Wireshark 什么也捕获不到。

为什么会这样?

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

无论哪种情况,仍需要设置 Fiddler 来监控 HTTPS 连接,方法是选中“工具”-->“Fiddler 选项”-->“HTTPS”-->“捕获 HTTPS 连接”

答案1

HTTPS 会加密任何窥探网络的人的消息内容(这正是您正在做的事情),因此它按预期工作。在浏览器和 Web 服务器之间进行数据包捕获的任何人都只能看到加密的流量。

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

Fiddler 的实现方式是居于中间位置 - Web 服务器与 Fiddler 进行 HTTPS 对话,而您的浏览器与 Fiddler 进行 HTTPS 对话。但 Fiddler 能够解密这两个连接。除非您将 Fiddler 的 CA 证书添加到您的浏览器/操作系统中,否则这当然会引发可怕的无效证书警告。

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

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

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

答案2

可能是因为对方正在使用HTTPS

相关内容