블로그 이미지
평범하게 살고 싶은 월급쟁이 기술적인 토론 환영합니다.같이 이야기 하고 싶으시면 부담 말고 연락주세요:이메일-bwcho75골뱅이지메일 닷컴. 조대협


Archive»


 
 

MAC에서 HTTP 패킷 모니터링 하기

성능과 튜닝 | 2016.03.11 00:06 | Posted by 조대협

MAC에서 HTTP 패킷 모니터링 하기


조대협 (http://bcho.tistory.com)


윈도우즈의 경우 fiddler (http://www.telerik.com/fiddler ) 라는 무료 도구가 있고, Mac의 경우에는 HTTPScoope (https://www.tuffcode.com/) 을 추천한다. HTTPScoope의 경우 14일 무료이고, 유료 버전은 15$ (16000원정도)이다.

 

아래는 로컬에서 3000번 포트로 띄운 웹서버의 패킷을 모니터링 하는 방법이다.


Scoop을 사용하는 방법을 보면, Scoop을 설치한 후에, “Preference” 메뉴에서 아래 그림과 같이 Restrict to port 메뉴를 선택해서, 3000 번 포트를 추가한다. (예제가 3000번 포트를 통해서 Listening 하도록 되어 있다.)



그림 HTTPScoop에서 Preference 메뉴를 통하여 리스닝 포트를 변경하기


다음으로 HTTPScoop에서 어느 LAN카드를 통해서 Listening 할지를 정해야 한다.

HTTPScoop 우측 상단에 보면 LAN 카드를 고르는 메뉴가 있는데, 여기서는 로컬에 띄워진 node.js의 패킷을 모니터링 할것이기 때문에, “Local interface (lo0)” 을 선택한다.

선택이 끝났으면, 이제 패킷을 모니터링 하기 위해서 좌측 상단의 “Scoop” 버튼을 클릭하면 127.0.0.1:3000 으로 오고 가는 패킷이 모두 캡춰 된다. 



그림  HTTPScoop에서 설정하기


이제 HTTP 헤더를 모니터링 해보자

Scoop 상에서 모니터링을 하고자 하는 패킷을 선택하면 아래와 같이 디테일이 출력된다.



그림 HTTPScoop에서 HTTP Header 정보를 확인하기



Fiddler는 간단하면서도 아주 강력한 웹 디버깅 툴이다. http://fiddler2.com

중간에서 웹서버 프록시 역할을 하면서, 오고 가는 트래픽을 모두 모니터링 및 디버깅할 수 도 있고, 기존에 보냈던 트래픽을 replay해서 다시 보낼 수 도 있다. (WireShark 보다 웹디버깅 측면에서는 오히려 더 편한듯).

여러가지 기능이 있지만,오늘은 Fiddler를 json 웹서버 처럼 사용하는 방법에 대해서 소개하고자 한다.

요즘 들어서, 특히 자바스크립트로 웹 클라이언트를 개발하는 일이 잦아지면서, 클라이언트 개발시 서버가 필요한데, 특히 JSON 서버의 경우에는 별도의 서버를 올리고, 간단하더라도 JSON 서비스를 만들어줘야 하기 때문에, JSON 클라이언트를 만드는 입장에서는 꽤나 번거롭다. 이를 Fiddler를 이용해서 간단하게 해결할 수 있다.


Fiddler의 기능중의 하나가 특정 URL 패턴으로 들어오는 request를 가로채서, 특정 Response를 보내게 만드는 기능이 있다.


바로 AutoResponder라는 기능인데, 위의 그림과 같이 설정할 수 있다.

RuleEditor에서 /jsonproxy 라는 URL로 설정해놓으면, 모든 사이트로 가는 Request에 대해 /jsonproxy라는 URI를 가지면 모두 이 Rule을 적용 받는다. 그리고, 아래에, Response를 선택할 수 있는데, 여기서는 특정 JSON 파일을 만들어서 선택하였다.

sample.json 파일의 내용은 아래와 같다.

HTTP/1.1 200 OK

Content-Type: application/json;charset=utf-8

Content-Length: 57


{

"data":{

"name":"Terry",

"city":"Seoul"

}

}

마지막으로 위의 AutoResponder메뉴에서 "Enable automatic response" 체크 박스를 선택해주면. /jsonproxy로 가는 모든 Request에 대해서, 위의 파일에 저장된 값을 리턴해준다.