MYMONDAY.ai
서비스스튜디오도구데이터·포맷73CSS 생성기19색상·이미지10인코딩·보안10웹·SEO11개발·데브옵스10파일·내보내기18계산기6가이드

HAR 파일 뷰어

HAR 파일을 끌어다 놓으면 브라우저가 실제로 보낸 요청을 볼 수 있습니다. 모든 요청의 워터폴과 상태, 크기, 시간 구성, 헤더를 필터와 CSV 내보내기와 함께 제공합니다.

  • 브라우저에서 처리
  • 가입 없음
  • 무료

도구 작업 공간

샘플 캡처

요청12
실패 (4xx/5xx)2
느림 (500ms 이상)2
전송량431.8 KB
전체 시간2.9 s

워터폴

막대는 요청이 시작된 시점부터 그려집니다. 행을 선택하면 자세히 볼 수 있습니다.
상태
유형

요청 12개 중 12개 표시

요청 상세

URL
https://app.example.com/
상태
200 OK
콘텐츠 유형
text/html 문서
크기
13.9 KB
소요 시간
180ms
대기(blocked)2ms
DNS22ms
연결48ms
전송1ms
서버 응답 대기74ms
수신20ms

요청 헤더

Accept*/*
User-AgentMozilla/5.0

응답 헤더

Content-Typetext/html
Cache-Controlno-cache

Authorization, cookie, API 키, 토큰 헤더와 access_token, token, key, api_key, signature, X-Amz-Signature, X-Amz-Security-Token, password, code 같은 민감해 보이는 URL 쿼리 매개변수는 스크린샷과 CSV에서 노출되지 않도록 URL 표시와 CSV 내보내기에서 기본으로 숨깁니다. ‘민감한 값 표시’를 켜면 볼 수 있습니다.

HAR 파일 뷰어는 브라우저 개발자 도구가 내보내는 긴 JSON을 읽을 수 있는 형태로 바꿔 줍니다. 요청마다 막대 하나가 언제 시작했고 단계별로 얼마나 걸렸는지 보여 주는 워터폴과 메서드, URL, 상태, 크기, 시간이 나옵니다. .har 파일을 페이지에 끌어다 놓으면 실패한 요청(HTTP 400 이상), 500ms 이상 걸린 요청, 전송량 합계, 캡처 전체 길이를 세고, 상태 분류, 리소스 유형, 메서드·URL·도메인·상태·MIME 유형의 일부로 걸러 볼 수 있습니다.

지원 엔지니어에게 실패한 페이지의 근거를 전달하거나, 500 응답·느린 호스트·큰 전송을 찾을 때 HAR 캡처를 활용하세요. HAR에는 쿠키, 인증 헤더, 응답 본문이 들어 있을 수 있어 파일은 브라우저의 백그라운드 Web Worker에서 읽고 해석하며 업로드하지 않습니다. 요청을 고르면 시간 구성과 헤더를 볼 수 있습니다. 알려진 민감 헤더와 URL 매개변수는 기본적으로 가리지만, 스크린샷을 공유하기 전에는 내용을 확인하세요.

뷰어는 각 항목의 요약 필드, 시간 정보, 헤더를 읽습니다. 쿠키를 별도 목록으로, 요청 본문, 응답 본문은 표시하지 않으며 CSV 내보내기에도 같은 제한된 요약 열만 들어갑니다.

사용 방법

  1. 브라우저에서 HAR 내보내기

    Chrome, Edge, Firefox에서 개발자 도구의 Network 탭을 열고, 로그를 기록하는 상태로(리디렉션이 있다면 "Preserve log"를 켜고) 페이지를 새로 고친 뒤 내보내기 옵션으로 모든 요청을 HAR로 저장합니다.

  2. 파일을 페이지에 끌어다 놓기

    업로드 영역에 .har 파일을 끌어다 놓거나 클릭해서 선택하세요. 선택하기 전에는 샘플 캡처가 보입니다. 200 MiB, 항목 100,000개까지 받으며, 올바른 HAR JSON이 아니거나 log.entries 배열이 없으면 메시지와 함께 거부됩니다. 파일 읽기와 해석은 백그라운드 Web Worker에서 처리합니다. 요청·응답 본문 없이 요약 필드와 헤더만 화면으로 전달합니다.

  3. 요약과 워터폴 읽기

    요청 수, 실패(400 이상), 느린 요청(500ms 이상), 전송량, 전체 시간 카운터를 확인합니다. 워터폴에서 막대는 요청이 시작한 시점부터 시작하고 색은 대기(blocked), DNS, 연결, 전송, 서버 응답 대기, 수신 단계를 보여 주며 실패한 요청은 빨갛게 표시됩니다.

  4. 필터링하고 선택하기

    검색 상자에 입력하거나 상태 칩(1xx, 2xx, 3xx, 4xx, 5xx, 응답 없음)과 유형 칩(문서, 스크립트, 스타일, 이미지, 글꼴, 데이터 등)을 쓰세요. 행을 누르면 아래에 URL, 상태, 시간 구성, 헤더가 나옵니다. WebSocket의 101 같은 정보성 응답은 응답 없음이 아니라 1xx로 분류합니다.

  5. 보이는 행을 CSV로 내려받기

    다운로드에는 현재 필터에 맞는 모든 행이 들어가며, 화면에 그리는 400행 이후의 결과도 포함됩니다. 실패한 요청이나 한 호스트만 내보내려면 먼저 필터링하세요. CSV 다운로드는 UTF-8 BOM을 붙이고 스프레드시트에서 수식으로 해석될 수 있는 셀을 보호합니다. 민감한 값 표시를 켜지 않으면 비밀처럼 보이는 URL 매개변수도 가립니다.

작동 원리

HAR 파일이란

HAR는 HTTP Archive의 약자로 W3C Web Performance Working Group이 만든 JSON 형식입니다(브라우저가 쓰는 것은 1.2 초안입니다). 최상위에는 version, creator, entries 배열이 있는 log 객체가 있습니다. 각 항목은 startedDateTime, request(메서드, URL, 헤더, 쿠키), response(상태, 콘텐츠 유형과 크기, 헤더), timings, 그리고 해당 요청의 총 경과 밀리초인 time을 가진 요청-응답 한 쌍을 기술합니다.

뷰어는 항목마다 request.method, request.url, 요청·응답 헤더, response.status, response.content.mimeType, response.content.size, _transferSize, startedDateTime, timings, time을 읽고 나머지는 무시합니다.

각 수치를 구하는 방법

크기는 네트워크로 실제 전송된 바이트(압축, 헤더 포함)를 뜻하는 Chrome 전용 필드 _transferSize를 우선 쓰고, 없으면 디코딩된 본문 크기인 response.content.size를 씁니다. 그래서 같은 페이지라도 Firefox HAR이 Chrome HAR보다 크게 나오는 일이 흔하고, 캐시된 응답은 전송 크기가 작거나 0으로 나올 수 있습니다. 도메인은 URL의 호스트 이름입니다. 크기 출처를 고를 때 알 수 없음을 뜻하는 -1은 건너뜁니다.

워터폴은 첫 요청으로부터 startedDateTime의 오프셋으로 막대 위치를 정하고, HAR의 시간 단계인 blocked, DNS, 연결(SSL 포함), 전송, 서버 응답 대기, 수신으로 나눕니다. 해당 없음을 뜻하는 -1은 0으로 셉니다. 상태 0은 브라우저가 HTTP 응답을 기록하지 못했다는 뜻으로, DNS 실패, CORS 차단, 광고 차단기 때문에 막히거나 취소되거나 실패한 요청입니다. 요약은 400 이상만 실패로 세므로 여기에 포함되지 않으니 "응답 없음" 상태 칩으로 찾으세요. time이 없거나 양수가 아니면 해당하는 단계의 합을 쓰며 SSL을 두 번 더하지 않습니다. 101 같은 정보성 응답은 1xx로 별도 분류합니다.

요약 수치규칙
실패상태 400 이상(4xx와 5xx). 304와 리디렉션은 실패가 아님
느림시간 500ms 이상
전송량크기의 합계. 1 KB 미만은 B, 그 이상은 KB 또는 MB로 표시
전체 시간첫 요청의 시작부터 마지막 요청의 끝까지
요청URL이 비어 있지 않은 항목. URL이 없는 항목은 제외

HAR 파일의 프라이버시

전체 HAR 내보내기에는 쿠키, 세션 토큰, Authorization 헤더, 폼 제출 내용, 개인 정보가 든 응답 본문이 들어 있을 수 있습니다. 그래서 HAR는 비밀번호처럼 다뤄야 합니다. 이 페이지는 로컬에서 해석하고 절대 업로드하지 않으며, Authorization·쿠키·API 키·토큰 헤더의 값은 보겠다고 할 때까지 가립니다. 다른 사람에게 HAR를 보내기 전에는 민감한 항목을 지우거나 정제하세요. 원본 파일에는 모든 값이 그대로 있기 때문입니다. x-access-token·x-amz-security-token 헤더와 access_token, token, key, signature, password, code 같은 URL 쿼리·프래그먼트 매개변수 값도 가립니다. 민감한 값 표시를 켜기 전에는 목록, 제목, 상세, CSV의 URL에서도 가립니다. 이름에 따른 마스킹이라 완전한 삭제 처리는 아닙니다. 인식하지 못하는 이름의 비밀은 보일 수 있고 원본 HAR은 그대로입니다.

실제 예시

요청 세 개: 오류, 느린 호출, 캐시된 스크립트
입력
항목:
1  GET   https://api.example.com/v1/projects   200  application/json  _transferSize 18400  time 122
2  POST  https://api.example.com/v1/projects   500  application/json  _transferSize 610    time 940
3  GET   https://cdn.example.com/app.js        304  text/javascript   content.size 90000   time 42.5
출력
요청 3 | 실패 (4xx/5xx) 1 | 느림 (500ms 이상) 1 | 전송량 106.5 KB
1 GET   api.example.com  200  18 KB    122ms
2 POST  api.example.com  500  610 B    940ms
3 GET   cdn.example.com  304  87.9 KB  43ms

도구의 파서와 요약 규칙으로 다시 계산한 값입니다. 3번 행은 _transferSize가 없어 콘텐츠 크기를 씁니다. 304는 실패가 아닙니다.

필터링
입력
위 항목에서:
500
cdn
api.example.com
json
출력
500             -> 2번 행
cdn             -> 3번 행
api.example.com -> 1, 2번 행
json            -> 1, 2번 행

텍스트 필터는 메서드, URL, 도메인, 상태, MIME 유형에 대한 대소문자 무시 부분 문자열 일치입니다. 상태·유형 칩이 목록을 더 좁힙니다.

요청 워터폴
입력
요청 A: 0ms에 시작, 180ms 소요(DNS 22, 연결 48, 대기 74, 수신 20)
요청 B: 190ms에 시작, 90ms 소요
출력
A  0~180ms 막대, DNS·연결·대기·수신으로 나뉨
B  190~280ms 막대, 전체가 대기(시간 단계 기록 없음)

막대 위치는 startedDateTime에서, 조각은 timings에서 오며 timings가 없으면 막대 전체를 대기로 칩니다.

CSV 내보내기
입력
필터: 500, 그다음 다운로드
출력
id,method,url,domain,status,mime,size_bytes,time_ms
"2","POST","https://api.example.com/v1/projects","api.example.com","500","application/json","610","940"

모든 값을 따옴표로 감싸고 값 속 큰따옴표는 두 번 쓰며 줄은 CRLF로 끝납니다. 파일 이름은 har-requests.csv입니다. 다운로드 파일 앞에는 UTF-8 BOM도 붙습니다. 수식처럼 보이는 셀에는 작은따옴표를 앞에 붙이고, 민감한 값 표시를 켜지 않으면 비밀처럼 보이는 URL 값은 가립니다.

URL이 없는 항목은 제외
입력
항목: 정상 요청, url이 ""인 항목, 정상 요청
출력
요청 2개, id는 1과 3

id는 원본 파일에서의 위치에서 오므로 id가 비어 있으면 그 항목이 제외된 것입니다.

자주 하는 실수

  • 정제하지 않은 HAR 공유

    파일 안의 쿠키와 Authorization 헤더로 누군가 나를 사칭할 수 있습니다. 보내기 전에 민감한 항목을 지우거나 캡처에 보인 자격 증명을 교체하세요.

  • 브라우저 간 크기 비교

    Chrome은 _transferSize를 쓰지만 다른 브라우저는 쓰지 않으므로 크기가 한 파일에서는 전송 바이트, 다른 파일에서는 디코딩된 본문 바이트를 뜻할 수 있습니다. 하나의 캡처 안에서만 비교하세요.

  • 상태 0 실패를 놓침

    차단되거나 실패한 요청은 상태가 0이고 요약에서 실패로 세지 않습니다. "응답 없음" 칩으로 찾으세요.

  • Preserve log 없이 캡처

    이동할 때 로그가 지워졌다면 리디렉션과 이전 요청이 HAR에서 빠집니다. 문제를 재현하기 전에 개발자 도구의 Preserve log를 켜세요.

  • 워터폴을 정확한 값으로 읽음

    막대는 브라우저가 기록한 타임스탬프에서 나오므로 startedDateTime이 없는 캡처는 모든 요청이 0에서 시작하는 것처럼 보입니다. 요청이 전송되기 전의 큐 대기는 "blocked" 시간으로 나타납니다.

  • 너무 큰 캡처

    제한은 텍스트 200 MiB와 항목 100,000개이며 워터폴은 현재 필터의 처음 400행만 그립니다. 응답 본문이 포함된 HAR는 금방 200 MiB를 넘을 수 있으니 콘텐츠 없이 내보내거나 더 작은 흐름을 캡처하세요.

자주 묻는 질문

HAR 파일은 어떻게 여나요?

이 페이지의 업로드 영역에 끌어다 놓으세요. 뷰어가 모든 요청을 메서드, URL, 상태, 크기, 시간과 함께 워터폴로 그리고 필터링, 헤더 확인, 내보내기를 할 수 있게 합니다.

HAR 파일이 어딘가로 업로드되나요?

아니요. 파일은 브라우저에서 해석되며 아무것도 서버로 전송되지 않습니다. 그래도 HAR에는 쿠키와 토큰이 들어 있을 수 있으니 다른 곳에 공유할 때는 민감한 자료로 다루세요.

HAR에서 실패한 요청은 어떻게 찾나요?

요약은 HTTP 상태 400 이상인 모든 항목을 셉니다. 4xx와 5xx 칩(차단된 요청은 "응답 없음")으로 보여 준 뒤 보이는 행을 CSV로 내려받으세요.

느린 요청의 기준은 무엇인가요?

기록된 총 시간이 500ms 이상인 요청입니다.

왜 크기가 개발자 도구와 다른가요?

HAR에 _transferSize가 있으면 전송 크기를, 없으면 디코딩된 본문 크기를 씁니다. 캐시되었거나 압축된 응답은 개발자 도구가 다른 값을 보여 줄 수 있습니다.

요청 헤더, 쿠키, 응답 본문을 볼 수 있나요?

요청·응답 헤더는 볼 수 있으며 Authorization·쿠키·토큰 값은 켜기 전까지 가려집니다. 쿠키 별도 목록과 응답 본문은 표시하지 않고 CSV에는 요약 열만 들어갑니다. x-access-token·x-amz-security-token 헤더와 access_token, token, key, signature, password, code 같은 URL 쿼리·프래그먼트 매개변수 값도 가립니다. 민감한 값 표시를 켜기 전에는 목록, 제목, 상세, CSV의 URL에서도 가립니다. 이름에 따른 마스킹이라 완전한 삭제 처리는 아닙니다. 인식하지 못하는 이름의 비밀은 보일 수 있고 원본 HAR은 그대로입니다.

최대 파일 크기는 얼마인가요?

텍스트 200 MiB, 항목 100,000개입니다. 더 큰 파일은 제한 메시지와 함께 거부됩니다.

마지막 업데이트: