iOS 애플리케이션의 API 요청을 어떻게 추적하면 더 효과적입니까?

6721 단어 WiresharkCharlesiOS
이 글은 VASILY DEVELOPERS BLOG에서도 같은 내용으로 투고했다.가능하면 다른 기사를 보세요.
평소 앱 개발에서 백엔드팀이'○○페이지에서 △△의 데이터를 얻기 위해 요청한 URL은 어떤 것일까?'자주 물어봐요.
매번 API 요청과 요청 결과를 print로 표시된 로고를 ON으로 설정해 애플리케이션을 구축하는 데 많은 시간이 걸렸다.
이런 일을 더욱 수월하게 하기 위해서 나는 몇 개의 네트워크 디버깅 라이브러리를 비교했다.

프로그램 라이브러리


ResponseDetective


https://github.com/netguru/ResponseDetective
NSURLSession의 요구 사항과 응답을 디버거의 로그로 스트리밍하는 프로그램 라이브러리입니다.

특징적 장점


전체 Swift로 작성된 NSURL Protocol의 방법에서 로그를 줄일 수 있습니다.
또한 HTML, JSON, 이미지 등의 응답 유형에 따라 처리를 구분할 수 있습니다.

결점


통신의 경계를 받아들일 수 있지만 기본적으로 기록이 없기 때문에 print도 스스로 씁니다.
결과적으로 코드의 양도 많지 않다. print를 쓰면 로그를 보기 위해 매번 구축해야 한다.

Wireshark


https://www.wireshark.org/
Windows, OSX에서 사용할 수 있는 그룹 캡처 도구입니다.

특징적 장점


Remote Virtual Interface(RVI)를 사용하면 각 UID의 터미널 통신을 캡처할 수 있습니다.
그룹 포획 도구이기 때문에 프로그램은 인코딩을 필요로 하지 않습니다.
안드로이드에 사용할 수도 있고 다른 회사의 응용 프로그램의 통신을 포착할 수도 있다.

결점


https의 통신은 도메인을 볼 수 있지만 신청지와 응답은 암호화되어 볼 수 없습니다.
자신의 앱이라면https의 통신도보이다.

Charles


https://www.charlesproxy.com/
OSX에서 이동하는 HTTP 프록시 도구입니다.

많은 iOS 엔지니어들이 사용하고 있지 않나요?
설치 절차는 이쪽Qita의 글을 참고하세요.

특징적 장점


Wireshark과 마찬가지로 어플리케이션을 설치할 필요가 없습니다.
통신의 내용을 볼 수 있을 뿐만 아니라 인터럽트를 설정하거나 응답을 로컬 파일의 다른 값으로 변경할 수 있기 때문에 API 비정상 시스템의 테스트에도 사용할 수 있다.
Wireshark와 달리 https의 통신 내용을 볼 수 있습니다.

결점


30번은 무료로 이용할 수 있으며 이후 라이선스를 구매해야 한다.
1 라이센스는 최대 50달러이지만 풍부한 기능을 고려하면 가치가 있다고 생각합니다.

PonyDebugger



square에서 생산한 네트워크 디버깅입니다.

특징적 장점


iOS 애플리케이션 내부에 프로그램 라이브러리를 설치하면 OSX 쪽에서 시작하는 서버를 통해 Google Chrome의 Developer Tool 통신 및 View 클래스를 볼 수 있습니다.
크롬의 디벨로퍼 툴을 사용하는 데 익숙한 사람에게는 친근하고 보기 쉽다.

결점


OSX에서 ptyhon 서버를 시작하지만, 이 환경 구축에 시간이 걸립니다.(OSX 측의 서버 설치 오류는 여러 가지 issue가 있습니다. 이번에 참조issue
2013년부터 운영되고 있는 Objective-C의 라이브러리는 더 이상 적극적으로 유지보수되지 않습니다.

netfox


https://github.com/kasketis/netfox
Swift에 기록된 통신 모니터 라이브러리와 통신 결과를 애플리케이션에서 확인할 수 있습니다.

GiitHub의 README

특징적 장점


설치는 AppDelegate에 한 줄만 쓰면 됩니다.
응용 프로그램이 변형되면 요청한 URL 목록에 모드가 표시됩니다.
또한 제스처가 기존 기능과 충돌할 경우 사용자 정의도 가능하다.

결점


모드 표시를 확인하려면 URL을 실시간으로 확인할 수 없습니다.
Alamofire나 APIKit 등 사용하는 라이브러리에 따라 전화 한차례 를 하지 않으면 통신 로그를 얻을 수 없습니다.

mitmproxy


OS X, Linux에서 실행되는 CUI의 HTTP 프록시입니다.파이톤으로 만들었어.


특징적 장점


Charles와 마찬가지로 SSL의 요청 내용을 확인할 수 있습니다.
팟캐스트의 차단과 재작성은 말할 것도 없고, 파이톤 스크립트는 응답을 동적으로 바꿀 수 있습니다.
터미널부터 키보드로 조작하는 것도 즐겁지만 가장 기쁜 것은 여기까지 사용할 수 있다는 것이 무료다.
공식 문서도 알차다.

결점


없음

총결산


지금까지의 도서관의 장점/단점을 간단히 총결하였다.
프로그램 라이브러리
장점
결점
ResponseDetective
높은 사용자 정의
어플리케이션 설치 증가
Wireshark
어플리케이션 설치 불필요
불가https
Charles
어플리케이션 설치, 간단한 설치, 높은 기능 필요 없음
요금을 받다
PonyDebugger
크롬의 Developer Tool은 보기 쉬워요.
오래된 관리자가 적음
netfox
응용 프로그램 설치는 한 줄만 있습니다
실시간으로 통신이 안 보여요.
mitmproxy
어플리케이션, CUI, 무료 SSL 없이 확인 가능
없음
나는 마침내 Charles에게 돈을 지불하기로 결정했다.mitmroxy를 사용하기로 결정했습니다.
처음에 말했듯이 '○○ 페이지에서 △△의 데이터를 얻기 위해 요청한 URL은 어떤 것입니까?'그럼에도 불구하고 프로그램을 만들지 않고 요청한 URL을 직접 확인할 수 있다.
또한 Xcode와 다른 도구이기 때문에 API 요청과 응답이 Xcode의 좁은 디버그 영역을 점령하지 않기 때문에 로그를 보기 쉽습니다.

참조 링크

  • Technical Q&A QA1176 - Getting a Packet Trace - Mac Developer Library
  • 통신 시스템의 디버깅 Charles 편리-Qita
  • 좋은 웹페이지 즐겨찾기