如何使用Wireshark抓取HTTP2報文?


由於主流瀏覽器都只支持HTTP/2 Over TLS,也就是說當前HTTP/2網站都使用了HTTPS,數據傳輸都經過了SSL加密。
所以默認情況下,Wireshark抓到的包是這樣的,SSL層之上的協議細節完全看不到

Wireshark 的抓包原理是直接讀取並分析網卡數據,要想讓它解密 HTTPS 流量,有兩個辦法:
1)如果你擁有 HTTPS 網站的加密私鑰,可以用來解密這個網站的加密流量;
2)某些瀏覽器支持將 TLS 會話中使用的對稱密鑰保存在外部文件中,可供 Wireshark 加密使用。

Firefox 和 Chrome 都支持生成上述第二種方式的文件,具體格式見這里:NSS Key Log Format
但 Firefox 和 Chrome 只會在系統環境變量中存在 SSLKEYLOGFILE 路徑時才會生成它,先來加上這個環境變量(以 OSX 為例):

# 新建sslkeylog.log文件
mkdir ~/tls && touch ~/tls/sslkeylog.log
# 添加環境變量
export SSLKEYLOGFILE=~/tls/sslkeylog.log

接着,在 Wireshark 的 SSL 配置面板的 「(Pre)-Master-Secret log filename」選項中這個文件選上。如下圖:

通過終端啟動 Firefox 或 Chrome(確保能讀取到環境變量):

open /Applications/Google\ Chrome.app

啟動chrome后訪問http2網站抓包結果如圖

已經可以看到http2請求的響應體了

參考:
使用 Wireshark 調試 HTTP/2 流量


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM