HTTP/2
macOS용 Proxyman에서 HTTP/2를 켜고 HTTP/2 트래픽을 캡처해 요청, 응답, 트레일러, 협상된 프로토콜을 확인합니다.
1. 기능 소개
HTTP/2에서는 여러 요청이 하나의 연결을 동시에 공유할 수 있습니다. Proxyman은 각 요청과 응답을 별도의 교환 단위로 캡처하므로, 익숙한 미리보기 도구와 디버깅 도구로 확인할 수 있습니다.
HTTP/2는 Proxyman macOS v26.0.0부터 일반 릴리스에 포함됩니다. 기본적으로 꺼져 있습니다. 더 이상 별도의 베타 앱이 필요하지 않습니다.
2. 장점
- Proxyman을 사용하는 앱과 브라우저의 HTTP/2 요청과 응답을 확인합니다.
- 공유 연결에서 동시에 진행되는 요청을 추적합니다.
- 헤더, 본문, 본문 뒤에 전송되는 트레일러 헤더를 읽습니다.
- 캡처한 요청이 사용한 HTTP 버전을 확인합니다.
- 기록된 경우 Connection Log에서 업스트림 프로토콜을 확인합니다.
HTTP/2는 헤더 압축과 연결 재사용으로 오버헤드를 줄입니다. 효과는 앱, 서버, 네트워크에 따라 다릅니다. 이 기능을 켠다고 모든 요청이 빨라지지는 않습니다.
3. 활성화 방법
- Mac에서 Proxyman v26.0.0 이상을 엽니다.
- Proxyman → Settings → General로 이동합니다.
- Proxy 섹션에서 Use HTTP/2를 켭니다.
- HTTPS 콘텐츠의 경우, 클라이언트 기기에 Proxyman 인증서를 설치하고 신뢰하도록 설정합니다.
- 앱 또는 도메인에 대해 SSL Proxying을 켭니다.
- 새 요청을 보내거나 페이지를 새로고침합니다.

Use HTTP/2 켜기
이 설정을 변경하면 기존 연결이 닫힙니다. 이후 새 요청을 보냅니다. 활성 상태의 WebSocket 및 Server-Sent Events 연결도 다시 연결해야 할 수 있습니다.
인증서 설정은 macOS 가이드를 참고합니다. 원격 기기는 인증서를 신뢰하고 트래픽을 Mac의 Proxyman을 통해 보내야 합니다. iOS 또는 Android 설정 가이드를 참고합니다.
HTTP/2를 끄려면 같은 Settings 섹션에서 Use HTTP/2 체크를 해제합니다.
스크립트에서는 proxyman-cli http-version status 또는 proxyman-cli http-version set prefer_http2를 사용할 수 있습니다. 문법과 JSON 출력 형식은 HTTP version 명령줄 가이드에서 확인할 수 있습니다.
4. 캡처되는 항목
메인 목록에서 요청을 선택하면 사용 가능한 세부 정보를 확인할 수 있습니다:
- 요청 메서드, URL, 쿼리 파라미터, 쿠키, 헤더
- 요청 및 응답 본문(JSON, 폼 데이터, 텍스트, 바이너리 콘텐츠 등)
- 응답 상태와 헤더
- 요청 및 응답 트레일러(있는 경우)
- 타이밍 및 HTTP 버전 정보
- 기록된 연결 세부 정보(업스트림 프로토콜 협상 포함)
트레일러는 본문 뒤에 전송되는 헤더입니다. gRPC 트래픽이라면 헤더 또는 트레일러에서 grpc-status와 grpc-message를 확인합니다. HTTP 200만으로는 RPC가 성공했다고 증명할 수 없습니다. 바이너리 페이로드는 추가로 디코딩해야 할 수 있습니다.
5. 프로토콜을 확인하는 방법
이 설정은 HTTP/1.1 폴백과 함께 HTTP/2를 허용합니다. 모든 요청이 HTTP/2를 사용한다는 것을 보장하지는 않습니다.
연결은 두 가지입니다:
- 클라이언트 연결: 앱 또는 브라우저에서 Proxyman으로 가는 연결
- 업스트림 연결: Proxyman에서 서버로 가는 연결
두 연결은 서로 다른 HTTP 버전을 사용할 수 있습니다. 클라이언트 연결은 요청의 HTTP 버전으로 확인합니다. 업스트림 프로토콜은(기록된 경우) Request 패널에서 Connection Log를 열어 확인합니다.
h2는 HTTP/2를 뜻합니다.http/1.1은 HTTP/1.1을 뜻합니다.- 제안된 프로토콜이라고 해서 서버가 그것을 선택했다는 뜻은 아닙니다. 수락된 프로토콜을 확인합니다.
- 예전에 저장한 캡처에는 업스트림 프로토콜 정보가 없을 수 있습니다. 데이터가 없다고 해서 HTTP/1.1을 뜻하지는 않습니다.
6. Connection Log의 연결 정보
- 요청을 선택한 다음 Request 패널에서 Summary 옆의 Connection Log를 엽니다.
- DNS 결과, 연결 시도, TLS 및 인증서 세부 정보, HTTP 헤더가 담긴
curl -v와 비슷한 로그를 볼 수 있습니다. - 업스트림 연결이 HTTP/2를 사용하는지 확인하려면
ALPN: server accepted h2를 확인합니다. 재사용된 연결에는Re-using existing connection이 표시됩니다. *는 연결 이벤트,>는 요청,<는 응답을 나타냅니다.
샘플 값을 사용한 예시입니다:
* Host api.example.com:443 was resolved.
* IPv4: 192.0.2.10
* Connected to api.example.com (192.0.2.10) port 443
* ALPN: Proxyman offers h2,http/1.1
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* using HTTP/2
> GET /profile HTTP/2
< HTTP/2 200 OK
* Connection #0 to host api.example.com left intact
탭이 숨겨져 있다면 Custom Previewer Tab의 Request 아래에서 Connection Log를 켤 수 있습니다. 모든 필드는 Connection Log 가이드에서 확인할 수 있습니다.
7. 문제 해결
요청이 여전히 HTTP/1.1을 사용한다면:
- Use HTTP/2가 켜져 있는지 확인한 다음 새 요청을 보냅니다.
- 클라이언트가 HTTP/2를 지원하고 협상하는지 확인합니다.
- 업스트림 서버가 HTTP/2를 지원하는지 확인합니다. 폴백이 정상 동작일 수도 있습니다.
- 어느 쪽에서 HTTP/1.1을 사용했는지 판단하기 전에 두 연결을 모두 확인합니다.
HTTPS 콘텐츠가 보이지 않는다면:
- 클라이언트가 트래픽을 Proxyman으로 보내고 있는지 확인합니다.
- 인증서 신뢰 설정과 도메인의 SSL Proxying 규칙을 확인합니다.
- 클라이언트가 인증서를 거부한다면 SSL 오류를 참고합니다.