Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- linksClickable
- 하이퍼링크
- Android13
- 네트워크 디버깅
- 네트워크 인스펙터
- 네트워크 위변조
- BIND
- Android
- network inspector
- 안드로이드
- app
- autolink
- DataBinding
- xmlns
- textColorLink
- TextView
- Photo Picker
Archives
- Today
- Total
애증의 개발일지
[Android] Network Inspector로 쉽게 네트워크 디버깅하기 본문
Network Inspector란?
Network Inspector는 네트워크 통신 관측부터 네트워크 위변조까지 가능한 안드로이드 스튜디오에 내장된 네트워크 디버깅 툴입니다. 이번 포스트에선 Network Inspector에 대해 다뤄보고자 합니다.
사용법
- 안드로이드 스튜디오 Bumblebee 버전부터 사용 가능(Connection View, Thread View만 지원)
- Network Inspector 등장 이전에는 Network Profiler 지원. Network Inspector로 Migration 된 이유는 범블비 업데이트 포스트 참고
- Rules를 통한 네트워크 위변조 기능의 경우 안드로이드 스튜디오 Flamingo Canary 1부터 지원
- View > Tool Windows > App Inspection
- inspect하고 싶은 디바이스 선택후 사용
- (2024. 07. 07 기준) HttpsURLConnection과 OkHttp 라이브러리에서만 해당 기능 사용 가능
- 단, 라이브러리 내부에서 HttpsURLConnection과 OkHttp를 사용하는 네트워킹 라이브러리의 경우 Network Inspector로 트래킹 가능
기능
그래프 패널
- Network Inspector 상단 창에는 위 사진과 같은 그래프 패널이 있는데, 해당 패널에서는 네트워크 요청/응답이 오고간 이벤트 타임라인을 확인할 수 있습니다.
- 주황색 그래프 : 네트워크 요청 관련 그래프
- 파란색 그래프 : 네트워크 응답 관련 그래프
- 그래프 X축의 경우 타임라인을 의미하고, 그래프 Y축의 경우 네트워크 통신에 사용된 바이트를 의미합니다.
- 그래프를 드래그하면 해당 타임라인에 요청/응답이 이뤄진 네트워크 통신 기록을 Connection View, Thread View에서 확인할 수 있습니다.
Connection View
- 네트워크 요청 및 응답 기록에 대한 전반적인 정보를 확인할 수 있습니다. 확인할 수 있는 항목은 아래와 같습니다.
- Name : 네트워크 요청 이름
- 공식문서에서도 정확한 네이밍 규칙을 따로 설명해놓지는 않았지만, 대략 API 마지막 path + 그 뒤에 나열되는 모든 값이 네이밍이 되는 것으로 보입니다.
- Size : 응답값 크기(Response size)
- Type : 응답으로 날아온 데이터 타입(json, jpeg, html 등)
- Status : HTTP response status code
- Time : 네트워크 요청부터 응답까지 걸린 시간
- Timeline : 언제 해당 네트워크 통신이 이뤄졌는지
- Name : 네트워크 요청 이름
- 각각의 항목을 클릭하면 해당 항목에대해 네트워크 통신 기록을 오름차순, 내림차순 정렬 할 수 있습니다.
- 네트워크 기록을 더블 클릭하면 상세 화면이 뜨고 더 자세한 정보를 확인할 수 있습니다.
Thread View
- 어떤 스레드에서, 어느 타이밍에 네트워크 통신이 이뤄졌는지 확인할 수 있습니다. 확인할 수 있는 항목은 아래와 같습니다.
- Initiating thread : 네트워크 통신이 이뤄진 스레드
- Timeline : 언제 해당 네트워크 통신이 이뤄졌는지
- 각각의 항목을 클릭하면 해당 항목에대해 네트워크 통신 기록을 오름차순, 내림차순 정렬 할 수 있습니다.
- 타임라인에 있는 네트워크 기록을 더블 클릭하면 상세 화면이 뜨고 더 자세한 정보를 확인할 수 있습니다.
상세 화면
- Connection View, Thread View에서 네트워크 기록을 더블 클릭하면 나타나는 상세 화면으로, 해당 네트워크 기록에 대한 보다 자세한 정보를 확인할 수 있습니다.
Overview
- 응답값, 요청 이름, HTTP 메소드, HTTP 상태 코드, 응답값 데이터 타입, 응답값 크기, 호출된 스레드, API URL, 네트워크 요청/응답 타이밍에 대한 대략적인 정보를 확인할 수 있습니다.
Response
- Response로 날아온 응답값의 Header 정보 및 Body 값을 확인할 수 있습니다.
Request
- Request로 날아간 요청값의 Header 정보 및 Body 값을 확인할 수 있습니다.
Call Stack
- 해당 네트워크 요청이 이뤄진 함수 Call Stack을 확인할 수 있습니다.
Rules
- 네트워크 통신에 대한 요청값, 응답값, 상태값 등을 위변조 할 수 있는 Rule을 생성할 수 있습니다.
- 상단패널
- + 버튼, - 버튼을 통해 새로운 Rule 생성 또는 삭제를 할 수 있습니다.
- 체크박스 체크, 해제를 통해 해당 Rule을 적용 할지 말지 결정할 수 있습니다.
- 화살표 버튼을 통해 Rule 목록을 위아래로 탐색할 수 있습니다.
- 문서 모양의 버튼을 클릭해서 Rule을 Clone할 수 있습니다.
- 상단패널
Rule 상세 화면
- Origin 패널에서 위변조를 진행하고 싶은 Origin API를 설정합니다.
- 인풋 필드에 따로 값을 지정하지않으면 Any 값으로 설정되어, 조건에 부합하는 모든 API에 해당 Rule을 적용합니다.
- Response 패널에서 변조할 HTTP 상태 코드와, 변조 결과로 적용될 HTTP 상태 코드를 지정할 수 있습니다.
- Header rules 패널에서 헤더 양식을 위변조하거나, 새로운 헤더를 추가할 수 있습니다.
- 기존에 날아오는 헤더 양식을 감지할때, 오른쪽 체크박스(.* Regex)를 체크하면 정규 표현식을 사용 가능합니다.
- Body rules 패널에서 body값을 위변조 할 수 있습니다.
- Replace entire body 체크박스를 체크하면, 전체 body 값을 변조할 수 있습니다.
- Header rules와 마찬가지로, 기존에 날아오는 헤더 양식을 감지할때, 오른쪽아래 체크박스(.* Regex)를 체크하면 정규 표현식을 사용 가능합니다.
Network Inspector를 사용했을 때 장단점
장점
- 다른 서드파티 네트워크 디버깅 툴(ex. Charles Proxy)과는 달리, 안드로이드 스튜디오에 내장되어 있어서 별도의 셋팅 없이 간편하게 바로 사용할 수 있습니다.(+ GUI 툴이라 사용이 간편합니다.)
- 별도의 컴파일 없이 런타임으로 Rules 적용이 가능해, 실시간으로 네트워크 위변조가 가능합니다.
- 응답값 위변조를 통해 목서버처럼 활용할 수 있습니다.
- 네트워크 위변조 기능인 Rules 이외에도, 유용한 네트워크 통신 관측 기능인 Connection View(네트워크 통신 상태 파악), Thread View(통신 타이밍, 통신 스레드 체크)를 지원합니다.
단점
- 네트워크 스로틀링, 네트워크 차단 등의 복잡하고 세부적인 네트워크 조작기능은 현재(2024. 07. 07 기준)까지는 Network Inspector에서 지원하고 있지 않습니다.
- Network Inspector는 현재(2024. 07. 07 기준) HttpsURLConnection과 OkHttp만을 지원해서 다른 네트워크 커넥션 라이브러리를 사용하는 경우 기능 지원이 안됩니다.
- 물론 라이브러리 내부에서 HttpsURLConnection과 OkHttp를 사용하는 네트워킹 라이브러리의 경우 Network Inspector로 트래킹이 가능합니다.(ex. Glide)
기존 개발환경에서 안드로이드의 경우 네트워크 위변조를 할때 서드파티 툴 의존도가 높았는데, Flamingo부터 Network Inspector에 Rules 기능이 추가되면서 서드파티 툴 의존도가 조금 낮아졌습니다. 아직은 지원하지 않는 기능들도 일부 존재하긴 하지만, 이는 업데이트를 통해 점차 나아질 것이라 봅니다. Network Insepctor에 대해 보다 더 자세히 알고 싶으시다면, 공식문서를 보는 것을 추천드립니다. 포스팅 읽어주셔서 감사합니다 :)