杂项|使用 wireshark 抓包,https,http2

首先下载安装 https://www.wireshark.org/download.html
wireshark 的工作过程为:
1、设置要捕获哪个网卡上的流量 捕获 --> 选项
首先你得知道当前机器的IP,然后就很容易找到是哪个网卡了。
杂项|使用 wireshark 抓包,https,http2
文章图片

2、设置要捕获哪些内容 捕获 --> 捕获过滤器
这里我要捕获一个http请求,它是HTTP的80端口。
杂项|使用 wireshark 抓包,https,http2
文章图片

设置好这两步它就会开始捕获数据了。
3、设置显示过滤器 设置好捕获过滤器之后,捕获的内容可能依然很多,这个时候就需要设置一下要显示哪些内容了,也就是显示过滤器。
杂项|使用 wireshark 抓包,https,http2
文章图片

输入的内容http and ip.dst == xxxx要遵循一定的语法。
使用 andor 来连接。
比较操作符有:等于== 、不等于!=、大于>、小于<、大于等于>= 、小于等于<=
常用的有

表达式 含义
http 只查看http请求
ip.dst == 192.168.2.157 请求的目标ip地址
tcp.dstport == 80 目标端口
http.request.method == GET http请求方式
http.request.uri == "/read5/heartbeat" 请求uri
其次可以点击输入框左边的小图标保存下来。
4、追踪流 比如,我要查看上面某个http请求的具体内容,将其选中,追踪流,http流
杂项|使用 wireshark 抓包,https,http2
文章图片

就可以查到到请求信息和响应信息的全部内容。
5、修改显示的时间格式 上面的列表中第二列为请求发出的时间。
视图 --> 时间显示格式 --> 日期和时间
杂项|使用 wireshark 抓包,https,http2
文章图片

6、捕获https的请求 首先设置捕获过滤器为tcp,然后输入显示过滤器ip.dst==47.104.146.209 and tcp.dstport==443。发现列出的信息是加密的,这个时候是需要配置证书的,要知道浏览器中是包含证书的。
当系统环境变量中存在SSLKEYLOGFILE这个变量的时候,chrome与firefox在访问https网站的时候会将密钥写入这个环境变量中,如果在wireshark中设置一下,这样就可以解析https的流量了。
编辑 --> 首选项 --> Protocals --> TLS
杂项|使用 wireshark 抓包,https,http2
文章图片

比如我设置 SSLKEYLOGFILE=D:\sslkeylog\sslkey.log,这个文件要手动创建。
重启浏览器
注:不抓包时记得把环境变量删掉,以避免性能浪费和安全性问题
同样都是HTTPS,有的使用的是HTTP/1.1;有的使用的是HTTP/2协议,分别使用http和http2来过滤,如何知道使用的是什么协议呢,打开浏览器调试,右键名称,在弹出的下拉框中勾上协议。
目前都使用的是TLS,它是SSL的升级版本。
https://www.baidu.com 为例,配置了TLS文件之前捕获的是Application Data,啥也看不到,设置了之后,就可以看到具体信息了。
显示过滤器tcp.port==443 and ip.dst==14.215.177.38,然后访问https://www.baidu.com/
杂项|使用 wireshark 抓包,https,http2
文章图片

从浏览器的调试窗口也看到百度首页使用的是http/1.1协议。
来测试一个基于 http2 的 https 接口。显示过滤器为http2
杂项|使用 wireshark 抓包,https,http2
文章图片

发现请求和响应分开列出来了,所以响应的目标IP是我本机IP
【杂项|使用 wireshark 抓包,https,http2】点击200 OK这一条,点击Data就能看到响应的内容了。或者右键200 OK,选中追踪流,http2 stream 也可以看到内容
杂项|使用 wireshark 抓包,https,http2
文章图片

我们来测试一下 post方式的接口。
杂项|使用 wireshark 抓包,https,http2
文章图片

右键追踪流,可以看到请求参数和响应结果。
杂项|使用 wireshark 抓包,https,http2
文章图片

    推荐阅读