使用tcpdump查看HTTP请求响应

tcpdump安装

在Ubuntu/Debian系统上,执行如下命令安装tcpdump工具:

sudo apt-get install tcpdump

在CentOS系统上,执行如下命令安装tcpdump工具:

sudo yum install tcpdump

安装完tcpdump后,就可以使用man命令查看tcpdump的文档了。如果想直接看看tcpdump的一些使用例子,执行:

man tcpdump | less -Ip examples

tcpdump查看HTTP流量

查看HTTP GET请求

sudo tcpdump -s 0 -A 'tcp dst port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'

查看HTTP POST请求

sudo tcpdump -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'

查看HTTP请求响应头以及数据

sudo tcpdump -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
sudo tcpdump -X -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

后语

要理解上述tcpdump过滤器中的位操作,需要了解TCP数据包的构造。后面的参考资料中给出了一个分析例子。

笔者有过这样的经历,接手一个遗留的软件项目,发现各个API接口参数没有文档记录,而代码中的注释说明是过时的!当接手这种项目开始重构的时候,需要理解代码逻辑,如果能知道线上实际运行中的API请求参数是什么样子的,将有助于理解。笔者曾尝试修改Nginx配置文件来记录HTTP POST请求信息,却没有发现一个简单有效的方案。使用上述tcpdump命令来捕获HTTP POST请求就十分简单了。

参考资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,185评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,143评论 25 709
  • 22年12月更新:个人网站关停,如果仍旧对旧教程有兴趣参考 Github 的markdown内容[https://...
    tangyefei阅读 35,276评论 22 257
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    保川阅读 5,992评论 1 13
  • 密云遮住了阳光, 清风吹来凄凉, 落叶粘在路面 稀疏地堆积—— 我恋着这秋天的雨。 脚步依旧的匆匆, 脸庞多了些朦...
    沂河生阅读 228评论 0 4