Java

為什麼 Wireshark 不擷取某些 POST 請求?

  • August 14, 2014

如果我在 Wireshark 中使用此過濾器:http.request.method == "POST"並使用投票按鈕為堆棧交換問題投票,那麼 Wireshark 會擷取相應的 POST 請求。我還可以在 Chrome 調試器中看到請求是 POST。

但是,在我嘗試檢查的另一個站點上,當我點擊觸發 POST 的表單按鈕(並且 Chrome 調試器確認它是 POST)時,Wireshark 什麼也沒有擷取。

為什麼會這樣?

編輯:

感謝所有提示。最後,我確實使用 Fiddler 檢查了從我的網路伺服器發送的 POST,它確實幫助了我。我沒有提到它,但我的網路伺服器是在 Ubuntu 上本地執行的 Jetty,我正在使用 Apache HttpClient 來處理請求。對於 Java,如果您不使用 HttpClient,這個問題很有幫助。如果你是,然後檢查這個問題

在任何一種情況下,仍然需要設置 Fiddler 來監控 HTTPS 連接,方法是選中 Tools –> Fiddler Options –> HTTPS –> Capture HTTPS CONNECTs

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設置將流量定向到您的代理伺服器。

引用自:https://serverfault.com/questions/620227