Proxyman으로 Flutter iOS 앱의 HTTPS 트래픽을 캡처하는 방법

Proxyman으로 Flutter iOS 앱의 HTTPS 트래픽을 캡처하는 방법 커버 이미지

1. Flutter와 네트워크 호출

Flutter는 Google이 만든 인기 프레임워크로, 하나의 코드베이스로 iOS, Android 등 여러 플랫폼용 앱을 개발할 수 있게 해 줍니다.

Flutter로 앱을 개발할 때는 서버에서 데이터를 가져오거나 서버로 데이터를 보내기 위해 네트워크 호출을 해야 하는 경우가 많습니다. 하지만 이러한 네트워크 호출은 때때로 실패하거나 예상과 다르게 동작할 수 있습니다. 앱과 서버 사이에서 실제로 오가는 HTTP/HTTPS 트래픽을 보고 검사할 수 있다면, 개발 중 문제를 찾고 해결하는 데 큰 도움이 됩니다.

2. Proxyman으로 Flutter iOS 앱의 HTTPS 트래픽을 캡처하는 방법

2.1 Flutter에 HTTP 프록시 설정 추가하기

기본적으로 Flutter는 HTTP 프록시 설정을 사용하지 않습니다. Flutter 프로젝트에 HTTP 프록시 설정을 직접 추가해야 합니다.

설정 방법은 Flutter 프로젝트에서 사용하는 HTTP 네트워크 라이브러리에 따라 다릅니다. 이 예제에서는 http 패키지를 사용합니다.

Android를 사용하는 경우 <YOUR_LOCAL_IP>를 컴퓨터의 외부 IP 주소로 바꿔야 합니다. IP 주소는 Proxyman -> Tools 메뉴 -> Install for iOS -> Physical Device에서 확인할 수 있습니다.

Proxyman - Install for iOS 메뉴

http 패키지

// Make sure to replace <YOUR_LOCAL_IP> with 
// the external IP of your computer if you're using Android. 
// You can get the IP in the Android Setup Guide window
String proxy = Platform.isAndroid ? '<YOUR_LOCAL_IP>:9090' : 'localhost:9090';

// Create a new HttpClient instance.
HttpClient httpClient = new HttpClient();

// Hook into the findProxy callback to set
// the client's proxy.
httpClient.findProxy = (uri) {
  return "PROXY $proxy;";
};

// This is a workaround to allow Proxyman to receive
// SSL payloads when your app is running on Android.
httpClient.badCertificateCallback = 
  ((X509Certificate cert, String host, int port) => true);

// Pass your newly instantiated HttpClient to http.IOClient.
IOClient myClient = IOClient(httpClient);

// Make your request as normal.
var response = myClient.get('/my-url');

Dio 라이브러리

// Make sure to replace <YOUR_LOCAL_IP> with 
// the external IP of your computer if you're using Android. 
// You can get the IP in the Android Setup Guide window
String proxy = Platform.isAndroid ? '<YOUR_LOCAL_IP>:9090' : 'localhost:9090';

// Create a new Dio instance.
Dio dio = Dio();

// Tap into the onHttpClientCreate callback
// to configure the proxy just as we did earlier.
(dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (client) { 
  // Hook into the findProxy callback to set the client's proxy.
  client.findProxy = (url) {
    return 'PROXY $proxy'?;
  };
  
  // This is a workaround to allow Proxyman to receive
  // SSL payloads when your app is running on Android.
  client.badCertificateCallback = (X509Certificate cert, String host, int port) => true;
}

Dart HTTP 패키지

// Make sure to replace <YOUR_LOCAL_IP> with 
// the external IP of your computer if you're using Android. 
// You can get the IP in the Android Setup Guide window
String proxy = Platform.isAndroid ? '<YOUR_LOCAL_IP>:9090' : 'localhost:9090';

// Create a new HttpClient instance.
HttpClient httpClient = new HttpClient();

// Hook into the findProxy callback to set
// the client's proxy.
httpClient.findProxy = (uri) {
  return "PROXY $proxy;";
};

// This is a workaround to allow Proxyman to receive
// SSL payloads when your app is running on Android
httpClient.badCertificateCallback = 
  ((X509Certificate cert, String host, int port) => true);

자세한 기술 내용은 Proxyman Flutter 문서에서 확인할 수 있습니다.

2.2 Flutter에서 HTTPS/HTTP 트래픽 캡처 - iOS 시뮬레이터

  1. 먼저 iOS 시뮬레이터를 엽니다. Flutter 앱을 실행할 때 사용하는 시뮬레이터인지 확인하세요.
  2. Proxyman -> Certificate 메뉴 -> Install for iOS -> Simulator를 열고 안내에 따르세요. 프록시가 자동으로 설정되고 인증서가 한 번의 클릭으로 설치됩니다.
Proxyman - Install for iOS 메뉴
Proxyman - Install for iOS 메뉴

이제 iOS 시뮬레이터에서 Flutter 앱을 실행하고 HTTP/HTTPS 트래픽 캡처를 시작할 차례입니다.

Proxyman이 Flutter 앱의 HTTP/HTTPS 트래픽을 자동으로 캡처하기 시작합니다.

Proxyman - Flutter용 HTTPS 트래픽 캡처
Proxyman - Flutter용 HTTPS 트래픽 캡처

2.3. Flutter에서 HTTPS/HTTP 트래픽 캡처 - iOS 기기

iOS/iPadOS 기기에서 Flutter 앱의 HTTP/HTTPS 트래픽을 캡처하려면 기기에 Proxyman 인증서를 설치해야 합니다.

Proxyman -> Certificate 메뉴 -> Install for iOS -> Physical Device로 이동해 안내 단계를 따라 주세요.

Flutter용 Proxyman - Install for iOS 메뉴
Flutter용 Proxyman - Install for iOS 메뉴

마지막 단계에서 인증서를 설치하고 신뢰하도록 설정하세요.

이제 iOS/iPadOS 기기에서 Flutter 앱을 실행하고 HTTP/HTTPS 트래픽 캡처를 시작할 수 있습니다.

Proxyman - Flutter 앱의 HTTPS 트래픽 캡처
Proxyman - Flutter 앱의 HTTPS 트래픽 캡처

Proxyman이 Flutter 앱의 HTTP/HTTPS 트래픽을 자동으로 캡처하기 시작합니다.

결론

Flutter 앱의 HTTP/HTTPS 트래픽을 캡처하는 것은 매우 간단합니다.

  1. Flutter 프로젝트에 HTTP 프록시 설정을 추가합니다
  2. iOS/iPadOS 기기에 Proxyman 인증서를 설치합니다
  3. Flutter 앱을 실행하고 Proxyman으로 HTTP/HTTPS 트래픽 캡처를 시작합니다

프록시 코드를 릴리스 빌드에서 제외하기

프록시와 badCertificateCallback 코드는 디버그 빌드에서만 실행되도록 조건으로 감싸세요. 모든 인증서를 허용하는 콜백은 중요한 HTTPS 안전 검사를 무력화하므로, 사용자에게 절대 배포하면 안 됩니다. 이 글은 iOS에 초점을 맞추고 있습니다. 최신 Android 에뮬레이터의 경우, Proxyman 6.4 이상에서는 Flutter 네트워크 코드를 바꾸지 않고도 원클릭 Flutter 설정을 사용할 수 있습니다.

다음 단계

  • 디버깅 도구를 사용해 요청과 응답 페이로드를 확인하고 수정해 보세요.
  • Proxyman 웹사이트에서 Proxyman을 다운로드하세요.
Noah Tran
Noah Tran

2026년 7월 19일 수정됨. 디버그 전용 인증서 안내를 추가하고, Android 에뮬레이터 사용자에게 새로운 원클릭 설정 방법을 안내했습니다.

Flutter iOS 앱의 요청 확인하기

디버그 빌드를 Proxyman에 연결하면 실제 URL, 헤더, 바디, 타이밍, 서버 응답을 확인할 수 있습니다.

Proxyman 받기