일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- HashMap vs ArrayMap
- MediaDataSource
- gitignore
- print callstack
- java callstack
- android enum
- ArrayMap
- convert string to intent
- Intent String 변환
- corePoolSize
- convert Intent to string
- lufs
- callstack 출력
- BlockingQueue Capacity
- android network
- gitignore작성법
- APK 동적로딩
- RxJava 스터디
- RxJava Programming
- Service관리
- so파일 동적로딩
- 음량표준화
- enum performance
- mitmproxy
- Service 팁
- APK로딩
- Dagger2란
- 네트워크 디버깅
- Replaygain
- 오픈소스라이선스
- Today
- Total
일상&개발 로그
mitmproxy를 이용한 Android 네트워크 디버깅 본문
네트워크 디버깅(http/https)을 위해 솔루션을 찾아보다 mitmproxy를 찾았습니다.
stetho 같은 라이브러리도 확인해봤는데, 소스를 삽입하고 interceptor를 끼워넣어야 해서 패스.
사용이 간편하고,
proxy를 사용해서 따로 코드를 삽입하거나 로딩할 필요 없고,
라이브러리에서 쏘는 패킷도 확인 가능한 장점이 있습니다.
Proxy에 사용할 PC(Proxy서버)와 같은 WiFi 망에 물려있어야 하며,
프로세스/스레드/앱 별로 분류가 안되는 단점이 있겠습니다.
Mac환경에서 homebrew를 이용해서 간단히 설치가 가능합니다.
1. 설치
brew install mitmproxy
2. 단말 WiFi Proxy 설정
- 프록시: 수동
- 프록시 호스트 이름: PC(Proxy서버) IP주소
- 프록시 포트: 포트번호(8080)
3. Proxy 서버 실행
mitmproxy --listen-host [IP Address] -p [Port]
4. Https를 위한 Certificate 설정
- 단말 브라우저로 mitm.it 접속
- Certificate 다운로드 및 적용
5. 패킷 모니터링
- 요청/응답 받은 전체 패킷 리스트가 아래와 같이 표시된다.
방향키로 위아래 이동 및 엔터키로 해당 패킷 정보 조회가 가능함.
- Request항목은 해당 패킷의 Request정보를 표시한다.
- Response항목은 해당 패킷의 Response정보를 표시한다.
- Detail항목은 해당 패킷의 디테일정보를 표시한다.
패킷 목록 화면으로 이동하고 싶으면 q를 누르면 되고, 종료는 패킷 목록 화면에서 q를 누르면 됩니다.
참조 (References)
- https://mitmproxy.org/#mitmweb (홈페이지)
- https://medium.com/@rotxed/how-to-debug-http-s-traffic-on-android-7fbe5d2a34 (설치)
- https://docs.mitmproxy.org/stable/concepts-certificates/ (Certificate)
'개발 > 안드로이드 개발' 카테고리의 다른 글
미디어 음량 표준화 - ReplayGain 적용하기 (0) | 2017.09.13 |
---|---|
MediaDataSource를 이용한 프로그레시브 재생 구현 (2) | 2017.08.03 |
[PerformancePattern] Enum (0) | 2017.05.23 |
[PerformancePattern] ArrayMap vs HashMap (0) | 2017.05.22 |
[PerformancePatterns] Service 올바르게 사용하기 (0) | 2017.05.18 |