说到抓包分析, 最简单的办法莫过于在客户端直接安装一个 Wireshark 或者 Fiddler 了, 但是有时候由于客户端开发人员 (可能是第三方) 知识欠缺或者其它一些原因, 无法顺利的在客户端进行抓包分析, 这种情况下怎么办呢?
本文中, 我们将给大家介绍在服务端进行抓包分析的方法, 使用 tcpdump 抓包, 配合 Wireshark 对 HTTP 请求进行分析, 非常简单有效.
本文将会持续修正和更新, 最新内容请参考我的 GITHUB https://github.com/mylxsw 上的 程序猿成长计划 https://github.com/mylxsw/growing-up 项目, 欢迎 Star, 更多精彩内容请 follow me https://github.com/mylxsw .
使用 tcpdump 在服务器抓包
在服务端进行抓包分析, 使用 tcpdump
tcpdump -tttt -s0 -X -vv tcp port 8080 -w captcha.cap
这里的参数是这样的
-tttt 输出最大程度可读的时间戳
-s0 指定每一个包捕获的长度, 单位是 byte, 使用 - s0 可以捕获整个包的内容
-X 以 hex 和 ASCII 两种形式显示包的内容
-vv 显示更加多的包信息
tcp 指我们只捕获 tcp 流量
port 8080 指我们只捕获端口 8080 的流量
-w captcha.cap 指定捕获的流量结果输出到 captcha.cap 文件, 便于分析使用
关于 tcpdump 更加高级的用法, 可以参考 tcpdump 简明教程 https://github.com/mylxsw/growing-up/blob/master/doc/tcpdump简明教程.md
上述命令会保持运行, 并将结果输出到 captcha.cap 文件中, 在这个过程中, 所有访问 8080 端口的 TCP 流量都会被捕获. 当请求结束之后, 我们可以使用 Ctrl+C 中断该命令的执行, 这时候在当前目录下就可以看到生成了一个名为 captcha.cap 的文件.
使用 Wireshark 分析
接下来我们从服务器上下载这个 captcha.cap 文件到自己电脑上, 使用 Wireshark https://www.wireshark.org/#download 打开
最简单的下载方法当然是使用 scp 了
scp account@ip:/path/to/captcha.cap .
因为我们需要分析 http 包, 直接打开看显然无法区分我们需要的内容, 因此, 可以在 filter 栏中添加过滤规则 http, 这样就可以只展示 http 流量了
当请求比较多的时候, 我们还是无法快速区分出哪个是指定客户端的访问请求, 好在强大的 filter 可以组合使用
http and ip.src == 192.168.0.65
上面这个 filter 将会过滤出所有来自客户端 192.168.0.65 的 http 流量.
找到我们需要分析的 http 请求了, 那么怎么查看请求响应的内容呢? 也很简单, 只需要选中这个请求, 右键 Follow - HTTP Stream:
在新开的窗口中, 我们就可以看到这个请求的所有内容了
总结
tcpdump 和 wireshark 都是非常强大的网络分析工具, 其使用用途不仅仅局限于 http 请求抓包, 借助这两个工具, 我们可以对所有的网络流量, 网络协议进行分析. 本文只是针对最常见的 http 请求抓包方法做了一个简单的讲解, 实际上配合 wireshark 强大的 filter 规则, 我们可以更加精准的对流量进行过滤, 分析.
本文将会持续修正和更新, 最新内容请参考我的 GITHUB https://github.com/mylxsw 上的 程序猿成长计划 https://github.com/mylxsw/growing-up 项目, 欢迎 Star, 更多精彩内容请 follow me https://github.com/mylxsw .
来源: https://segmentfault.com/a/1190000015648433