2010-10-13 31 views
31

Voglio monitorare il traffico websocket (come per vedere quale versione del protocollo sta usando il client/server) per scopi di debug. Come potrei fare questo? Wireshark sembra un livello troppo basso per un simile compito. Suggerimenti?Come eseguire il debug di Websockets?

+0

FWIW, le attuali versioni di Fiddler vi mostrerà websocket traffico. – EricLaw

+1

Tutto ciò di cui hai bisogno è Chrome. Maggiori dettagli su questa discussione: http://stackoverflow.com/questions/8952773/chrome-web-inspector-web-socket-debugging/10525328#10525328. –

+0

Ho postato i dettagli sulla registrazione dei messaggi WebSocket utilizzando Chrome e Wireshark all'indirizzo: https://blogs.oracle.com/arungupta/entry/logging_websocket_frames_using_chrome –

risposta

22

Wireshark suona come quello che vuoi in realtà. C'è un piccolo framing o struttura per WebSockets dopo l'handshake (quindi vuoi un basso livello) e anche se ci fosse, wireshark sarebbe presto (o già) in grado di analizzarlo e mostrarti la struttura.

Personalmente, spesso acquisisco con tcpdump e successivamente analizzo i dati utilizzando wireshark. Ciò è particolarmente utile quando potresti non essere in grado di eseguire il wirehark sul dispositivo in cui desideri acquisire i dati (ad esempio un server headless). Per esempio:

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

In alternativa, se si ha il controllo del server WebSockets (o proxy) si può sempre stampare l'invio e la ricezione di dati. Si noti che poiché i frame websocket iniziano con '\ x00', si vuole evitare di stamparli poiché in molte lingue '\ x00' indica la fine della stringa.

4

Se stai cercando i dati effettivi inviati e ricevuti, i recenti Chrome Canary e Chromium hanno ora la funzione di ispezione dei telegrammi WebSocket. I dettagli sono disponibili in this thread.

+1

E ora funziona anche in Chrome semplice ... –

+0

Questo non funziona con i frame Websocket binari – ShaBANG

6

Credo che si dovrebbe usare Wireshark

Passi

  • Aprire Wireshark
  • Vai a catturare e seguire il percorso sotto: cattura> interfacce> avviare l'acquisizione nel dispositivo appropriato.
  • regole di scrittura di filtro tcp.dstport == your_websoket_port
  • Hit applicano
+0

È necessario Wireshark 1.6.5 o successivo per vedere i dati nei pacchetti WebSocket, vedere https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=6843 – r3m0t