1. Proxy 란?
- 대리인, 중계인
- 사용자의 요청이 프록시를 통해 전달되고 서버의 응답도 다시 프록시를 거쳐 클라이언트로 전달됨.
Charles Proxy 역할
SSL Proxying : SSL의 요청과 응답을 볼 수 있다.
Bandwidth Throttling : Latency를 줘 Internet 연결을 느리게 할 수 있다.
AJAX Debugging : XML과 JSON의 요청과 응답을 트리 혹은 텍스트로 볼 수 있다.
Back-end의 변화를 테스트하기 위해 요청을 반복할 수 있다.
다른 Inputs값을 테스트하기 위해 요청을 수정할 수 있다.
Breakpoint되는 부분에 요청값과 응답값을 변경하여 테스트 할 수 있다.
2. Charles 설치

2.1. Android (iOS) 모바일과 연결
2.1.1. Charles Proxy 에서 컴퓨터에 인증서 설치
- File > Help > SSL Proxying > Install Charles Root Certificate
- 설치된 인증서(Charles Proxy CA) 를 시스템에서 신뢰할 수 있는 인증서로 설치 (mac 은 키체인)
- Proxy > SSL Proxying Setting > Enable SSL Proxying
- Include 와 Exclude 영역 설정

2.1.2. Android (iOS) 와 연결
- 같은 와이파이에 연결
- 와이파이 프록시 수동 설정
• 프록시 호스트 이름 = Charles Proxy > Help > Local IP Address
• 프록시 포트 = Proxy > Proxy Settings > HTTP Proxy > Port
- 모바일에 인증서 설치
• https://chls.pro/ssl or 상기 받았던 인증서를 안드로이드 복사 후 설치
• 설정 > 보안 > 기기에 저장된 인증서 설치 > CA 인증서
2.1.3. 연결된 화면

3. Charels 대표 기능
3.1. 네트워크 Latency 설정
- 응답을 지연(Throttle Setting)
3.2. Breaking Point Setting
- API 혹은 서버 통신이 요청 온 순간부터 통신을 막을 수 있음.
- 요청 값을 수정하여 실행하기도 하고 응답값을 수정하여 실행하기도 함.
• API 혹은 서버 통신이 요청이 오면 요청값을 Edit 할 수 있는 화면이 출력됨.
• Edit Request 를 눌러 Quary param 등을 수정을 할 수 있고 Execute 를 클릭하면
수정한 요청값으로 응답을 받게 되고 응답도 실행하게 되면 Client 에 수정된 내용으로 반영 가능
3.3. Map Remote
- Protocol, Host 정보, Path 및 Query 를 바꿔서 Client 에 보낼 수 있음.
• Protocol이 http로 되어있을 때, https로 변경하여 보낼 수 있음.
3.4. Map Local
- 서버에서 준 JSON 형태의 응답값을 수정하고 JSON 파일로 첨부하여 Client 에서 결과를 테스트
- Client 디버깅 시 응답값을 하나하나 바꿔가며 이슈의 원인을 파악할 때 사용
- 테스트 데이터 혹은 API 가 개발 배포 되지 않은 상태에서 Client 의 UI 테스트 시 사용 할 수 있음.
* Client 가 선 개발 완료 및 배포된 상태인 경우
3.5. 기타
- Rewrite, Compose 등 다양한 기능을 제공하고 Postman 과 같이 API 테스트에도 사용 가능
출처: https://techblog.gccompany.co.kr/charles-proxy-%EC%86%8C%EA%B0%9C-4c4a3bbc8994