web-dev-qa-db-ja.com

WebSocketをデバッグする方法は?

デバッグの目的で、WebSocketトラフィックを監視したい(クライアント/サーバーが使用しているプロトコルのバージョンを確認したい)。これを行うにはどうすればよいですか? Wiresharkは、このようなタスクにはレベルが低すぎるようです。提案?

36
Bain Markev

Wireshark 実際に欲しいもののように聞こえます。ハンドシェイク後のWebSocketへのフレーミングまたは構造はほとんどないため(低レベルが必要なため)、たとえあったとしても、wiresharkはすぐに(または既に)解析して構造を表示することができます。

個人的には、tcpdumpでキャプチャして、wiresharkを使用して後でデータを解析することがよくあります。これは、データをキャプチャするデバイス(つまり、ヘッドレスサーバー)でWiresharkができない場合に特に便利です。例えば:

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

あるいは、WebSocketサーバー(またはプロキシ)を制御できる場合は、常に送受信データを印刷できます。 WebSocketフレームは '\ x00'で始まるので、多くの言語では '\ x00'は文字列の終わりを意味するため、印刷を避けたいことに注意してください。

28
kanaka

送受信された実際のデータを探している場合は、最近のChrome CanaryとChromiumにWebSocketメッセージフレーム検査機能が追加されました。詳細は this thread にあります。

9
Peter Moskovits

Wiresharkを使用する必要があると思います

手順

  • ワイヤーシャークを開く
  • キャプチャに移動し、次のパスに従います:キャプチャ>インターフェイス>適切なデバイスでキャプチャを開始します。
  • フィルターにルールを記述tcp.dstport == your_websoket_port
  • ヒット適用
7
Hitul Mistry

簡単に言うと、wiresharkは複雑すぎます。接続を確立できるかどうかだけを確認したいと思いました。 Chrome plugin "Simple Web-socket(link: https://chrome.google.com/webstore/detail/simple-websocket-client/pfdhoblngboilpfeibdedpjgfnlcodoo?hl=en ) "チャームのように機能します。画像を参照してください。

https://lh3.googleusercontent.com/bEHoKg3ijfjaE8-RWTONDBZolc3tP2mLbyWanolCfLmpTHUyYPMSD5I4hKBfi81D2hVpVH_BfQ=w640-h400-e365

0
Shantu