Proxyman v26.0.0에서 드디어 HTTP/2 지원

Proxyman v26.0.0에서 드디어 HTTP/2 지원 커버 이미지

5분 분량

HTTP/2가 드디어 나왔습니다. macOS용 Proxyman v26.0.0 정식 버전에 HTTP/2 지원이 포함되었습니다. 이제 별도의 베타 앱은 필요하지 않습니다.

앱이 HTTP/2를 사용한다면 이제 Proxyman으로 해당 트래픽을 검사할 수 있습니다. 요청과 응답을 읽고, 사용된 프로토콜을 확인하고, 평소 사용하는 필터와 디버깅 도구를 그대로 쓸 수 있습니다.

이번 릴리스에서는 PRO 사용자를 위한 Split View와 새로운 Safari 스타일 Tab View도 추가되었습니다. 두 기능 모두 복잡한 캡처의 서로 다른 부분을 함께 보기 쉽게 해 줍니다.

HTTP/2가 중요한 이유

앱은 화면 하나를 열 때 여러 요청을 보내는 경우가 많습니다. 프로필을 불러오고, 목록을 가져오고, 이미지를 내려받는 작업이 동시에 일어날 수 있습니다. 이러한 요청들이 연결을 공유하는 방식은 디버깅할 때 보이는 내용에 영향을 줄 수 있습니다.

HTTP/2는 HTTP 메시지가 전송되는 방식을 바꿉니다:

  • 여러 요청이 하나의 연결을 동시에 공유할 수 있습니다. 각 요청과 응답은 고유한 스트림을 사용합니다.
  • 헤더 압축으로 같은 연결에서 반복 전송되는 헤더 데이터를 줄입니다.
  • 연결을 재사용하면 TCP 연결을 추가로 열고 TLS 설정을 반복해야 하는 경우를 줄일 수 있습니다.
  • 메서드, URL, 상태 코드, 본문의 의미는 지금까지 알고 있던 그대로입니다.

HTTP/2 표준에서 이러한 변화를 자세히 설명합니다. 오버헤드를 줄일 수는 있지만, 모든 요청을 빠르게 만들어 주지는 않습니다. 서버 처리, 네트워크 상태, 앱 자체도 여전히 중요합니다. HTTP/2도 TCP를 사용하므로, 패킷 손실이 같은 연결을 공유하는 요청에 영향을 줄 수 있습니다.

디버깅 관점에서 이점은 실용적입니다. HTTP/1.1로 캡처한 트래픽에만 의존하지 않고, HTTP/2를 사용하는 트래픽을 직접 검사할 수 있습니다. 문제가 프로토콜 협상이나 여러 요청이 동시에 실행되는 상황에 달려 있을 때 특히 도움이 됩니다.

Settings에서 HTTP/2 켜기

HTTP/2는 기본적으로 꺼져 있습니다. 활성화하려면 다음을 따르세요:

  1. Mac에 Proxyman v26.0.0 이상을 설치합니다.
  2. Proxyman → Settings → General을 엽니다.
  3. Proxy 섹션에서 Use HTTP/2를 켭니다.
  4. HTTPS를 검사하려면 클라이언트 기기에 Proxyman 인증서를 설치하고 신뢰하도록 설정합니다.
  5. 검사하려는 앱이나 도메인에 대해 SSL Proxying을 활성화합니다.
  6. 앱에서 새 요청을 보내거나 페이지를 새로고침합니다.
Proxyman Settings의 General에서 Use HTTP/2 켜기
Proxyman Settings의 General에서 Use HTTP/2 켜기

HTTP/2 캡처 시작하기

이 데모에서는 HTTP/2를 활성화하고 Proxyman에서 새 요청 캡처를 시작하는 방법을 보여 줍니다.

HTTP/2 설정을 바꾸면 기존 연결이 닫혀서 새 연결이 새 설정을 사용할 수 있습니다. 활성 상태인 WebSocket 및 Server-Sent Events 연결도 다시 연결해야 할 수 있습니다.

이미 Proxyman으로 HTTPS를 캡처하고 있다면 인증서와 도메인 설정은 그대로 두어도 됩니다. 처음 캡처하는 경우에는 SSL Proxying 가이드를 따라 하세요. 원격 기기도 트래픽을 Mac의 Proxyman을 거치도록 라우팅해야 합니다.

검사할 수 있는 항목

캡처된 요청을 선택하면 해당 요청과 응답에서 확인할 수 있는 세부 정보를 볼 수 있습니다:

  • 요청 메서드, URL, 쿼리 파라미터, 헤더.
  • 쿠키와 JSON, 폼 데이터, 바이너리 콘텐츠 같은 요청 본문.
  • 응답 상태, 헤더, 본문.
  • 클라이언트나 서버가 본문 뒤에 보내는 트레일러 헤더.
  • 요청 타이밍과 기록된 HTTP 프로토콜 정보.
  • 가능한 경우 서버가 협상한 프로토콜 같은 연결 세부 정보.

HTTP/2 연결을 공유하는 요청은 요청 목록에 각각 별도의 항목으로 표시됩니다. 각 항목을 선택해 내용을 검사할 수 있으며, 내부의 바이너리 프레임을 직접 읽을 필요는 없습니다.

트레일러는 응답 본문 뒤에 최종 정보를 보내는 API에서 유용합니다. 예를 들어 gRPC 응답은 트레일러에 grpc-status와 grpc-message를 담을 수 있습니다. HTTP 200 응답만으로는 해당 RPC가 성공했는지 알 수 없습니다. 이 정보를 캡처한다고 해서 모든 바이너리 본문이 자동으로 읽을 수 있는 텍스트로 바뀌는 것은 아닙니다.

요청이 실제로 사용한 프로토콜 확인하기

HTTP/2를 켜면 Proxyman이 HTTP/2를 사용할 수 있게 됩니다. 모든 연결이 HTTP/2를 사용하도록 강제하지는 않습니다.

고려해야 할 연결은 두 가지입니다:

  • 앱이나 브라우저가 Proxyman에 연결합니다.
  • Proxyman이 업스트림 서버에 연결합니다.

두 연결은 서로 다른 HTTP 버전을 사용할 수 있습니다. 클라이언트가 HTTP/2를 지원하고 협상해야 합니다. 해당 연결이 HTTP/2를 사용하려면 업스트림 서버도 HTTP/2를 지원해야 합니다. Proxyman은 HTTP/1.1로의 폴백을 허용합니다.

새 요청을 보낸 뒤에는 다음을 확인하세요:

  • 요청 세부 정보에서 HTTP 버전을 확인합니다.
  • Request 패널에서 Connection Log를 열어 기록되어 있다면 업스트림 프로토콜을 확인합니다.
  • 서버가 수락한 프로토콜을 확인합니다. h2는 HTTP/2를 의미합니다.
  • 협상 과정에서 h2를 제안했다고 해서 서버가 이를 선택했다는 뜻은 아니라는 점을 기억하세요.

이 예시에서 Proxyman은 h2와 http/1.1을 제안하고, 서버는 h2를 수락합니다.

서버가 h2를 수락했음을 보여 주는 Proxyman의 HTTP/2 Connection Log
서버가 h2를 수락했음을 보여 주는 Proxyman의 HTTP/2 Connection Log

이전에 저장한 캡처에는 업스트림 프로토콜 정보가 없을 수 있습니다. 정보가 없다고 해서 연결이 HTTP/1.1을 사용했다는 뜻은 아닙니다. Connection Log 가이드에서 기록된 단계를 읽는 방법을 설명합니다.

Split View와 탭으로 트래픽 비교하기

앱에서 프로필은 정상적으로 불러오지만 활동 목록을 불러오지 못한다고 가정해 봅시다. 문제를 재현하는 동안 두 엔드포인트를 모두 보이도록 유지하세요:

  1. 사이드바에서 앱이나 도메인을 우클릭하고 Open as Split View를 선택합니다.
  2. 첫 번째 창에서 프로필 엔드포인트로 필터링합니다.
  3. 두 번째 창에서 활동 엔드포인트로 필터링합니다.
  4. 각 창에서 요청을 하나씩 선택하고 상태, 헤더, 본문을 비교합니다.

각 창은 자체 필터와 선택 상태를 유지합니다. 두 창 모두 같은 캡처를 사용하므로 새 요청은 어느 보기에서든 계속 확인할 수 있습니다.

다른 조사를 하려면 Open as New Tab을 선택하거나 ⌘T를 누르세요. 필터를 다시 설정하지 않고도 탭 사이를 전환할 수 있으며, 탭을 드래그해 원하는 순서로 배치할 수 있습니다. Split View와 Tab View는 Proxyman PRO가 필요합니다.

여전히 HTTP/1.1이 보인다면

  • Use HTTP/2가 켜져 있는지 확인한 뒤 새 요청을 보내세요.
  • 클라이언트와 서버가 HTTP/2를 지원하는지 확인하세요. 폴백이 일어나는 것은 정상일 수 있습니다.
  • HTTPS 내용이 계속 암호화된 상태로 보인다면 인증서 신뢰 설정과 SSL Proxying을 확인하세요.
  • 앱이나 기기가 트래픽을 Proxyman을 거쳐 보내는지 확인하세요.
  • 앱이 연결을 거부한다면 SSL 피닝을 포함해 앱의 인증서 요구 사항을 확인하세요.

더 읽어보기

릴리스를 다운로드하고 HTTP/2를 켠 뒤, 이해하고 싶은 요청을 캡처해 보세요.

Noah Tran
Noah Tran

HTTP/2 트래픽 캡처 시작하기

macOS용 Proxyman을 다운로드하고 Settings에서 Use HTTP/2를 켠 뒤 새 요청을 검사해 보세요.

macOS용 Proxyman 다운로드