Ruby 스크립트의 HTTP/HTTPS 요청 캡처하기 (net/http, http gem)

Ruby 스크립트의 HTTP/HTTPS 요청 캡처하기 (net/http, http gem) 커버 이미지

이 글에서는 Ruby 스크립트(net/http와 http) 라이브러리의 HTTP/HTTPS 트래픽을 캡처하는 방법을 보여드립니다.

이 글에서 다룰 내용:

  • Proxyman으로 Ruby 스크립트(net/http 또는 http gem)의 HTTP/HTTPS 트래픽을 캡처하는 방법

1. Ruby로 HTTPS 요청 보내기

Ruby 개발자라면 다음 라이브러리로 HTTP(S) 요청을 보내는 데 많은 시간을 쓸 수 있습니다:

  • Net::HTTP: Ruby에 내장된 라이브러리입니다. HTTP 요청-응답 프로토콜을 사용하는 클라이언트를 구현할 수 있도록 풍부한 API를 제공합니다.
  • http: 서드파티 젬입니다. Net::HTTP보다 사용하기 쉬운 클라이언트 라이브러리로 설계되었습니다.

다음 샘플 코드는 두 라이브러리로 요청을 보내는 방법을 보여줍니다.

require "http"
require 'net/http'

# Use net/http
uri = URI('https://httpbin.org/post?lib=net_http')
res = Net::HTTP.post_form(uri, 'isSSL' => 'true')
puts(res)

# Use http gem
res = HTTP.get("https://httpbin.org/get?lib=http").to_s
puts(res)

실행하려면 샘플을 client.rb로 저장한 다음, 터미널 앱을 열고 ruby client.rb를 실행하세요.

Proxyman: Ruby에서 net/http 또는 http gem으로 HTTP 요청 보내기
Proxyman: Ruby에서 net/http 또는 http gem으로 HTTP 요청 보내기

2. HTTP/HTTPS는 어떻게 캡처하나요?

현재의 문제점

기본적으로 두 라이브러리(net/http와 http gem) 모두 시스템 HTTP 프록시나 HTTP_PROXY, HTTPS_PROXY 환경 변수를 따르지 않습니다. Fiddler나 Charles Proxy 앱을 사용하고 있다면 이 트래픽이 보이지 않을 수 있습니다.

이를 해결하려면 프록시 설정을 직접 추가해야 합니다. 다음은 net/http의 설정 예시입니다:

proxy_addr = 'localhost'
proxy_port = 9090

Net::HTTP.new('example.com', nil, proxy_addr, proxy_port).start { |http|
  # always proxy via localhost:9090
}

자세한 내용은 net::http Proxy에서 확인하세요.

소스 코드를 직접 수정해야 하므로 실수하기 쉽고 시간도 많이 걸립니다.

해결 방법 ✅

다행히 Proxyman에는 설정 없이 HTTP/HTTPS 요청과 응답을 캡처할 수 있는 기능이 있습니다.

  1. https://proxyman.com/에서 최신 macOS 앱을 다운로드하세요.
  2. Mac에 Proxyman 인증서를 설치하세요. Certificate 메뉴 → Install Certificate on this Mac… 를 연 다음 "Install & Trust" 버튼을 클릭하면 간단히 설치할 수 있습니다.
현재 MacBook에 Proxyman 루트 인증서 설치
현재 MacBook에 Proxyman 루트 인증서 설치
  1. Setup 메뉴 → Automatic을 열고 "New Terminal app…"을 클릭하세요.
설정 없이 Ruby HTTP 트래픽을 캡처할 수 있는 미리 구성된 터미널 앱 열기
설정 없이 Ruby HTTP 트래픽을 캡처할 수 있는 미리 구성된 터미널 앱 열기
  1. New Terminal app 창이 열립니다. 이는 미리 구성된 Apple 터미널 앱으로, Ruby의 HTTPS 트래픽을 자동으로 캡처하고 복호화합니다.
  2. 새 터미널 앱에서 ruby client.rb를 다시 실행하면, 이제 모든 HTTP/HTTPS 트래픽이 Proxyman에 의해 캡처되고 복호화됩니다 🎉
Ruby 스크립트를 실행해 Proxyman에서 net/http 또는 http gem의 HTTP 트래픽 확인하기
Ruby 스크립트를 실행해 Proxyman에서 net/http 또는 http gem의 HTTP 트래픽 확인하기
  1. 완료입니다.

  • 내부 동작 방식이 궁금하다면 이 Automatic Setup 문서를 참고하세요.
  • 직접 사용하는 터미널(iTerm2 또는 Hyper)을 쓰고 싶다면 Manual Setup 문서를 확인하세요.

지원되는 Ruby 라이브러리

Proxyman은 http, net/http, net/https, faraday, httparty, fastlane을 별도 설정 없이 기본으로 지원합니다.

결론

Ruby 스크립트(net/http 또는 http gem)의 HTTP/HTTPS 트래픽을 캡처하는 것은 실수하기 쉽고 시간도 오래 걸립니다. 하지만 Proxyman의 Automatic Setup을 사용하면 설정 없이 클릭 한 번으로 가능합니다.

이 설정은 Proxyman이 연 새 터미널 세션에만 적용되므로, Ruby 명령은 해당 창에서 실행하세요. 기존 셸 설정 파일은 변경되지 않습니다. 그래도 특정 라이브러리가 보이지 않는다면, 해당 라이브러리의 프록시 설정을 출력해 환경 변수 프록시를 비활성화하지 않았는지 확인하고, 같은 터미널에서 https://httpbin.org/get으로 간단한 요청을 보낼 수 있는지 확인하세요.


Proxyman은 고성능 macOS 앱으로, 개발자가 iOS 기기, iOS 시뮬레이터, Android 기기에서 실행되는 앱과 도메인의 HTTP(S) 트래픽을 캡처하고 검사할 수 있게 해 줍니다.

https://proxyman.com/에서 다운로드할 수 있습니다.

Noah Tran
Noah Tran

2026년 7월 18일 수정됨. 터미널 적용 범위를 명확히 하고, 여전히 표시되지 않는 스크립트를 확인하는 방법을 추가했습니다.

코드를 변경하지 않고 Ruby 요청을 검사하세요

Proxyman에서 미리 설정된 터미널을 열고 그곳에서 Ruby 스크립트를 실행한 뒤, 전체 요청과 응답을 확인하세요.

Proxyman 다운로드