Android 에뮬레이터에서 Flutter 앱의 HTTPS 트래픽을 캡처하는 방법

Android 에뮬레이터에서 Flutter 앱의 HTTPS 트래픽을 캡처하는 방법 커버 이미지

업데이트: 2026년 1월 12일

Proxyman 6.4.0에 Android 에뮬레이터용 Automatic Setup 기능이 추가되었습니다. 이제 몇 번의 클릭만으로 Android 에뮬레이터에서 실행되는 Flutter 앱의 HTTPS 트래픽을 캡처할 수 있습니다.

원본 글

Android 에뮬레이터에서 Flutter 앱의 HTTPS 트래픽을 캡처해 본 적이 있다면 그 번거로움을 잘 아실 겁니다. iOS와 달리 Android에서는 이 작업이 생각보다 훨씬 어렵고, Flutter가 여기에 복잡함을 한 겹 더합니다.

이 가이드에서는 Proxyman 6.4.0으로 이 작업을 제대로 하는 방법을 설명합니다.

문제점

Android 에뮬레이터에서 Flutter의 네트워크 호출을 디버깅하기가 까다로운 데에는 몇 가지 이유가 있습니다:

  1. Flutter는 시스템 프록시 설정을 무시합니다 — Dart의 HttpClient는 기본적으로 시스템 프록시를 사용하지 않으므로, 에뮬레이터에 프록시를 설정해도 도움이 되지 않습니다.
  2. Android의 인증서 신뢰 정책 — Android 7부터는 사용자가 설치한 인증서가 기본적으로 신뢰되지 않습니다. 앱의 네트워크 보안 구성(network security configuration)을 수정해야 합니다.
  3. 수동 설정은 번거롭습니다 — adb로 인증서를 설치하고, WiFi 프록시를 설정하고, XML 파일을 편집하는 등 실수하기 쉬운 단계가 많습니다.

Proxyman 6.4.0은 Android 에뮬레이터용 Automatic Setup으로 이 과정을 간단하게 만들어 줍니다. 다만 트래픽이 프록시를 거치도록 Flutter 코드는 여전히 직접 설정해야 합니다.

Proxyman으로 Flutter Android 에뮬레이터의 HTTPS 트래픽 캡처
Proxyman으로 Flutter Android 에뮬레이터의 HTTPS 트래픽 캡처

사전 준비 사항

  • Proxyman macOS 6.4.0 이상
  • Android Emulator(API 24 이상)가 포함된 Android Studio
  • Flutter 프로젝트

✅ 새로운 해결 방법

  1. Android Studio에서 Android 에뮬레이터를 여세요. Play Store 버전이 아니라 Google APIs 버전인지 확인하세요.
  2. Proxyman에서 Certificate Menu → Install Certificate on Android → Emulator로 이동하세요.
  3. "Install Proxyman VPN" 체크박스가 선택되어 있는지 확인하세요.
  4. "Override all Emulators" 버튼을 클릭하세요.
Android 에뮬레이터용 Proxyman 자동 설정
Android 에뮬레이터용 Proxyman 자동 설정

이게 전부입니다. adb 명령을 직접 입력하거나 Android 설정 메뉴를 찾아다닐 필요가 없습니다.

  1. 이제 Android 에뮬레이터에 새 로컬 VPN이 설치됩니다. "Start" 버튼을 클릭해 VPN을 시작하세요.
  2. VPN이 실행 중이고 상태가 "Connected"로 표시되는지 확인하세요.
Android 에뮬레이터용 Proxyman 자동 설정
Android 에뮬레이터용 Proxyman 자동 설정
  1. 이제 Android 에뮬레이터에서 Flutter 앱을 실행하세요.
  2. Proxyman에서 HTTPS 트래픽이 캡처되는 것을 확인하세요.
Android 에뮬레이터용 Proxyman 자동 설정 - Flutter 앱의 HTTPS 트래픽 캡처
Android 에뮬레이터용 Proxyman 자동 설정 - Flutter 앱의 HTTPS 트래픽 캡처

⚠️ 이전 방법

Proxyman 6.3.0 이하 버전을 사용 중이라면 이전 방법을 따라야 합니다.

1단계: Flutter 코드에 프록시 설정하기

Flutter는 시스템 프록시 설정을 따르지 않으므로, 코드에서 HTTP 클라이언트를 직접 설정해야 합니다.

사용 중인 HTTP 라이브러리에 따라 설정 방법이 다릅니다:

http 패키지 사용하기

import 'dart:io';
import 'package:http/io_client.dart';

// Use your Mac's IP address (shown in Proxyman's Android setup guide)
// For emulator, you can use 10.0.2.2 which points to your host machine
String proxy = '10.0.2.2:9090';

HttpClient httpClient = HttpClient();

httpClient.findProxy = (uri) {
  return "PROXY $proxy;";
};

// Allow Proxyman's certificate
httpClient.badCertificateCallback = 
  ((X509Certificate cert, String host, int port) => true);

IOClient myClient = IOClient(httpClient);

// Now use myClient for your requests
var response = await myClient.get(Uri.parse('https://api.example.com/data'));

Dio 사용하기

import 'dart:io';
import 'package:dio/dio.dart';
import 'package:dio/io.dart';

String proxy = '10.0.2.2:9090';

Dio dio = Dio();

dio.httpClientAdapter = IOHttpClientAdapter(
  createHttpClient: () {
    final client = HttpClient();
    client.findProxy = (url) => 'PROXY $proxy';
    client.badCertificateCallback = (cert, host, port) => true;
    return client;
  },
);

// Now use dio for your requests
var response = await dio.get('https://api.example.com/data');

TIP: 10.0.2.2는 Android 에뮬레이터에서 호스트 머신의 localhost를 가리키는 특수한 별칭입니다. Mac에서 실행 중인 Proxyman에 연결하는 가장 쉬운 방법입니다.

badCertificateCallback은 개발 중에만 활성화하세요. 프로덕션 배포 전에 반드시 제거하세요.

2단계: Proxyman으로 Android 에뮬레이터 설정하기

이제 쉬운 부분입니다. Proxyman 6.4.0은 Android 에뮬레이터를 자동으로 설정할 수 있습니다:

  1. Android Studio에서 Android 에뮬레이터를 여세요
  2. Proxyman에서 Certificate Menu → Install Certificate on Android → Emulator로 이동하세요
  3. "Override all Emulators" 버튼을 클릭하세요.
Android 에뮬레이터용 Proxyman 자동 설정
Android 에뮬레이터용 Proxyman 자동 설정

이게 전부입니다. adb 명령을 직접 입력하거나 Android 설정 메뉴를 찾아다닐 필요가 없습니다.

3단계: Flutter 앱 실행하기

  1. Proxyman이 실행 중인지 확인하세요
  2. Android 에뮬레이터에서 Flutter 앱을 실행하세요:
flutter run
  1. 앱에서 네트워크 요청을 몇 번 발생시키세요
  2. Proxyman을 확인하세요. Flutter 앱에서 보낸 HTTPS 트래픽이 보여야 합니다.

확인하려는 도메인에 대해 SSL Proxying을 활성화하는 것을 잊지 마세요. Proxyman에서 도메인을 우클릭한 다음 **"Enable SSL Proxying"**을 선택하세요.

문제 해결

트래픽은 보이지만 SSL 오류가 표시돼요

  • 이전 방법을 사용 중이라면, 디버그용 HTTP 클라이언트가 Proxyman 인증서를 허용하는지 확인하세요
  • 인증서가 설치되었는지 확인하세요: Android Settings → Security → Encryption & Credentials → Trusted Credentials → User 탭
  • 에뮬레이터를 재시작한 다음 다시 시도하세요

Proxyman에 트래픽이 나타나지 않아요

  • Flutter 코드의 프록시 설정을 다시 확인하세요
  • localhost가 아니라 10.0.2.2:9090을 사용하고 있는지 확인하세요
  • Proxyman이 실행 중이고 9090 포트에서 수신 대기 중인지 확인하세요

앱이 충돌하거나 네트워크 요청이 실패해요

  • badCertificateCallback이 올바르게 설정되었는지 확인하세요
  • 에뮬레이터가 인터넷에 연결되어 있는지 확인하세요(에뮬레이터에서 Chrome을 열어 보세요)

요약

Android 에뮬레이터에서 Flutter의 HTTPS를 캡처하려면 다음이 필요합니다:

  1. Flutter HTTP 클라이언트 코드에 프록시 설정
  2. 디버그 환경에서만 Proxyman 인증서 신뢰
  3. Proxyman의 Android 에뮬레이터용 자동 설정 사용
  4. 앱을 실행하고 트래픽 확인

설정이 끝나면 Proxyman의 디버깅 도구(Breakpoint, Map Local, Scripting)를 모두 사용해 Flutter 앱의 네트워크 계층을 테스트하고 디버깅할 수 있습니다.

작업이 끝나면 Android 에뮬레이터 설정 창에서 Revert All Changes를 사용하거나, 에뮬레이터에서 테스트용 VPN과 프록시를 제거하세요. badCertificateCallback이나 모든 인증서를 허용하는 규칙은 절대 배포하지 마세요. 이런 우회 방법은 로컬 디버그 빌드에서는 유용하지만, 릴리스 빌드를 안전하지 않게 만듭니다.

다음으로 읽을거리


Proxyman은 iOS, Android, 시뮬레이터, 에뮬레이터에서 HTTP/HTTPS 트래픽을 캡처하고 확인할 수 있도록 돕는 고성능 macOS/Windows/Linux 앱입니다.

https://proxyman.com에서 받을 수 있습니다.

Noah Tran
Noah Tran

2026년 7월 17일 수정됨. 시점에 따라 바뀌는 표현을 삭제하고, 디버그 전용 신뢰 설정, 문제 해결, 정리 방법을 명확하게 정리했습니다.

Flutter 앱 트래픽을 한곳에서 확인하기

Android 에뮬레이터를 준비하고 Proxyman에서 Flutter 앱의 요청을 따라가 보세요.

macOS용 Proxyman 체험하기