Proxyman으로 WebSocket 캡처하고 Protobuf 메시지 디코딩하기

Proxyman으로 WebSocket 캡처하고 Protobuf 메시지 디코딩하기 커버 이미지

이 튜토리얼에서 다루는 내용입니다:

  • Proxyman macOS 다운로드 및 설정
  • Google Chrome 또는 iOS 앱에서 WebSocket 트래픽 캡처
  • ✅ Proxyman으로 WebSocket 트래픽의 Protobuf 메시지 디코딩

WebSocket은 클라이언트와 서버 간 실시간 통신에 널리 쓰이는 프로토콜입니다. 많은 최신 애플리케이션은 성능을 높이고 페이로드 크기를 줄이기 위해 WebSocket으로 데이터를 직렬화할 때 Protobuf(Protocol Buffers)를 사용합니다.

이 가이드에서는 Proxyman macOS 6.5.0 이상을 사용해 WebSocket 트래픽을 캡처하고 Protobuf 메시지를 디코딩하는 방법을 설명합니다.

1. Proxyman macOS 다운로드 및 설정

시작하기 전에 Proxyman macOS를 다운로드하고 설정하세요.

  1. Proxyman 웹사이트를 열고 최신 버전의 Proxyman macOS를 다운로드하세요
  • Proxyman macOS: macOS 12 이상 지원
  1. Proxyman macOS를 설치하세요
  2. Proxyman을 열고 macOS에 인증서를 설치하세요. Proxyman > Certificate Menu -> Install for macOS -> Follow the instruction 경로의 안내를 따르면 됩니다
  3. Automatic 탭 -> "Install & Trust"를 클릭하세요
  4. Proxyman 인증서에 초록색 체크 표시가 있는지 확인하세요
Proxyman 인증서에 초록색 체크 표시가 있는지 확인
Proxyman 인증서에 초록색 체크 표시가 있는지 확인

2. WebSocket 트래픽 캡처하기

2.1 Google Chrome에서 캡처하기 (추가 설정 없이 작동)

Proxyman은 추가 설정 없이 Google Chrome의 WebSocket 트래픽을 캡처할 수 있습니다.

  1. Proxyman이 실행 중인지 확인하세요
  2. Google Chrome을 여세요
  3. WebSocket 테스트 사이트로 이동하세요. 예: https://echo.websocket.org/.ws
  4. 이때 Proxyman에서 WebSocket 트래픽이 캡처되는 것을 확인할 수 있습니다 ✅
  5. SSL로 암호화된 트래픽이 보이면 Response 패널에서 "Enable SSL Proxying"을 클릭하세요
  6. 페이지를 새로고침하거나 WebSocket을 다시 연결하면 Proxyman이 WebSocket 트래픽을 복호화할 수 있습니다 ✅
  7. 완료되었습니다. 이제 실시간으로 WebSocket 메시지를 확인할 수 있습니다.
Google Chrome에서 Proxyman으로 캡처한 WebSocket 메시지
Google Chrome에서 Proxyman으로 캡처한 WebSocket 메시지

WebSocket 트래픽은 Proxyman의 플로우 목록에 특별한 WebSocket 아이콘과 함께 표시됩니다. WebSocket 탭에서 전송된 메시지와 수신된 메시지를 모두 볼 수 있습니다.

2.2 iOS 앱에서 캡처하기

iOS 앱이 URLSessionWebSocketTask 또는 iOS WebSocket 라이브러리(예: Starscream, SocketRocket)를 사용한다면 WebSocket 트래픽을 캡처하기 위해 SOCKS 프록시를 설정해야 합니다.

기본적으로 URLSessionWebSocketTask는 시스템 HTTP 프록시를 따르지 않기 때문입니다.

iOS 앱에서 WebSocket을 캡처하는 자세한 방법은 전용 튜토리얼을 참고하세요: iOS 시뮬레이터 또는 기기에서 WebSocket을 가로채고 디버깅하는 방법

간단한 요약은 다음과 같습니다:

  1. Proxyman에서 SOCKS 프록시를 활성화하세요: Tools -> Proxy Settings -> SOCKS Proxy settings -> Enable
  2. 포트 번호를 확인하세요 (기본값은 8889)
  3. iOS 앱이 Proxyman SOCKS 프록시 서버를 사용하도록 설정하세요

3. Protobuf 메시지 디코딩하기

Proxyman macOS 6.5.0 이상이 필요합니다. 이전 버전을 사용 중이라면 Proxyman을 업데이트하세요.

WebSocket 트래픽을 캡처했다면 Proxyman에서 Protobuf 메시지를 바로 디코딩할 수 있습니다.

3.1 Raw 모드로 디코딩하기 (빠르지만 정확하지 않음)

Raw 모드는 Protobuf 정의 파일(.proto)이 없을 때 유용합니다. Proxyman이 바이너리 데이터를 디코딩해 필드를 표시하려고 시도합니다.

  1. Proxyman에서 WebSocket 플로우를 선택하세요
  2. Protobuf 데이터가 포함된 WebSocket 메시지를 찾으세요
  3. Protobuf 메시지를 마우스 오른쪽 버튼으로 클릭 -> Protobuf -> Decode를 선택하세요
  4. Raw Mode를 선택하세요
  5. 완료되었습니다. Proxyman이 Protobuf 필드를 디코딩해 표시합니다 ✅
Protobuf 메시지를 마우스 오른쪽 버튼으로 클릭해 디코딩
Protobuf 메시지를 마우스 오른쪽 버튼으로 클릭해 디코딩
Raw 모드로 디코딩된 Protobuf
Raw 모드로 디코딩된 Protobuf

Raw 모드는 필드 번호와 추론된 타입을 보여 줍니다. .proto 파일이 없으면 필드 이름은 나타나지 않지만, 데이터 구조는 여전히 확인할 수 있습니다.

3.2 Message Type으로 디코딩하기 (권장)

Protobuf descriptor 파일(.desc)이 있다면 올바른 필드 이름과 타입으로 메시지를 디코딩할 수 있습니다.

  1. Proxyman에서 WebSocket 플로우를 선택하세요
  2. Protobuf 데이터가 포함된 WebSocket 메시지를 찾으세요
  3. Protobuf 메시지를 마우스 오른쪽 버튼으로 클릭 -> Protobuf -> Decode를 선택하세요
  4. Message Type을 선택하세요
  5. Protobuf descriptor 파일에서 메시지 타입을 선택하세요
Protobuf 디코딩을 위해 Message Type 선택
Protobuf 디코딩을 위해 Message Type 선택

Message Type이 보이지 않는다면 "Import Schema" 버튼을 클릭해 .desc 파일을 Proxyman으로 가져왔는지 확인하세요.

.proto 파일에서 .desc 파일을 생성하는 방법은 이 문서를 참고하세요: .proto 파일에서 .desc 파일을 생성하는 방법

  1. 완료되었습니다. Proxyman이 올바른 필드 이름으로 메시지를 디코딩합니다 ✅
Message Type으로 디코딩된 Protobuf
Message Type으로 디코딩된 Protobuf

.proto 파일에서 .desc 파일을 생성하려면 protoc 컴파일러를 사용하세요: protoc --descriptor_set_out=message.desc --include_imports your_message.proto

--include_imports 옵션은 가져온 .proto 파일에서 사용되는 메시지 타입도 포함합니다. 이 옵션이 없으면 주 스키마에 있는 것처럼 보이는 타입을 Proxyman이 찾지 못할 수 있습니다. 스키마가 전혀 없을 때는 Raw 모드가 여전히 유용하지만, 필드 타입은 추측값입니다. 정확한 이름과 타입이 중요하다면 descriptor를 사용하세요.

4. 문제와 해결 방법

4.1 iOS 앱에서 WebSocket 트래픽이 보이지 않습니다

해결 방법: iOS WebSocket 라이브러리는 HTTP 프록시를 따르지 않습니다. Proxyman에서 SOCKS 프록시를 활성화하고 앱이 이를 사용하도록 설정해야 합니다. 자세한 방법은 WebSocket 디버깅 튜토리얼을 확인하세요.

4.2 Protobuf 디코딩 옵션이 보이지 않습니다

해결 방법: Proxyman macOS 6.5.0 이상을 사용하고 있는지 확인하세요. Proxyman -> About Proxyman에서 버전을 확인할 수 있으며, proxyman.com에서 업데이트할 수 있습니다.

4.3 Raw 모드에서 필드 타입이 잘못 표시됩니다

해결 방법: Raw 모드는 휴리스틱으로 필드 타입을 추론합니다. 정확하게 디코딩하려면 Protobuf descriptor 파일과 함께 Message Type 모드를 사용하세요.

4.4 WebSocket 트래픽은 보이지만 메시지가 암호화되어 있습니다

해결 방법: 해당 도메인에 SSL Proxying이 활성화되어 있는지 확인하세요. 플로우를 마우스 오른쪽 버튼으로 클릭 -> Enable SSL Proxying을 선택한 다음 WebSocket을 다시 연결하세요.

5. 마무리

이 튜토리얼에서는 다음 방법을 배웠습니다:

  • Proxyman으로 Google Chrome 및 iOS 앱의 WebSocket 트래픽 캡처하기
  • Raw 모드(.proto 파일 없이) 또는 Message Type 모드(.proto 파일 사용)로 Protobuf 메시지 디코딩하기

도움이 될 만한 관련 튜토리얼:


Proxyman은 개발자가 브라우저, iOS 기기, iOS 시뮬레이터, Android 기기에서 HTTP/HTTPS 및 WebSocket 트래픽을 캡처할 수 있도록 돕는 고성능 macOS/Windows/Linux 앱입니다.

https://proxyman.com에서 Proxyman을 다운로드하세요.

Noah Tran
Noah Tran

2026년 7월 18일 수정됨. Descriptor 가져오기 안내와 raw 모드 추측값에 대한 주의 사항을 추가했습니다.

바이너리 WebSocket 메시지를 읽기 쉬운 필드로 바꾸세요

WebSocket을 캡처하고 Protobuf 스키마를 가져온 뒤 Proxyman에서 전송 및 수신된 메시지를 확인하세요.

macOS용 Proxyman 다운로드