wireshark 调试 https/http2和grpc流量

本文浏览器以 Chrom 为例

平常需要抓包的场景比较少,记录一下防止下次忘记配置

1. 解析 TLS

在本地创建用于保存 ssl logfile 的文件(文件可以存放到任意位置), 并添加到环境变量中

touch ~/tls/sslkeylog.log
echo "export SSLKEYLOGFILE=~/tls/sslkeylog.log" >> ~/.zshrc
source ~/.zshrc

接下来在 wireshark 中配置 ssl log

wireshark 调试 https/http2和grpc流量

接着通过终端启动 chrom (为了确保能读到 SSLKEYLOGFILE 环境变量)

open /Applications/Google\ Chrome.app

然后随便访问 https 的网址 例如:豆瓣 https://www.douban.com

找到 豆瓣的服务器 IP 地址,方便我们在一堆网络传输中找到需要验证的请求

wireshark 调试 https/http2和grpc流量

wireshark 调试 https/http2和grpc流量

可以看到TLS流量解析成功了!

HTTP2

根据上面的配置, http2 也是可以查看的到的。因为 HTTP2 也工作在 TLS 上

随便找个 http2 的网站,以阿里云为例 https://www.aliyun.com/

wireshark 调试 https/http2和grpc流量

wireshark 调试 https/http2和grpc流量

wireshark 调试 https/http2和grpc流量

wireshark 调试 https/http2和grpc流量

可以看到 http2 和 http 协议的区别, http2 采用多路复用, 返回页面进行了流式传输

GRPC

在开发过程中, 除了 http , 还有 rpc 方式可以进行数据传输, 比较流行的则是 GRPC, 接下来看看 wireshark 如何调试 GRPC

首先根据 GRPC 官网的例子, 启动一个 hello server, 然后使用 hello client 进行调用一次

wireshark 调试 https/http2和grpc流量

首先在菜单栏配置一下 proto 文件的位置,方便 wireshark 能读取这些 rpc 定义的字段

wireshark 调试 https/http2和grpc流量

接下来配置一下解析的端口

wireshark 调试 https/http2和grpc流量

wireshark 调试 https/http2和grpc流量

然后调用一次 grpc server go run greeter_client/main.go

可以看到 post 过去的字段, 以及返回的字段wireshark 调试 https/http2和grpc流量

wireshark 调试 https/http2和grpc流量

随便修改下代码继续验证

wireshark 调试 https/http2和grpc流量

wireshark 调试 https/http2和grpc流量

wireshark 调试 https/http2和grpc流量

上一篇:netty系列之:使用netty实现支持http2的服务器


下一篇:javaweb之HTTP(一)