Proxyman으로 Chrome과 macOS 앱의 HTTP/3 트래픽 캡처하는 방법
읽는 시간 약 5분
1. 문제: HTTP/3 요청이 보이지 않음
웹사이트는 Google Chrome에서 잘 열리고 macOS 앱도 응답을 받지만, Proxyman에는 요청이 보이지 않습니다. 가능한 원인 중 하나는 HTTP/3입니다. HTTP/3는 일반 HTTP 프록시가 처리하는 TCP 연결 대신 UDP 위의 QUIC을 사용합니다.
- 일부 요청은 보이지만, 다른 요청은 캡처를 우회합니다.
- Proxyman 인증서를 설치하는 것만으로는 QUIC 트래픽이 프록시를 거치지 않습니다.
- Mac 앱은 시스템 프록시 설정을 무시하기도 합니다.
해결 방법: Proxyman에서 Network Extension과 Use HTTP/2를 활성화합니다. 지원되는 연결에서는 확장 프로그램이 HTTP/3가 TCP로 폴백하도록 만들며, 이때 Proxyman은 HTTP/2를 사용해 요청을 캡처할 수 있습니다.
예상 결과
- Chrome이나 Mac 앱에서 새로 보낸 요청이 Proxyman에 나타납니다.
- 인증서 신뢰와 SSL Proxying을 설정하면 HTTPS 헤더와 본문을 읽을 수 있습니다.
- 협상이 이루어지면 캡처된 프로토콜로 HTTP/2가 표시됩니다. 아래 예시는 업스트림 서버가
h2를 수락한 모습입니다.

이 워크플로는 HTTP/3가 HTTP/2로 폴백한 뒤의 요청을 캡처합니다. 네이티브 QUIC 트래픽은 복호화하지 않습니다. HTTP/2를 사용할 수 없으면 HTTP/1.1 폴백도 가능합니다.
2. HTTP/3 폴백의 동작 방식
HTTP/3는 요청이 네트워크를 이동하는 방식을 바꿉니다. 하지만 URL, 헤더, 응답 본문처럼 익숙한 HTTP 데이터는 그대로 전달합니다. HTTP/3 표준은 QUIC 연결이 실패하면 TCP 기반 HTTP로 폴백하는 방식을 설명합니다.
캡처 중에는 다음과 같은 일이 일어납니다:
- Chrome 또는 앱이 UDP 443 포트에서 QUIC으로 연결을 시도합니다.
- Proxyman Network Extension은 처리 대상 트래픽에 대해 그 연결을 거부합니다.
- 폴백을 지원하는 클라이언트는 대신 TCP 연결을 엽니다.
- Use HTTP/2가 켜져 있으면 Proxyman은 HTTP/2를 협상하고 해당 교환 내용을 표시할 수 있습니다.
이를 통해 API 데이터, 로그인 요청, 서버 오류를 디버깅할 수 있습니다. 전송 방식이 바뀌므로, HTTP/3 타이밍이나 QUIC 고유의 버그를 조사할 때는 네이티브 QUIC 캡처 도구를 사용하세요.
3. 시작하기 전에
- macOS 26 이상을 사용하세요.
- macOS용 Proxyman의 최신 직접 배포판을 설치하세요.
- Network Extension을 사용하려면 Proxyman PRO가 필요합니다. 이 확장 프로그램은 현재 BETA이며 기본적으로 꺼져 있고, Setapp에서는 사용할 수 없습니다.
- TCP 폴백을 지원하는 웹사이트나 앱을 사용하세요. HTTP/3만 지원하는 클라이언트에서는 이 방법을 쓸 수 없습니다.
이 가이드는 Mac에서 실행되는 앱을 다룹니다. iPhone이나 Android 기기는 별도의 캡처 설정이 필요합니다.
4. Network Extension 설치 및 활성화
- Proxyman → Settings → Network Extension을 엽니다.
- Enable Network Extension을 켭니다.
- Install and Enable이 나타나면 클릭합니다.

- System Settings → General → Login Items & Extensions를 엽니다.
- Extensions에서 By Category → Network Extensions를 선택합니다.

- Proxyman을 켠 다음, macOS가 네트워크 구성을 추가할지 물으면 Allow를 클릭합니다.

- Proxyman으로 돌아가 로컬 애플리케이션의 HTTP 및 HTTPS를 캡처하고 있다는 메시지가 나타날 때까지 기다립니다.
Network Extension 가이드에 전체 설치 절차가 나와 있습니다. 캡처하는 동안에는 Proxyman을 열어 두세요.
5. Proxyman에서 HTTP/2 활성화하기
- Proxyman → Settings → General을 엽니다.
- Proxy 섹션에서 Use HTTP/2를 켭니다.
- 설정을 바꾼 뒤에는 새 요청을 보내세요. 기존 연결은 닫힙니다.

HTTP/2 지원은 Proxyman v26.0.0부터 제공되며 기본적으로 꺼져 있습니다. HTTP/2 가이드에서 프로토콜 협상과 폴백을 자세히 설명합니다.
HTTPS 검사 설정하기
- **Certificate → Install a Certificate on this Mac…**를 엽니다.
- Automatic Mode를 사용하고 설치를 승인한 뒤 Installed & Trusted가 표시되는지 확인합니다.
- 검사할 앱이나 도메인에서 SSL Proxying을 활성화합니다. 사이드바에서 해당 항목을 마우스 오른쪽 버튼으로 클릭해 활성화할 수 있습니다.
- Proxyman이 복호화된 내용을 캡처할 수 있도록 요청을 다시 보냅니다.
아직 신뢰 설정을 하지 않았다면 macOS 인증서 가이드를 참고하세요. Network Extension은 연결을 라우팅하고, 인증서 신뢰는 Proxyman이 HTTPS 내용을 읽을 수 있게 합니다.
6. Google Chrome 또는 macOS 앱의 트래픽 캡처하기
Google Chrome
- ⌘Q로 Chrome을 완전히 종료한 뒤 다시 열어 새 연결을 만드세요.
- 디버깅할 웹사이트에 접속하고, 요청을 보내는 동작을 다시 실행하세요.
- Proxyman의 사이드바에서 Chrome 또는 대상 도메인을 선택합니다.
- 요청을 선택해 헤더, 쿼리 파라미터, 본문, 응답을 확인합니다.
- 새로고침해도 새 요청이 발생하지 않는다면 Chrome DevTools를 열고 Network → Disable cache를 선택한 뒤, DevTools를 연 상태로 새로고침하세요.
macOS 앱
- Network Extension을 활성화한 뒤 앱을 종료하고 다시 여세요.
- 목록 새로고침이나 프로필 불러오기처럼 네트워크 동작을 실행하세요.
- Proxyman에서 해당 앱 또는 API 도메인을 선택합니다.
- 응답 상태와 본문을 확인해 서버가 어떤 응답을 보냈는지 살펴보세요.
앱은 여전히 Proxyman 인증서를 신뢰해야 합니다. 폴백이 정상 동작하더라도 인증서 피닝(Certificate Pinning)이나 별도의 신뢰 저장소 때문에 HTTPS 검사가 막힐 수 있습니다.
7. 캡처된 HTTP 버전 확인하기
- 앱과 Proxyman 간 연결의 요청 HTTP 버전을 확인합니다.
- Proxyman과 서버 간 연결은 Request 패널의 Connection Log를 엽니다.
- 업스트림 HTTP/2를 확인하려면
ALPN: server accepted h2가 있는지 살펴보세요. - 수락된 프로토콜을 확인하세요.
h2가 포함된 제안만으로는 확인되지 않습니다.
두 연결은 서로 다른 HTTP 버전을 사용할 수 있습니다. 결과를 읽는 방법은 Connection Log 가이드를 참고하세요.
8. 누락된 요청 문제 해결하기
- 아무것도 나타나지 않음: Network Extension이 활성화되어 있는지, 녹화가 켜져 있는지, 필터가 요청을 숨기고 있지 않은지 확인하세요. 대상 앱을 다시 시작하세요.
- HTTPS 내용이 암호화된 상태로 남아 있음: 인증서 신뢰를 확인하고, 웹사이트 도메인과 다를 수 있는 실제 API 도메인에서 SSL Proxying을 활성화하세요.
- 캡처가 HTTP/1.1을 사용함: Use HTTP/2 설정을 확인한 뒤 다시 시도하세요. 클라이언트와 서버는 각각의 연결에서 HTTP/2를 지원해야 합니다.
- 앱이 연결되지 않음: 인증서 오류를 확인하고, 앱이 TCP 폴백 없이 HTTP/3를 요구하는지 살펴보세요.
- 사용자 정의 QUIC 서비스가 보이지 않음: 이 폴백은 UDP 443 포트를 처리합니다. 다른 포트의 QUIC은 이 워크플로의 범위에 포함되지 않습니다.
작업이 끝나면 Proxyman 설정에서 Enable Network Extension을 꺼서 확장 프로그램을 통한 캡처를 중지하세요.
관련 글
