# Android 기기 & 에뮬레이터

> 데스크톱 Proxyman으로 Android 기기와 에뮬레이터의 HTTP/HTTPS 트래픽을 캡처하세요. 프록시 설정, 인증서 설치, 자동 스크립트, Google Play 이미지까지 다룹니다.

이 가이드는 Android 기기 또는 에뮬레이터의 트래픽을 컴퓨터에서 실행 중인 Proxyman으로 보내는 방법을 설명합니다. 프록시 설정, 인증서 설치, HTTPS 검사를 위한 앱의 인증서 신뢰 설정을 다룹니다.

사용하는 기기에 맞는 설정을 선택하세요:

* **실제 Android 기기:** 아래의 수동 설정을 따르세요. 기기가 Proxyman을 실행 중인 컴퓨터에 네트워크로 연결될 수 있어야 합니다.
* **Android 에뮬레이터:** [자동 설정 스크립트](https://proxyman.com/docs/ko/debug-devices/android-device/automatic-script-for-android-emulator)부터 시작하세요.
* **Google Play 에뮬레이터 이미지:** [Google Play 및 Magisk 가이드](https://proxyman.com/docs/ko/debug-devices/android-device/google-play-android-emulator-with-magisk)를 따르세요. 표준 자동 설정으로는 모든 이미지를 지원할 수 없습니다.

컴퓨터 없이 휴대폰에서 바로 캡처하려면 [독립형 Proxyman Android 앱](https://proxyman.com/android)을 사용하세요.

데스크톱에서 캡처하려면 Proxyman에서 해당 가이드를 여세요:

* **Certificate** **Menu** -> **Install Certificate on Android -> Physical Devices…**
* **Certificate Menu -> Install Certificate on Android -> Emulators…**

> **노트:** [Android 기기 & 에뮬레이터 설정 방법 간단 튜토리얼](https://proxyman.com/docs/ko/debug-devices/android-device/sample-android-project)을 확인해 보세요

> **노트:** **Android 에뮬레이터**를 사용한다면 [Android 에뮬레이터용 자동 스크립트](https://proxyman.com/docs/ko/debug-devices/android-device/automatic-script-for-android-emulator#1-whats-it)를 확인하세요

## 동영상 {#video}

[API 36 Android 에뮬레이터에서 네이티브 Android 앱(OkHttp)의 HTTPS 캡처](https://www.youtube.com/watch?v=CWInB7gZj6g)

[Video: Proxyman for Android 앱으로 Android에서 HTTP 및 HTTPS 트래픽 캡처](https://proxyman.com/videos/android) (44 seconds)

## 1. Android 설정 가이드 {#1-android-setup-guide}

수동 설정에서는 먼저 기기 프록시를 설정한 다음, 인증서를 설치하고 개발 중인 앱에서 인증서 신뢰를 구성하세요. 인증서를 설치하는 것만으로는 모든 Android 앱이 이 인증서를 신뢰하지 않습니다. 아래 단계를 모두 따르세요:

![Wi-Fi 프록시 서버와 포트, proxy.man/ssl 링크, 네트워크 보안 설정 XML이 포함된 Proxyman Android 설정 가이드](https://proxyman.com/docs/assets/proxyman-android-device-setup-guide.jpg)

_Android 기기 설정 가이드_

**Certificate** 메뉴 -> **Install Certificate on Android** -> **Physical Devices…**에서 가이드를 열고 다음 단계를 따르세요:

1. Mac에 **Root Proxyman Certificate**를 설치하세요. [macOS 가이드](https://proxyman.com/docs/ko/debug-devices/macos)를 참고할 수 있습니다.
2. Android 기기 또는 에뮬레이터에서 -> 설정 앱 열기 -> Wi-Fi -> 현재 Wi-Fi 선택 -> 아래 표의 값으로 HTTP 프록시를 설정하세요.

| 항목           | 값                                                |
| -------------- | ------------------------------------------------- |
| Server IP      | Mac의 현재 IP 주소                                 |
| Port           | Proxyman의 현재 포트 (기본값: 9090)                 |
| Authentication | No                                                |

> **노트:** 일부 Samsung 기기는 HTTP 프록시를 설정한 후 인터넷에 접속할 수 없을 수 있습니다. 현재 네트워크를 삭제한 다음 다시 연결하세요.
>
> **VPN 앱을 사용 중이라면** 일부 VPN 앱이 HTTP/HTTPS 프록시 설정과 충돌할 수 있으므로 반드시 종료하세요.

  3\. Android 기기의 웹 브라우저에서 [http://proxy.man/ssl](http://proxy.man/ssl) 또는 http://cert.proxyman.io 를 열어 Proxyman 인증서를 설치하세요.

### **Android 11, Android 12 이상:** {#android-11-android-12-or-later}

* Google Chrome 앱에서 http://proxy.man/ssl에 접속해 인증서를 다운로드하세요.
* Android 11 이상에서는 설정 앱에서 인증서를 수동으로 설치해야 합니다.
* 설정 앱 -> Security -> Encryption & Credentials -> Install a Certificate -> "CA Certificate" 선택 -> 기기 저장공간에서 Proxyman CA 인증서 선택.

### **Android 10 이하:** {#android-10-and-below}

* http://proxy.man/ssl에 접속하면 Android 기기가 인증서를 자동으로 다운로드하고 설치합니다. 이때 **VPN and App Section**을 선택했는지 확인하세요.

> **노트:** **Android 12 이상**에서 "Can't install the Certificate: This file can't be used as a VPN & app user certificate" 경고가 표시되면 대신 "CA Certificate"를 선택하세요. 
>
> 참고: [https://stackoverflow.com/a/70261393/3127477](https://stackoverflow.com/a/70261393/3127477)

> **노트:** **http://proxy.man/ssl**은 Proxyman 내부 HTTP 서버가 제공하는 로컬 웹사이트입니다. 열리지 않으면 Wi-Fi 네트워크를 삭제한 후 다시 연결하고, Proxyman 앱이 실행 중인지 확인하세요.

4\. Android 11 이상에서 인증서를 확인하세요: 설정 -> Security -> Encryption & Credentials -> Trusted Credentials -> User 탭을 엽니다.

아래 스크린샷처럼 **Proxyman CA** 인증서가 보이는지 확인하세요.

![Proxyman CA 인증서가 표시된 Android Trusted credentials의 User 탭](https://proxyman.com/docs/assets/Screen_Shot_2020-09-29_at_9_00_46_PM%20(1).png)

    5\. 앱 소스 코드를 열고 다음 두 `xml` 파일을 추가하세요.

* **res/xml/network\_security\_config.xml** 추가

```markup title="network_security_config.xml"
<network-security-config>
  <debug-overrides>
    <trust-anchors>
      <!-- Trust user added CAs while debuggable only -->
      <certificates src="user" />
      <certificates src="system" />
    </trust-anchors>
  </debug-overrides>

  <base-config cleartextTrafficPermitted="true">
    <trust-anchors>
      <certificates src="system" />
      <certificates src="user" />
    </trust-anchors>
  </base-config>
</network-security-config>
```

* **AndroidManifest.xml**에 추가

```markup title="manifest.xml"
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application android:networkSecurityConfig="@xml/network_security_config" ... >
    ...
    </application>
</manifest>
```

> **노트:** 자세한 내용은 [Network Security Configuration ](https://developer.android.com/training/articles/security-config.html)에서 확인하세요.

> **노트:** **Release 빌드에서는 해당 설정을 반드시 제거하세요**. 그렇지 않으면 HTTP/HTTPS 요청이 가로채져 Production 빌드에서 민감한 데이터가 유출될 수 있습니다.

6\. Android 에뮬레이터를 사용 중이라면 에뮬레이터를 다시 시작하세요

7\. 완료 ✅

## **2. 문제 해결** {#2-troubleshooting}

기기 연결 문제 해결 가이드의 [Android 섹션](https://proxyman.com/docs/ko/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#android-devices-and-android-emulators)을 확인하세요.

## 3. 샘플 Android 프로젝트 {#3-sample-android-project}

XML 설정에 문제가 있다면, 이미 설정이 완료된 다음의 간단한 프로젝트를 확인하세요:

GitHub 링크: [https://github.com/ProxymanApp/OKHTTP-Android-Sample](https://github.com/ProxymanApp/OKHTTP-Android-Sample)

- [샘플 Android 프로젝트](https://proxyman.com/docs/ko/debug-devices/android-device/sample-android-project)

## 4. React Native Android 앱 {#4-react-native-android-app}

Android 앱을 React Native로 개발했다면 [React Native 페이지](https://proxyman.com/docs/ko/debug-devices/react-native)를 확인하세요.

## 5. 내장 WebView의 트래픽 가로채기 {#5-intercept-traffic-from-embedding-webview}

일부 Android 앱은 HTTPS 트래픽을 가로채기 위해 추가 단계가 필요한 내장 WebView를 사용합니다.

1. Android 앱의 다른 HTTPS 트래픽이 보이는지 확인하세요. 보인다면 인증서가 올바르게 설정된 것입니다.
2. WebView에 다음 코드를 삽입하세요

```java
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    WebView.setWebContentsDebuggingEnabled(true);
}

// The following two lines help with disabling asset caching
webView.getSettings().setAppCacheEnabled(false);
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
```

  3\. 컴퓨터에서 새 Chrome 탭을 열고 `chrome://inspect`로 이동하세요

4\. WebView를 열면 Chrome 탭에 표시됩니다. `inspect`를 클릭해 원격 디버거를 사용하세요.

## 6. 루팅된 기기에서 SSL Proxying 사용 {#6-ssl-proxying-using-root-device}

> 크레딧: [Shirshak](https://github.com/shirshak55)

Android 버전이 7보다 낮다면 이 단계는 필요하지 않습니다. Android 7부터 Google은 기본적으로 중간자 공격 도구가 앱 트래픽을 읽지 못하도록 추가 보안 기능을 도입했습니다.

휴대폰 루팅으로 인해 발생하는 문제에 대해서는 책임을 지지 않습니다. 이 가이드는 본인의 책임 하에 따라 주세요.

> **노트:** 최신 Proxyman 버전은 인증서를 `~/Library/Application Support/com.proxyman.NSProxy/app-data/proxyman-ca.pem`에 저장합니다. Mac에 `~/.proxyman` 폴더가 없다면 해당 경로를 대신 사용하거나, Certificate 메뉴 -> Export -> Root Certificate as PEM으로 인증서를 내보내세요.

1. `magisk` 프레임워크로 휴대폰을 루팅하세요.
2. 제한된 시스템 폴더에서 파일을 복사하고 붙여넣을 수 있도록 루트 파일 브라우저를 설치하세요.
3.  다음 스크립트를 명령줄에 입력하세요

    ```bash
    $ cd ~/.proxyman
    // We copy certificate to another file name just so we may need it later
    $ cp proxyman-ca.pem temp.pem
    $ hash=$(openssl x509 -inform PEM -subject_hash_old -in temp.pem | head -1)
    $ mv temp.pem "$hash.0"
    ```
4. `~/.proxyman` 폴더에서 이름이 숫자로 시작하고 `.0`으로 끝나는 파일을 찾을 수 있습니다.
5. 해당 파일을 Android 기기로 복사하세요.
6. 루트 파일 브라우저로 해당 파일을 /system/etc/security/cacerts/로 옮기세요.
7. 이제 프록시를 자유롭게 사용하세요.

> **노트:** 1) Android 휴대폰에서는 게이트웨이를 잘못된 IP로 설정하세요. 그래야 모든 트래픽이 Proxyman 프록시를 통해서만 전달됩니다.
> 2) macOS의 인터넷 공유 기능으로 모바일 핫스팟을 만들 수 있습니다. 그러면 Android 휴대폰에서 Proxyman 프록시를 쉽게 사용할 수 있습니다. 공유기가 휴대폰과 Mac 사이의 요청을 차단하는 경우가 있어 이 방법이 더 잘 작동합니다.

## 추가 자료 {#additional-resources}

* Mitmproxy에는 Android 에뮬레이터에 시스템 신뢰 CA 인증서를 설치하는 방법을 설명한 유용한 튜토리얼이 있습니다. 같은 단계를 Proxyman 인증서에도 적용할 수 있습니다: [https://docs.mitmproxy.org/stable/howto-install-system-trusted-ca-android/](https://docs.mitmproxy.org/stable/howto-install-system-trusted-ca-android/)

## 더 알아보기 {#learn-more}

* [Android 11에서 자체 서명 인증서를 설치하고 신뢰하는 방법](https://proxyman.com/posts/2020-09-29-Install-And-Trust-Self-Signed-Certificate-On-Android-11)
* [API 35 Android 에뮬레이터에서 HTTPS 트래픽을 캡처하는 방법](https://proxyman.com/posts/capture_https_android_emulators)
* [Proxyman이 Android에서 출시되었습니다](https://proxyman.com/posts/2026-05-25-Proxyman-is-now-available-on-Android)
* [Proxyman으로 Android 기기의 HTTP/HTTPS 트래픽 캡처](https://proxyman.com/android-device) (Proxyman 웹사이트)
