2010-10-13 16 views
31

Chcę monitorować ruch websocket (jak sprawdzić wersję protokołu, którego używa klient/serwer) do celów debugowania. Jak miałbym to zrobić? Wireshark wydaje się zbyt niski poziom dla takiego zadania. Propozycje?Jak debugować Websockets?

+0

FWIW obecne wersje Skrzypek pokaże websocket ruchu. – EricLaw

+1

Wszystko czego potrzebujesz to Chrome. Więcej informacji na ten temat: http://stackoverflow.com/questions/8952773/chrome-web-inspector-web-socket-debugging/10525328#10525328. –

+0

Opublikowałem szczegóły dotyczące logowania wiadomości WebSocket przy użyciu Chrome i Wireshark na: https://blogs.oracle.com/arungupta/entry/logging_websocket_frames_using_chrome –

Odpowiedz

22

Wireshark Brzmi jak to, co chcesz. Po uzgadnianiu jest bardzo mało ramek lub struktur dla WebSockets (więc chcesz niskiego poziomu), a nawet gdyby był, wireshark wkrótce (lub już) będzie miał możliwość przeanalizowania go i pokazania struktury.

Osobiście często przechwytuję za pomocą tcpdump, a następnie parsuję dane później za pomocą wireshark. Jest to szczególnie miłe, gdy możesz nie być w stanie uruchomić urządzenia, na którym chcesz przechwycić dane (tj. Serwer bez serwerów). Na przykład:

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

Jeśli masz kontrolę nad serwerem WebSockets (lub proxy), możesz zawsze wydrukować dane wysyłania i odbierania. Zauważ, że ponieważ ramki websocket zaczynają się od '\ x00', będziesz chciał uniknąć drukowania, ponieważ w wielu językach \ x00 oznacza koniec łańcucha.

4

Jeśli szukasz rzeczywistych danych wysłanych i odebranych, najnowsze Chrome Canary i Chromium mają teraz funkcję kontroli ramki wiadomości WebSocket. Znajdziesz szczegóły w this thread.

+1

A teraz działa również w zwykłym Chrome ... –

+0

To nie działa dla Binary Websocket Frames – ShaBANG

6

myślę, że należy użyć Wireshark

Steps

  • Otwarte wireshark
  • Przejdź do przechwytywania i postępuj miech ścieżkę: ładujące> interfejsy> rozpocząć przechwytywanie w odpowiednim urządzeniu.
  • Zasady pisania w filtrze tcp.dstport == your_websoket_port
  • Hit zastosować
+0

Potrzebujesz Wireshark 1.6.5 lub nowszy, aby zobaczyć dane w pakietach WebSocket, zobacz https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=6843 – r3m0t