美文网首页
使用tcpdump查看HTTP请求响应

使用tcpdump查看HTTP请求响应

作者: Maslino | 来源:发表于2016-11-20 14:07 被阅读10612次

    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请求就十分简单了。

    参考资料

    相关文章

      网友评论

          本文标题:使用tcpdump查看HTTP请求响应

          本文链接:https://www.haomeiwen.com/subject/rnqypttx.html