AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 504431
Accepted
Adam Matan
Adam Matan
Asked: 2013-05-03 03:41:53 +0800 CST2013-05-03 03:41:53 +0800 CST 2013-05-03 03:41:53 +0800 CST

使用 tcpdump 的 http 标头的人类可读格式

  • 772

我想在 Linux 机器上查看从 Apache(侦听端口 80)发送到 Tomcat(端口 4080)的 HTTP 标头。

根据维基百科,

标头字段是明文字符串格式的以冒号分隔的名称-值对。

我尝试了以下tcpdump命令的一些变体:

$ sudo tcpdump -lnX dst port 4080 -c 10

11:29:28.605894 IP SOME_IP.33273 > SOME_IP.4080: P 0:49(49) ack 1 win 23 <nop,nop,timestamp 1191760962 509391143>
    0x0000:  4500 0065 3a9f 4000 3f06 0084 628a 9ec4  E..e:.@.?...b...
    0x0010:  628a 9c97 81f9 0ff0 9e87 eee0 144b 90e1  b............K..
    0x0020:  8018 0017 fb43 0000 0101 080a 4708 d442  .....C......G..B
    0x0030:  1e5c b127 4845 4144 202f 6461 7070 6572  .\.'HEAD./dapper
    0x0040:  5f73 6572 7669 6e67 2f41 644d 6f6e 6b65  _serving/AdMonke
    0x0050:  793f                                     y?

结果总是一样的 - 乱码和英文单词(例如HEAD)的奇怪组合。

如何以人类可读的格式查看标题?

http
  • 3 3 个回答
  • 199903 Views

3 个回答

  • Voted
  1. Best Answer
    Kibber
    2014-10-04T14:37:43+08:002014-10-04T14:37:43+08:00

    这是我想出的用于显示请求和响应 HTTP 标头的单行代码tcpdump(它也适用于您的情况):

    sudo tcpdump -A -s 10240 'tcp port 4080 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' | egrep --line-buffered "^........(GET |HTTP\/|POST |HEAD )|^[A-Za-z0-9-]+: " | sed -r 's/^........(GET |HTTP\/|POST |HEAD )/\n\1/g'
    

    它限制在 10Kb 处截断数据包并且只知道 GET、POST 和 HEAD 命令,但在大多数情况下这应该足够了。

    编辑:修改它以消除每一步的缓冲区,使其更具响应性。不过现在需要 Perl 和 stdbuf,所以如果您没有这些,请使用原始版本: 编辑:将脚本端口目标从 80 更改为 4080,以实际监听已经通过 apache 的流量,而不是直接到达端口的外部流量80:

    sudo stdbuf -oL -eL /usr/sbin/tcpdump -A -s 10240 "tcp port 4080 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)" | egrep -a --line-buffered ".+(GET |HTTP\/|POST )|^[A-Za-z0-9-]+: " | perl -nle 'BEGIN{$|=1} { s/.*?(GET |HTTP\/[0-9.]* |POST )/\n$1/g; print }'
    

    一些解释:

    • sudo stdbuf -oL -eL 使 tcpdump 运行行缓冲
    • tcpdump 魔术过滤器在此处详细说明:https ://stackoverflow.com/questions/11757477/understanding-tcpdump-filter-bit-masking
    • grep 正在寻找任何带有 GET、HTTP/ 或 POST 的行;或任何看起来像标题的行(字母和数字后跟冒号)
    • BEGIN{$|=1}导致 perl 运行行缓冲
    • s/.*?(GET |HTTP/[0-9.]* |POST )/\n$1/g在每个新请求或响应开始之前添加一个换行符
    • 112
  2. Flup
    2013-05-03T03:48:39+08:002013-05-03T03:48:39+08:00

    您可以通过使用获得接近您想要的东西-A,例如

    E....c@.@...
    .....Ng.d.P..Ch.).....s.......
    .A...u.BHEAD / HTTP/1.1
    User-Agent: curl/7.29.0
    Host: www.google.com
    Accept: */*
    

    请记住使用-s 0以确保您获得整个数据包。

    或者,您可以使用wireshark交互方式查看标题。

    • 22
  3. Danila Ladner
    2013-05-03T03:51:36+08:002013-05-03T03:51:36+08:00

    尝试使用http://justniffer.sourceforge.net/ 它是更好的工具或带有“跟随 TCP 流”选项的 Wireshark,有比 tcpdump 更好的选项来查看标头(请求/响应)

    • 0

相关问题

  • 设置 http 代理以使用 Web 界面?

  • 无法连接到 Ubuntu Desktop 中的端口 80 或 VMWare Workstation 6.52 中的 Server 9.04

  • IIS 7.5 (Windows 7) - HTTP 错误 401.3 - 未经授权

  • 为什么有些网站的网址中没有“www”就无法显示?[关闭]

  • Tomcat 6 HTTP 日志滚动和清除

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve