首先下载安装 https://www.wireshark.org/download.html
wireshark 的工作过程为:
1、设置要捕获哪个网卡上的流量
捕获 --> 选项
首先你得知道当前机器的IP,然后就很容易找到是哪个网卡了。
2、设置要捕获哪些内容
捕获 --> 捕获过滤器
这里我要捕获一个http请求,它是HTTP的80端口。
设置好这两步它就会开始捕获数据了。
3、设置显示过滤器
设置好捕获过滤器之后,捕获的内容可能依然很多,这个时候就需要设置一下要显示哪些内容了,也就是显示过滤器。
输入的内容http and ip.dst == xxxx
要遵循一定的语法。
使用 and
和 or
来连接。
比较操作符有:等于==
、不等于!=
、大于>
、小于<
、大于等于>=
、小于等于<=
常用的有
表达式 | 含义 |
---|---|
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流
就可以查到到请求信息和响应信息的全部内容。
5、修改显示的时间格式
上面的列表中第二列为请求发出的时间。
视图 --> 时间显示格式 --> 日期和时间
6、捕获https的请求
首先设置捕获过滤器为tcp,然后输入显示过滤器ip.dst==47.104.146.209 and tcp.dstport==443
。发现列出的信息是加密的,这个时候是需要配置证书的,要知道浏览器中是包含证书的。
当系统环境变量中存在SSLKEYLOGFILE
这个变量的时候,chrome与firefox在访问https网站的时候会将密钥写入这个环境变量中,如果在wireshark中设置一下,这样就可以解析https的流量了。
编辑 --> 首选项 --> Protocals --> TLS
比如我设置 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/
。
从浏览器的调试窗口也看到百度首页使用的是http/1.1
协议。
来测试一个基于 http2 的 https 接口。显示过滤器为http2
。
发现请求和响应分开列出来了,所以响应的目标IP是我本机IP
点击200 OK
这一条,点击Data
就能看到响应的内容了。或者右键200 OK
,选中追踪流,http2 stream 也可以看到内容
我们来测试一下 post方式的接口。
右键追踪流,可以看到请求参数和响应结果。