Charles Proxy(HTTP 프록시/모니터링) 소개
Charles Proxy는 개발자와 QA 엔지니어, 보안 연구자가 애플리케이션과 서버 간의 HTTP/HTTPS 트래픽을 가로채고 검사, 재생(replay), 수정할 수 있도록 하는 강력한 프록시 도구입니다. GUI 기반으로 사용이 쉬우면서도 리퀘스트/리스폰스 수정, 리디렉션, 속도 시뮬레이션, SSL 프로토콜 디버깅 등 고급 기능을 제공합니다. 공식 사이트: https://www.charlesproxy.com
핵심 기능
- HTTP/HTTPS 트래픽 캡처 및 보기
- SSL 프록시(SSL Proxying)로 암호화된 트래픽 복호화
- 요청/응답 편집 및 재전송(Repeat, Edit & Resend)
- 맵 및 리다이렉트(Map Local, Map Remote)
- 네트워크 조건 시뮬레이션(Throttling)
- 세션 저장 및 비교
- 커맨드라인 자동화(일부 기능)
활용 분야
- 모바일 앱 네트워크 디버깅(Android/iOS)
- 웹 개발자 API 요청/응답 분석
- QA의 리그레션 테스트 및 시나리오 재현
- 보안 연구자의 SSL/TLS와 쿠키/헤더 분석
- 성능 테스트를 위한 속도 제한 및 지연 시뮬레이션
멀티 플랫폼별 요구사항 및 설치 가이드
Windows
- 공식 페이지에서 최신 Windows용 설치 파일(.exe) 다운로드: https://www.charlesproxy.com/download/
- 다운로드한 설치 파일 실행 후 지시에 따라 설치
- 설치 완료 후 Charles 실행
- HTTPS 트래픽을 보려면 상단 메뉴의 Proxy > SSL Proxying Settings에서 Enable SSL Proxying 체크
- Tools > SSL Proxying > Install Charles Root Certificate(혹은 Help 메뉴)로 로컬 인증서 설치
요구사항: Windows 10 이상 권장, 64-bit, 최소 2GB RAM 이상 권장
macOS
- 공식 사이트에서 macOS dmg 파일 다운로드
- 드래그하여 Applications 폴더로 이동
- Charles 실행(처음 실행 시 권한 팝업 허용 필요)
- Help > SSL Proxying > Install Charles Root Certificate로 키체인에 인증서 추가
요구사항: macOS 10.13 이상 권장
Linux
- Charles는 공식적으로 Linux 네이티브 버전을 제공하지 않습니다. Linux에서 사용하려면 macOS/Windows 가상머신 또는 Wine과 같은 호환 레이어를 사용해야 합니다. 공식적으로는 Windows/macOS 환경 권장이며, 대안으로 Fiddler 또는 mitmproxy 사용 고려.
모바일(안드로이드/iOS)에서 트래픽 캡처 설정
공통 절차
- Charles가 설치된 컴퓨터와 모바일 기기를 동일한 Wi-Fi에 연결
- Charles에서 Proxy > Proxy Settings에서 포트(기본 8888) 확인
- 모바일 기기에서 Wi-Fi 설정 > 고급 > 프록시 설정에 수동으로 컴퓨터의 IP와 포트 입력
- 모바일에서 브라우저로 http://charlesproxy.com/getssl 또는 Help 메뉴의 지시를 따라 Charles Root Certificate 설치
- iOS는 인증서 신뢰 설정 필요: 설정 > 일반 > 정보 > 인증서 신뢰 설정에서 Charles 인증서 신뢰 체크
추가 팁
- Android 7+ 앱의 경우 앱 자체에서 사용자 인증서를 신뢰하도록 설정되어 있지 않으면 루팅 없이 캡처 불가(네트워크 보안 설정(network_security_config)으로 개발자 모드에서 허용 가능)
- iOS의 경우 기기 프로파일이나 MDM 정책에 따라 인증서 신뢰가 달라질 수 있음
설치/다운로드 키워드별 안내
- Charles Proxy 다운로드: https://www.charlesproxy.com/download/
- Charles 설치 방법 Windows: .exe 설치, 관리자 권한 권장
- Charles 설치 방법 macOS: .dmg 설치 후 Applications 폴더 이동
- Charles 사용법: Proxy 설정, SSL Proxying 활성화, 모바일 프록시 설정
- Charles 가격: 아래 가격 섹션 참조
가격(라이선스) 정보
Charles는 상용 유료 소프트웨어이며 개인용 및 기업용 라이센스를 제공합니다. 가격은 변동될 수 있으니 공식 페이지의 최신 가격을 확인하세요.
- 무료 평가판: 제공(일정 기능 제한 또는 시간 제한)
- 개인 라이선스: 1 사용자용 연간/영구 라이선스 옵션이 있음(정확한 금액은 공식 페이지 참조)
- 기업/팀 라이선스: 볼륨 라이선스 및 엔터프라이즈 계약 가능
가격 확인 및 구매: https://www.charlesproxy.com/buy/
장단점 비교표
| 항목 | 장점 | 단점 |
|---|---|---|
| 사용 편의성 | GUI 기반으로 직관적이며 초보자도 접근 쉬움 | 고급 기능 학습 곡선 있음(SSL 설정 등) |
| SSL 디버깅 | SSL Proxying으로 HTTPS 트래픽 복호화 가능 | 모바일 앱의 네트워크 보안 정책으로 캡처가 제한될 수 있음 |
| 플랫폼 | macOS/Windows 네이티브 지원 | Linux 네이티브 미지원 |
| 기능성 | 리퀘스트 편집, Map Local/Remote, 속도 시뮬레이션 등 풍부 | 가격이 오픈소스 대안보다 높음 |
| 자동화 | 일부 스크립트/커맨드라인 가능 | 완전한 자동화는 제한적, 대체 도구와 연계 필요 |
Charles vs Fiddler vs mitmproxy 비교
| 도구 | 장점 | 적합한 사용자 |
|---|---|---|
| Charles | GUI 친화적, 모바일 캡처 가이드와 쉬운 SSL 인증서 설치 | 프론트엔드/모바일 개발자, QA |
| Fiddler | 강력한 Windows 통합, 무료(기본) | Windows 환경 중심의 개발자 |
| mitmproxy | 오픈소스, 스크립트 기반 강력한 자동화 | CLI/파이썬 스크립트에 익숙한 사용자가 자동화에 적합 |
트러블슈팅(자주 발생하는 문제와 해결 방법)
- 모바일에서 트래픽이 보이지 않음: 동일한 네트워크에 연결되어 있는지, 프록시 IP/포트 입력이 올바른지 확인
- HTTPS 복호화 실패: Charles Root Certificate가 기기에 설치되고 신뢰되었는지 확인. iOS는 "인증서 신뢰 설정"에서 활성화 필요
- 앱이 네트워크 요청을 하지 않음: 앱이 자체적으로 프록시 우회 또는 certificate pinning(핀닝) 적용 시 캡처 불가. 개발자 모드로 pinning 해제하거나 Frida/patching 필요
- 인증서 설치 시 브라우저에서 경고 발생: 브라우저 캐시/HTTPS 세션 문제일 수 있으니 브라우저 재시작 및 기기 재부팅 권장
베스트 프랙티스 및 팁
- 민감정보(토큰/비밀번호) 로그를 저장하지 않도록 주의
- 세션을 저장해 두면 반복 디버깅에 유리
- Map Local 기능으로 빠르게 백엔드 응답을 모킹해 테스트
- Throttling으로 모바일 네트워크 환경(3G/EDGE) 재현하여 앱 반응성 테스트
결론 및 추천
Charles Proxy는 GUI 기반의 강력한 HTTP/HTTPS 디버깅 도구로 모바일/웹 개발자에게 매우 유용합니다. SSL 복호화 기능과 Map Local/Remote, 속도 시뮬레이션 등 실무에 바로 활용 가능한 기능이 풍부합니다. 다만 Linux 네이티브 미지원과 상용 라이선스 비용은 고려 요소입니다. 가볍게 사용해보고 싶다면 무료 평가판을 먼저 써보고, 팀 단위에서는 라이선스 정책을 문의해 보세요.
참고 자료(공식 링크 및 추천 영상)
- 공식 다운로드 및 정보: https://www.charlesproxy.com/download/
- 구매/라이선스: https://www.charlesproxy.com/buy/
추천 유튜브 강좌:
- Charles Proxy Tutorial — Getting Started (예시): https://www.youtube.com/watch?v=Zfc1oQ4gJ20
- Capture Mobile App Traffic using Charles Proxy (예시): https://www.youtube.com/watch?v=6cGQ2Vx9RkI