macOS 上的 Wireshark 不解析 HTTP 数据包

Wireshark on macOS does not parse HTTP packets

我在 macOS High Sierra 上安装了 Wireshark,并在使用 CURL 对本地服务器进行 HTTP 调用时捕获了一些网络流量。 wireshark 中捕获的流量仅显示 TCP 数据包。在查看 TCP 数据包中的数据时,我可以看到 HTTP 数据包,但 Wireshark 无法将其识别为数据包协议。

有什么方法可以让它正确解析 HTTP 数据包?

这是一个示例捕获:

我的一个猜测是 Wireshark 仅将位于端口 80 上的数据包识别为 HTTP。如果是这样,是否有任何方法可以更改此设置?

P.S。这里不涉及 HTTPS,只是从客户端到 REST API.

的平面旧 HTTP

好的,问题解决了。 我的服务器暴露在端口 5000(这是默认的 Flask 端口)上。 事实证明,端口 5000 通常用于 IPA 数据包,这是一种 GSM over IP 协议。 Wireshark 显然使用端口号来确定数据包的类型,因此将其错误分类为 IPA 数据包。

一旦我将服务器移至另一个端口(例如 5001)- 问题就消失了。

P.S。有关详细信息,请参阅 https://osqa-ask.wireshark.org/questions/9240/data-which-has-been-sent-over-tcpip-has-been-recognized-by-wireshark-as-ipa-protocol

为了补充@MartanRubin 的回答,还可以向 WireShark 表明端口 5000 不是 GSM over IP。在 编辑 → 首选项 → 协议 → GSM over IP 从 "TCP port(s)" 字段中删除端口 5000:

要保留首选项,您还需要将 5000 添加到 HTTP 协议 "TCP port(s)" 字段。然后他们在重启后幸存下来(在自定义配置文件中测试)。但是请注意,当您打开 GSM over IP 协议的首选项时,5000 仍然存在,但没有效果。但是当我保存它时(单击确定按钮),我的 /home/user/.config/wireshark/profiles/CustomProfile/decode_as_entries 又变得一团糟,我需要在两个协议的 "TCP port(s)" 字段上重复该过程。一个违反直觉的 UI,我会说。