우선 Fiddler 기능을 알아보기 전에 Fiddler가 동작하는 원리부터 알아보자.
Fiddler를 설치한 후 프로그램을 실행하면 내 컴퓨터와 인터넷 사이에서 통신을 감시하게 된다.
예를 들어 내 컴퓨터에 있는 브라우저를 열고 https://lng1982.tistory.com/ 페이지에 접속하게 되면 다음과 같이 동작한다는 뜻이다. 즉, Proxy와 같은 역할을 하며 통신되는 패킷들을 감시하게 되는 것이다.
HTTP 요청 : 브라우저 -> Fiddler -> 티스토리
HTTP 응답 : 티스토리 -> Fiddler -> 브라우저
"어떻게 Fiddler가 중간에서 패킷을 가로채는게 가능할까?" 라는 생각을 할 수도 있다.
Fidller 프로그램이 실행되면 내 컴퓨터 > 인터넷 속성 > LAN 설정 > 프록시 서버의 설정 중 "사용자 LAN에 프록시 서버 사용"에 체크된다.
이후부터는 내 컴퓨터에서 인터넷 환경에 접속하기 위해서는 Proxy 역할을 하는 Fiddler를 꼭 거쳐가야 한다.
자~ Fiddler의 동작 원리를 알았으니 이제 Filter에 대해서 알아보자.
나도 이제까지 Filter 기능을 잘 사용하지 않았다.
우연치않게 Filter 레퍼런스를 확인해 봤는데 꽤 유용한 기능들이 많이 보였다.
https://docs.telerik.com/fiddler/KnowledgeBase/Filters
Filter 탭을 클릭하면 다음과 같이 화면이 보여진다.
크게 7가지 기능으로 분류가 되어 있다.
Hosts : 호스트 필터 구성
Client Process : 내 컴퓨터에서 실행되고 있는 프로세스들에 대한 필터 구성
Request Headers : HTTP 요청 헤더에 대한 필터 구성
Breakpoints : HTTP 요청과 응답에 대한 브레이크 포인트 설정
Response Status Code : HTTP 응답에 대한 필터 구성
Response Type and Size : HTTP 응답의 Content-Type 또는 사이즈에 따른 필터 구성
Response Headers : 응답 헤더에 대한 필터 구성
여기서 가장 많이 사용하게될 Hosts 기능과 신기하다고 생각하는 Breakpoints 에 대해서 알아보겠다. 그 외 기능에 대해서는 상황에 맞게 잘 사용하면 된다.
Hosts 필터
Fiddler를 실행하면 내 컴퓨터와 인터넷과의 통신 패킷들이 수없이 화면에 출력되게 된다.
우리는 디버깅을 위해 특정 호스트에 대해서만 확인이 필요한 경우가 대부분이기 때문에 Host 필터를 이용하면 된다.
다음처럼 Use Filters 체크박스에 체크를 하고 Show only the following Hosts 를 선택한 후 원하는 호스트 명을 넣어주면 된다.
여러개의 호스트를 넣고 싶을 때에는 ; 구분자를 사용하면 된다.
또한 루트 도메인으로 필터를 설정하고 싶을 때에는 wildcard를 이용하면 된다.
*tistory.com;
Breakpoints 필터
대게 새롭게 웹 사이트를 구축하게 되면 보안 취약점이 발생하게 된다.
이를 테스트하기 위한 좋은 기능으로 보이며 다음과 같이 활용하면 된다.
1. Breakpoints 설정에서 Break request on GET with query string 체크
2. 브라우저에서 https://lng1982.tistory.com/321?test=111 호출
3. Fiddler의 세션창에 빨간색 마크가 생긴 세션이 있는데 해당 세션을 클릭하면 브레이크가 걸린 것을 확인할 수 있다.
4. 이때 요청에 대한 패킷을 조작할 수 있다. (test 파라미터 값을 2222로 변경)
5. 조작한 후 Run to Completion 버튼을 클릭하면 완료된다. (녹색버튼)
'개발툴' 카테고리의 다른 글
내가 자동화 스크립트를 만드는 이유? (1) | 2024.12.03 |
---|---|
jenkins 빌드에서 github action 빌드 배포로 이전 (0) | 2024.08.20 |
시놀로지 NAS에 웹 서버 배포 및 운영 (0) | 2024.05.23 |
maven effective pom 활용 (0) | 2019.08.23 |
메이븐 버전 충돌 해결 (8) | 2017.12.13 |
윈도우 loopback 패킷 캡쳐 (RawCap) (0) | 2017.12.11 |
Maven 용어 정리 (0) | 2017.10.16 |
vagrant 구동 시 오류 (Your VM has become inaccessible) (0) | 2017.10.13 |