도구
가이드

User-Agent 파서

개발

User-Agent 문자열을 브라우저, 엔진, 운영체제, 기기 유형으로 파싱합니다. 휴리스틱 기반, 완전 클라이언트측.

100% 클라이언트 백엔드 없음
User-Agent 문자열
출력
브라우저
엔진
운영체제
기기 유형
봇 / 크롤러
이 페이지에서

User-Agent 파서란?#

User-Agent(UA) 문자열은 모든 브라우저와 HTTP 클라이언트가 자신을 기술하기 위해 요청에 덧붙이는 텍스트 줄입니다. 또한 유명하게 비구조적인 엉망입니다. 제조사들이 역사적 호환 토큰을 서로 위에 쌓아 올려, 하나의 현대 크롬 문자열이 Mozilla, AppleWebKit, KHTML, Gecko, Safari라는 단어를 모두 포함합니다. 그 어느 것도 브라우저가 실제로 그것들 중 하나라는 뜻은 아닙니다. 날것의 UA를 눈으로 읽는 것은 느리고 오류가 잦아, 거의 모든 분석 대시보드, 접근 로그 도구, 봇 감지 계층이 먼저 파서를 통해 통과시킵니다.

이 페이지는 임의의 UA 문자열을 받아 실제로 원하는 다섯 가지 사실로 쪼갭니다. 브라우저(이름과 버전), 엔진(렌더링 코어), 운영체제(운영체제와 버전), 기기 유형(데스크톱, 모바일 또는 태블릿), 그리고 봇 여부(문자열이 크롤러처럼 보이는지). 전적으로 브라우저에서 동작합니다. 로그 줄에서 문자열을 붙여넣고 분석을 읽으면 되며, 서버 왕복이 없습니다.

브라우저 감지가 보기보다 어려운 이유는 순서입니다. 전문 브라우저는 크롬 이전에 점검해야 합니다. 그것들의 UA 문자열이 모두 호환성을 위해 리터럴 토큰 Chrome을 포함하기 때문입니다. Microsoft Edge, Opera, Samsung Internet, Vivaldi, CocCoc는 단순한 if (ua.includes("chrome")) 검사에서 모두 크롬으로 잘못 보고될 것입니다. 엔진도 마찬가지입니다. AppleWebKit은 Blink 브라우저(Chrome, Edge, Opera)와 순수 WebKit 브라우저(Safari) 모두에 나타나므로, 엔진은 직접 일치가 아니라 브라우저 계열에서 추론됩니다.

사용 방법#

  1. 상단의 내 브라우저 사용 을 클릭해 이 브라우저 자신의 navigator.userAgent를 입력 상자에 불러옵니다. 자신의 트래픽이 어떻게 보이는지 보는 가장 빠른 방법입니다.
  2. 또는 입력 창에 임의의 UA 문자열을 붙여넣습니다. nginx 접근 로그, 백엔드의 req.headers["user-agent"], curl 요청, 무엇이든.
  3. 출력 창의 다섯 행을 읽습니다.
    • 브라우저 — 계열 이름과 주 버전(예: Chrome 120).
    • 엔진 — 렌더링 엔진(Blink, WebKit, Gecko, Trident).
    • 운영체제 — 복구 가능한 곳의 운영체제와 버전(예: Windows 10/11, iOS 17, Android 14).
    • 기기 유형데스크톱, 모바일, 또는 태블릿. iPad, Mobile이 없는 Android, iPhone 같은 토큰에서 추론.
    • 봇 / 크롤러 / 아니오. 크롤러 식별자(bot, crawl, spider, slurp, pingdom, headless, phantomjs, curl, wget, python-requests, axios …)에 일치시켜 표시.
  4. 지우기 로 두 창을 비웁니다.
  5. 상태 줄이 결과를 요약하거나 입력이 비어 있었다고 보고합니다.

주요 기능#

  • 전문 브라우저 우선 감지. Edge, Opera, Samsung Internet, Vivaldi, CocCoc, Firefox는 모두 Chrome과 Safari 이전에 일치되어 Chrome 호환 토큰에 조용히 삼켜지지 않습니다.
  • 계열에서 추론된 엔진. Blink와 WebKit의 구분은 AppleWebKit에 대한 깨지기 쉬운 직접 일치가 아니라 감지된 브라우저에 의해 결정됩니다. 그래서 Safari 문자열이 Chrome으로 보고되지 않습니다.
  • 기기 유형 분류. 태블릿은 iPad 토큰과 Android ... Mobile 구분으로 전화와 구별됩니다. 분석 도구가 의존하는 같은 휴리스틱입니다.
  • 크롤러 표시. 봇 / 크롤러 행은 보통 사람 대상 지표에서 제외하고 싶은 문자열에 표시를 붙입니다. 검색 크롤러, 작동 시간 모니터, 헤드리스 브라우저, HTTP 라이브러리.
  • 100% 클라이언트 사이드. UA는 결코 어디로도 전송되지 않습니다. 즉, 서드파티 파싱 API에 누출하지 않고 프로덕션 로그의 토큰을 붙여넣을 수 있습니다.

사용 예#

접근 로그에서 전형적인 Windows 상의 Chrome 문자열을 붙여넣습니다.

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36

다섯 행이 다음과 같이 채워집니다.

Browser   Chrome 120
Engine    Blink
OS        Windows 10/11
Device    desktop
Bot       no

이제 Edge 문자열과 비교해 보세요. 후행 Edg/120에 주목.

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0

Chrome을 먼저 점검하는 단순한 파서는 여기서 Chrome 120을 보고합니다 — 틀립니다. 이 페이지는 Chrome/ 이전에 Edg/를 점검하므로 같은 문자열에서 올바르게 브라우저: Microsoft Edge 120을 얻습니다. 엔진은 여전히 Blink입니다(Edge는 Chromium 기반).

세 번째 케이스는 봇 경로를 보여 줍니다. curl/7.81.0을 보내는 헬스체크 스크립트는 Mozilla 래퍼를 전혀 담지 않았어도 봇: 예로 표시됩니다. curl이 봇 매처가 스캔하는 라이브러리 토큰 중 하나이기 때문입니다. 로그를 훑어볼 때 실제 사용자 트래픽을 자동 잡음에서 분리하게 해 주는 행입니다.

FAQ#

Edge 브라우저가 UA에 Chrome이라는 단어를 포함하는데도 “Microsoft Edge”로 보고되는 이유는?#

Edge의 UA가 크롬을 서비스하도록 만들어진 사이트가 Edge도 서비스하게 하려고 의도적으로 Chrome/120.0.0.0을 포함하기 때문입니다. 이 파서는 Edg/ 토큰을 먼저 점검하고 Chrome/을 그 다음에 점검하여 전문 계열이 이기게 합니다. 점검 순서를 이렇게 두지 않는 파서는 모든 Chromium 파생을 Chrome으로 잘못 보고할 것입니다.

UA 문자열의 운영체제 버전을 신뢰할 수 있나요?#

어느 정도까지. Windows는 10과 11을 Windows NT 10.0으로 합쳐 여기서 10/11로 보고됩니다. iOS와 macOS 버전은 OS X_x_x 토큰에서 복구 가능하지만 역사적으로 릴리스 시점에 고정됩니다. 버전을 강한 힌트로 취급하고 보증으로 취급하지 마세요. 보안 결정을 그것에 걸지 마세요.

봇 표시가 트래픽을 차단할 만큼 신뢰할 만한가요?#

아닙니다. UA 기반 봇 감지는 로그 분석과 대시보드 필터링을 위한 편의일 뿐 보안 경계가 아닙니다. 악의적 클라이언트는 완벽하게 사람처럼 보이는 것을 포함해 원하는 UA를 위조합니다. 이 행을 뚜렷한 크롤러와 라이브러리를 발견하는 데 쓰세요. 실제로 신뢰할 수 있어야 하는 것에는 속도 제한, 인증, 행동 점검을 사용하세요.

파서가 모두 “알 수 없음”을 보여요. 제가 뭘 붙여넣었나요?#

빈/공백 문자열이거나, 이 파서가 인식하지 못하는 클라이언트의 UA입니다(일부 데스크톱 앱과 SDK가 맞춤 식별자를 보냅니다). 상태 줄은 첫 번째 경우 입력이 비어 있었다고 말할 것입니다. 두 번째에는 브라우저와 운영체제가 단순히 알 수 없음으로 떨어지고 기기 유형은 기본적으로 데스크톱이 됩니다. 날것의 문자열은 입력 창에 보존되어 검사할 수 있습니다.