Chrome에서 WebSocket 디버깅


213

WebSocket을 통과하는 "트래픽"을 볼 수있는 방법이나 확장이 있습니까? 디버깅 목적으로 클라이언트 및 서버 요청 / 응답을보고 싶습니다.

답변:


250

Chrome 개발자 도구는 이제 WebSocket 프레임을 나열하고 프레임이 바이너리가 아닌 경우 데이터를 검사 할 수 있습니다.

방법:

  1. Chrome 개발자 도구 시작
  2. 페이지를로드하고 WebSocket 연결을 시작하십시오
  3. 네트워크 탭을 클릭하십시오 .
  4. 왼쪽의 목록에서 WebSocket 연결 을 선택하십시오 ( "101 스위칭 프로토콜"상태가 됨).
  5. 메시지 하위 탭을 클릭 하십시오. 이진 프레임은 길이와 타임 스탬프와 함께 표시되며 마스크 여부를 나타냅니다. 텍스트 프레임에는 페이로드 컨텐츠도 포함됩니다.

WebSocket 연결이 이진 프레임을 사용하는 경우 Wireshark를 사용하여 연결을 디버깅 할 수 있습니다. Wireshark 1.8.0 은 WebSockets에 대한 dissector 및 필터링 지원을 추가했습니다. 이 다른 답변 에서 대안을 찾을 수 있습니다 .


1
Wireshark를 사용하여이를 수행하는 방법을 알고 있습니까? 나는 그것을 실제로 사용한 적이 없으며 모든 네트워크 트래픽을 보여주고 원시 패킷을 보여줍니다.
mellowsoon

2
캡처 필터를 사용하여 캡처를 단일 포트로 제한 할 수 있습니다 . 또는 캡처 한 후 세션의 일부인 캡처 된 프레임을 마우스 오른쪽 단추로 클릭하고 해당 세션 만 표시하는 옵션을 선택할 수 있어야합니다.
카나 카

1
불행히도 Windows에서 localhost를 사용하여 WireShark을 사용하려면 작동하도록 후프를 뛰어 넘어야합니다. 참조 wiki.wireshark.org/CaptureSetup/Loopback
그렉 우즈

2
최근에 Fiddler를 사용하여 WebSocket 트래픽을 디버깅 / 검사하는 방법을 보여주는 CodeProject에 대한 기사를 작성했습니다. codeproject.com/Articles/718660/…
engineforce

1
@NiCkNewman 예, 페이로드의 바이트 길이를 나타내는 7 비트 필드입니다. 그러나 필드의 값이 126 또는 127 인 경우 다음 16 또는 64 비트는 각각 페이로드의 길이 (바이트)입니다. 사양에서 길이 필드에 대한 설명을 참조하십시오 : tools.ietf.org/html/rfc6455#section-5.2 ( 간단히 이해 하기 쉽습니다). 조금 이상하지만 짧은 메시지를 매우 효율적으로 만듭니다 (2 바이트 헤더).
카나 카

72

Chrome Canary 및 Chromium에는 이제 WebSocket 메시지 프레임 검사 기능이 있습니다. 다음은 빠르게 테스트하는 단계입니다.

  1. websocket.org 사이트 에서 호스팅되는 WebSocket Echo 데모로 이동 하십시오.
  2. Chrome 개발자 도구를 켭니다.
  3. 네트워크를 클릭 하고 개발 도구가 표시하는 트래픽을 필터링하려면 웹 소켓을 클릭하십시오 .
  4. 에코 데모에서 연결을 클릭 하십시오 . Google 개발자 도구의 헤더 탭에서 WebSocket 핸드 셰이크를 검사 할 수 있습니다.
  5. 에코 데모에서 보내기 버튼을 클릭하십시오.
  6. 이 단계는 중요합니다 . Chrome 개발자 도구에서 WebSocket 프레임을 보려면 이름 / 경로 아래에서 WebSocket 연결을 나타내는 echo.websocket.org 항목을 클릭하십시오. 그러면 오른쪽의 기본 패널이 새로 고쳐지고 WebSocket 프레임 탭이 실제 WebSocket 메시지 내용과 함께 표시됩니다.

참고 : 새 메시지를 보내거나받을 때마다 왼쪽의 echo.websocket.org 항목을 클릭하여 메인 패널을 새로 고쳐야합니다.

나는 또한 게시 스크린 샷과 비디오로 단계를 .

필자가 최근에 출판 한 책인 HTML5 WebSocket에 대한 최종 안내서 에는 Chrome Dev Tools, Chrome net-internals 및 Wire Shark를 포함한 다양한 검사 도구에 대한 부록이 있습니다.


3
여러 질문에 대한 복사 및 붙여 넣기 상용구 / 언어 답변을 게시 할 때는 커뮤니티에서 "스팸"으로 표시되는 경향이 있습니다. 이 작업을 수행하는 경우 일반적으로 질문이 중복됨을 의미하므로 대신 질문으로 표시하십시오.
Kev

2
6 단계 감사합니다! 네트워크 탭에서 WebSockets 필터에 대해 알고 있었지만 처음 몇 개의 메시지 만 잡는 것처럼 보였습니다. 탭을 열기 전에 열린 웹 소켓 연결을 인식 할 수있는 방법이 있는지 알고 있습니까?
브라이언 헤드

브라이언-나는 당신이 오늘 할 수 있다고 생각하지 않습니다.
Peter Moskovits

@PeterMoskovits Chrome에서 바이너리 프레임의 내용을 검사하는 방법을 알고 있습니까? 현재는 길이 만 볼 수 있습니다!
Howie

@Howie Chrome으로는 할 수 없습니다. WireShark를 사용할 수 있습니다. 우리의 새로운 저서 인 HTML5 WebSocket에 대한 결정적인 가이드는 WireShark에 대한 빠른 소개도 제공합니다. amazon.com/Definitive-Guide-HTML5-WebSocket-Apress/dp/…
Peter Moskovits

52

Chrome에서 지속적으로 변경되는 것처럼 보이지만 현재 작동하는 내용은 다음과 같습니다. :-)

  • 먼저 빨간색 레코드 버튼을 클릭해야합니다. 그렇지 않으면 아무 것도 얻지 못합니다.

  • WS이전에는 눈치 채지 못했지만 웹 소켓 연결을 필터링합니다.

  • 그것을 선택하면 오류 메시지 등을 표시하는 프레임을 볼 수 있습니다.

여기에 이미지 설명을 입력하십시오


나는 JSON이 그 형식으로 추악한 방식을 좋아하지 않습니다. 기본적으로 서식이 없습니다.
ses

1
signalR 프로토콜 인 @ses. 😜 마이크로 소프트와 그것을 가지고
Simon_Weaver

1
적어도이 답변이 4 년 후에도 여전히 좋은 것을 보게되어 기쁘다 : p
Stu Thompson

1
@StuThompson yes-나의 투표는 계속 누적됩니다 :-)
Simon_Weaver

41

웹 소켓에 액세스하는 페이지가없는 경우 Chrome 콘솔을 열고 JavaScript를 다음과 같이 입력 할 수 있습니다.

var webSocket = new WebSocket('ws://address:port');
webSocket.onmessage = function(data) { console.log(data); }

그러면 웹 소켓이 열리므로 네트워크 탭과 콘솔에서 웹 소켓을 볼 수 있습니다.


감사! 또한 : 열어 본 페이지는 웹 소켓과 동일한 출처에 있어야합니다. 다른 출처 (또는 새 탭 페이지)에서 Chrome 개발 도구를 열고 웹 소켓에 연결하면 인증 오류가 발생합니다.
Dan Esparza 2016 년

이 문제를 해결하는 방법이 있습니까?
not2qubit

37

다른 답변은 가장 일반적인 시나리오를 다룹니다. 프레임의 내용을 봅니다 (개발자 도구-> 네트워크 탭-> 웹 소켓 연결을 마우스 오른쪽 버튼으로 클릭-> 프레임).

현재 어떤 소켓이 열려 있거나 유휴 상태인지를 확인하거나 닫을 수있는 것과 같은 더 많은 정보를 알고 싶다면이 URL이 유용하다는 것을 알 수 있습니다

chrome://net-internals/#sockets

10

Chrome (개발자 도구-> 네트워크 탭을 통해), Wireshark 및 Fiddler (로그 탭을 통해)의 세 가지 옵션이 있지만 모두 기본입니다. 트래픽이 매우 많거나 각 프레임이 매우 크면 디버깅에 사용하기가 매우 어려워집니다.

그러나 Fiddler를 FiddlerScript와 함께 사용하여 HTTP 트래픽을 감염시키는 것과 같은 방식으로 WebSocket 트래픽을 검사 할 수 있습니다. 이 솔루션의 장점은 여러 검사기 (HexView, JSON, SyntaxView), 패킷 비교 및 ​​패킷 찾기 등과 같은 Fiddler의 다른 많은 기능을 활용할 수 있다는 것입니다.WebSocket 트래픽 검사

Fiddler (FiddlerScript 사용)를 사용하여 WebSocket 트래픽을 디버깅 / 검사하는 방법을 보여주는 CodeProject에 대해 최근에 작성한 기사를 참조하십시오. http://www.codeproject.com/Articles/718660/Debug-Inspect-WebSocket-traffic-with-Fiddler


5

Chrome이 많이 변경 되었으므로이 게시물을 게시하고 있으며 최신 답변이 없습니다.

  1. 개발 도구 열기
  2. 페이지 새로 고침 (네트워크 탭에서 WS 연결을 캡처하도록)
  3. 요청을 클릭하십시오
  4. "프레임"하위 탭을 클릭하십시오
  5. 다음과 같은 것이 보일 것입니다 :

여기에 이미지 설명을 입력하십시오


4

Chrome 버전 29 이상에 대한 간단한 답변 :

  1. 디버거를 열고 "네트워크"탭으로 이동
  2. 웹 소켓으로 페이지로드
  3. 서버의 업그레이드 응답으로 웹 소켓 요청을 클릭하십시오.
  4. 웹 소켓 프레임을 보려면 "프레임"탭을 선택하십시오.
  5. 웹 소켓 요청을 다시 클릭하여 프레임을 새로 고칩니다.

1
websocket URL 연결을 끊었다가 다시 연결하면 (예 : websocket.org/echo.html 등 ) 페이지를 새로 고침해야 작동이 중단되는 것을 제외하고는 이것이 작동하는 것 같습니다 . :(
matanster

3

Chrome 개발자 도구를 사용하면 열린 연결 중에 보류중인 핸드 셰이크 요청을 볼 수 있지만 내가 아는 한 트래픽을 볼 수는 없습니다. 그러나 예를 들어 스니핑 할 수 있습니다 .


2

사용자 hakobera가 게시 한 Simple WebSocket Client v0.1.3 이라는 Chrome 확장 프로그램 을 사용했습니다. 주어진 URL에서 웹 소켓을 열고 메시지를 보내고 소켓 연결을 닫을 수있는 사용법은 매우 간단합니다. 매우 최소한입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.