본문으로 건너뛰기

Android 기기 & 에뮬레이터

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

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

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

  • 실제 Android 기기: 아래의 수동 설정을 따르세요. 기기가 Proxyman을 실행 중인 컴퓨터에 네트워크로 연결될 수 있어야 합니다.
  • Android 에뮬레이터: 자동 설정 스크립트부터 시작하세요.
  • Google Play 에뮬레이터 이미지: Google Play 및 Magisk 가이드를 따르세요. 표준 자동 설정으로는 모든 이미지를 지원할 수 없습니다.

컴퓨터 없이 휴대폰에서 바로 캡처하려면 독립형 Proxyman Android 앱을 사용하세요.

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

  • Certificate Menu -> Install Certificate on Android -> Physical Devices…
  • Certificate Menu -> Install Certificate on Android -> Emulators…
정보

Android 에뮬레이터를 사용한다면 Android 에뮬레이터용 자동 스크립트를 확인하세요

동영상​

API 36 Android 에뮬레이터에서 네이티브 Android 앱(OkHttp)의 HTTPS 캡처
Proxyman for Android 앱으로 Android에서 HTTP 및 HTTPS 트래픽 캡처 · proxyman.com에서 보기

1. Android 설정 가이드​

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

Wi-Fi 프록시 서버와 포트, proxy.man/ssl 링크, 네트워크 보안 설정 XML이 포함된 Proxyman Android 설정 가이드

Android 기기 설정 가이드

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

  1. Mac에 Root Proxyman Certificate를 설치하세요. macOS 가이드를 참고할 수 있습니다.
  2. Android 기기 또는 에뮬레이터에서 -> 설정 앱 열기 -> Wi-Fi -> 현재 Wi-Fi 선택 -> 아래 표의 값으로 HTTP 프록시를 설정하세요.
항목값
Server IPMac의 현재 IP 주소
PortProxyman의 현재 포트 (기본값: 9090)
AuthenticationNo
정보

일부 Samsung 기기는 HTTP 프록시를 설정한 후 인터넷에 접속할 수 없을 수 있습니다. 현재 네트워크를 삭제한 다음 다시 연결하세요.

VPN 앱을 사용 중이라면 일부 VPN 앱이 HTTP/HTTPS 프록시 설정과 충돌할 수 있으므로 반드시 종료하세요.

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

Android 11, Android 12 이상:​

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

Android 10 이하:​

  • 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

정보

**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 탭

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

  • res/xml/network_security_config.xml 추가
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에 추가
manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config" ... >
...
</application>
</manifest>
정보

자세한 내용은 Network Security Configuration 에서 확인하세요.

정보

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

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

7. 완료 ✅

2. 문제 해결​

기기 연결 문제 해결 가이드의 Android 섹션을 확인하세요.

3. 샘플 Android 프로젝트​

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

GitHub 링크: https://github.com/ProxymanApp/OKHTTP-Android-Sample

4. React Native Android 앱​

Android 앱을 React Native로 개발했다면 React Native 페이지를 확인하세요.

5. 내장 WebView의 트래픽 가로채기​

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

  1. Android 앱의 다른 HTTPS 트래픽이 보이는지 확인하세요. 보인다면 인증서가 올바르게 설정된 것입니다.
  2. WebView에 다음 코드를 삽입하세요
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 사용​

크레딧: Shirshak

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. 다음 스크립트를 명령줄에 입력하세요

    $ 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 사이의 요청을 차단하는 경우가 있어 이 방법이 더 잘 작동합니다.

추가 자료​

더 알아보기​