如果我在Wireshark中使用这个filter: http.request.method == "POST"并使用投票button投票表决堆栈交换问题,那么Wireshark捕获相应的POST请求。 我也可以在Chromesdebugging器中看到请求是POST。
然而,在另一个我试图检查的网站上,当我点击一个触发POST的表单button(并且Chromesdebugging器确认这是一个POST),那么Wireshark将捕获任何东西。
为什么会这样?
编辑:
感谢所有的提示。 最后,我确实使用Fiddler来检查从我的networking服务器发送的POST,这确实帮了我一些忙。 我没有提到它,但我的web服务器是在Ubuntu上本地运行的Jetty,我使用Apache HttpClient处理请求。 对于Java,如果你不使用HttpClient, 这个问题是有帮助的。 如果你是,那么检查这个问题了。
在任何一种情况下,仍然需要设置Fiddler来监视HTTPS连接,方法是在Tools – > Fiddler Options – > HTTPS – > Capture HTTPS CONNECTs
HTTPS将任何人在networking上侦听的消息内容encryption – 这正是你正在做的 – 所以它的工作如期。 任何在浏览器和networking服务器之间进行数据包捕获的人都会看到encryption的stream量。
Wireshark不是分析HTTPSstream量的最佳工具。 为此,您可以使用内置在浏览器中的debugging器,或者像Fiddler那样在您的计算机上作为代理服务器运行并解密HTTPSstream量。
Fiddler通过坐在中间做这个 – networking服务器与Fiddler进行HTTPS对话,并且浏览器与Fiddler进行HTTPS对话。 但提琴手能够解密这两个连接。 这当然会引发可怕的无效证书警告,除非您将Fiddler的CA证书添加到您的浏览器/操作系统。
Wireshark将工作,如果你有SSL私钥文件。 所以,如果你是在networking服务器端的东西, 加载你的SSL私钥到Wireshark ,它会解密你的stream量。 这只有当你有权访问私钥时才有效 – 你不能用这种方式解密到/从stackexchange的stream量,但是你可以用它来控制你的web服务器。
现在您已经澄清了从您的networking服务器到第三方的stream量,如果您在Linux或Mac上,我还有其他select: mitmproxy
无论是提琴手或mitmproxy应该能够做你的中间解密的人。 棘手的部分是让数据通过代理。 在Linux上,使用iptables相对容易 – mitmproxy给出了设置说明。 在Windows和Linux上,你应该可以使用Apache的mod_proxy ProxyRemote设置来将stream量引导到你的代理服务器。
这可能是因为对方正在使用HTTPS 。