如何调试Websockets?

41

我希望监控WebSocket流量(例如查看客户端/服务器使用的协议版本)以进行调试。我该如何做? Wireshark 对于这样的任务似乎过于底层。 有建议吗?


顺便提一下,当前版本的Fiddler可以显示WebSocket流量。 - EricLaw
1
你只需要Chrome。更多细节请参考这个帖子:https://dev59.com/m2ox5IYBdhLWcg3wzng0#10525328。 - Peter Moskovits
我在以下链接中发布了有关使用Chrome和Wireshark记录WebSocket消息的详细信息:https://blogs.oracle.com/arungupta/entry/logging_websocket_frames_using_chrome - Arun Gupta
我认为Fiddler在调试WebSocket方面更易于使用。最近,我在CodeProject上撰写了一篇文章,向您展示如何使用Fiddler调试/检查WebSocket流量。http://www.codeproject.com/Articles/718660/Debug-Inspect-WebSocket-traffic-with-Fiddler - engineforce
4个回答

32

Wireshark听起来正是你想要的。WebSocket握手后很少有框架或结构(所以你需要低级别),即使有,wireshark也能解析并显示它的结构,可能已经具备这个功能。

个人而言,我经常使用tcpdump进行捕获,然后再使用wireshark解析数据。当你无法在想要捕获数据的设备上使用wireshark时(例如一个无头服务器),这种方法特别好用。例如:

sudo tcpdump -w /tmp/capture_data -s 8192 port 8000

或者,如果您对WebSockets服务器(或代理)具有控制权,则始终可以打印发送和接收的数据。请注意,由于websocket帧以'\x00'开头,因此要避免打印该字符,因为在许多语言中,'\x00'表示字符串的结尾。


9

如果您想查看实际发送和接收的数据,则最近的Chrome Canary和Chromium现在具有WebSocket消息框架检查功能。 您可以在此讨论中找到详细信息。


7

我认为你应该使用Wireshark

步骤

  • 打开Wireshark
  • 进入抓包并按照以下路径操作:抓包 > 接口 > 在适当的设备上开始抓包。
  • 在过滤器中编写规则 tcp.dstport == 你的WebSocket端口
  • 点击应用

您需要使用Wireshark 1.6.5或更高版本才能查看WebSocket数据包中的数据,请参见https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=6843。 - r3m0t

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接