Jak debugować Websockets?
Chcę monitorować ruch websocket (np. sprawdzić, jakiej wersji protokołu używa klient / serwer) do celów debugowania. Jak miałbym to zrobić? Wireshark wydaje się zbyt niski poziom jak na takie zadanie. Sugestie?
4 answers
Wireshark brzmi jak to, czego właściwie chcesz. Jest bardzo mało ramek lub struktury do WebSockets po uścisku dłoni (więc chcesz niskiego poziomu) i nawet jeśli tak było, wireshark wkrótce (lub już) będzie miał możliwość parsowania go i pokazać strukturę.
Osobiście często przechwytywam za pomocą tcpdump, a następnie analizuję dane za pomocą wireshark. Jest to szczególnie miłe, gdy możesz nie być w stanie wireshark na urządzeniu, na którym chcesz przechwycić dane (np. serwer bez głów). Na przykład:
sudo tcpdump -w /tmp/capture_data -s 8192 port 8000
Alternatywnie, jeśli masz kontrolę nad serwerem WebSockets (lub proxy), zawsze możesz wydrukować dane wysyłania i odbierania. Zauważ, że ponieważ ramki websocket zaczynają się od '\x00' będą chciały uniknąć drukowania, ponieważ w wielu językach' \x00 ' oznacza koniec łańcucha.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-22 15:43:08
Jeśli szukasz rzeczywistych danych wysyłanych i odbieranych, najnowsze Chrome Canary i Chromium mają teraz funkcję kontroli ramki wiadomości WebSocket. Szczegóły znajdziesz w w tym wątku .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:17:55
Myślę, że powinieneś użyć Wireshark
Kroki
- Otwórz wireshark
- przejdź do przechwytywania i podążaj ścieżką poniżej: przechwytywanie > interfejsy > rozpocznij przechwytywanie w odpowiednim urządzeniu.
- Write rules in filter
tcp.dstport == your_websoket_port
- Hit zastosuj
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-29 15:40:31
Dla prostej rzeczy, wireshark jest zbyt skomplikowane, chciałem sprawdzić tylko, czy połączenie można ustanowić, czy nie. Following Chrome plugin "Simple Web-socket (link: https://chrome.google.com/webstore/detail/simple-websocket-client/pfdhoblngboilpfeibdedpjgfnlcodoo?hl=en)" praca jak urok. Patrz zdjęcie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-07 11:08:36