ToolActToolAct

UA 파서

User-Agent 문자열을 온라인으로 분석하여 브라우저, OS, 장치 정보 식별

User-Agent
문자 수: 0

분석 결과

User-Agent 문자열을 여기에 붙여넣으세요...

User-Agent란?

User-Agent는 HTTP 요청 헤더의 하나로, 요청을 보내는 클라이언트의 브라우저, 운영체제, 장치 정보를 식별하는 문자열입니다. 웹 서버는 UA 문자열을 분석하여 방문자의 장치 유형을 판단하고 적절한 형식의 콘텐츠를 제공합니다. UA 문자열에는 일반적으로 브라우저 이름과 버전, 렌더링 엔진, OS 등의 정보가 포함됩니다. User-Agent는 클라이언트가 보낸 문자열이라 위조되거나 생략될 수 있습니다. 정확한 기기 판단이 필요하다면 기능 탐지, 서버 로그, 실제 사용자 환경 테스트와 함께 사용해야 합니다.

사용 방법

사용 방법

  1. 파싱할 User-Agent 문자열을 입력 상자에 붙여넣으세요
  2. 또는 '내 UA 파싱'을 클릭하여 현재 브라우저의 UA를 자동 감지하세요
  3. 파싱 결과가 브라우저, 시스템, 장치 정보와 함께 아래에 표시됩니다
  4. 'UA 복사'를 클릭하여 원본 UA 문자열을 복사하세요

파싱 제한

  • User-Agent 문자열은 스푸핑, 고정, 또는 축소가 가능하므로 파싱 결과는 참고용으로만 사용하세요.
  • 기능을 판단할 때는 가능하면 브라우저 이름 확인보다 기능 감지를 우선하세요.

활용 사례

지원 티켓에서 알 수 없는 User-Agent 분석서버 로그, 브라우저 DevTools, 분석 대시보드에서 복사한 User-Agent 문자열을 붙여넣으면 브라우저, OS, 장치, 렌더링 엔진의 분석 결과를 확인할 수 있습니다. 고객이 레이아웃, 글꼴, 기능 차이를 보고했을 때 원본 UA만 가지고 호환성 조사를 시작하는 가장 빠른 방법입니다. 분석된 엔진 버전을 기능 감지 결과와 교차 확인하여 위조되거나 고정된 값을 배제하세요.
자신의 브라우저 UA를 현재 표준과 대조'내 UA 분석' 동작은 navigator.userAgent를 입력란에 채우고 즉시 분석합니다. 결과를 Sec-CH-UA, 주요 브라우저가 공개한 고정/축소 UA 목록, 기능 감지 로직과 비교하여 분석 세그멘테이션과 기능 게이팅이 실제 클라이언트 능력과 일치하는지 확인하세요. 분석된 UA와 기능 감지 사이의 불일치는 보통 UA 축소 정책의 첫 신호입니다.
봇과 크롤러 식별라이브러리 분석 외에도 bot, crawler, spider, Googlebot, Bingbot, Baiduspider, YandexBot, DuckDuckBot, facebot, ia_archiver 같은 일반적인 봇 패턴을 확인합니다. 봇 필드로 자동화 트래픽을 더 쉽게 식별할 수 있습니다. 키워드 기반 감지는 실제 브라우저 UA를 모방하는 정교한 스크래퍼를 피할 수 있으므로, 봇 플래그와 서버 측 속도 제한을 함께 사용하세요.
두 User-Agent 문자열 비교데스크톱 Chrome UA와 모바일 Safari UA를 붙여넣고, 엔진·OS·장치 유형 필드를 나란히 비교하여 반응형 분기가 한 클라이언트에서는 작동하고 다른 클라이언트에서는 작동하지 않는 이유를 파악하세요. 같은 방법으로 빈 버전 세그먼트를 공유하는 Chromium 브라우저의 고정 또는 축소 UA 문자열도 드러납니다. 나란한 비교는 두 기기에서 같은 페이지를 다시 실행하여 레이아웃 회귀를 확인하는 것보다 빠른 경우가 많습니다.
Chrome 축소, Client Hints, 모바일 토큰 감지Chrome 100 이상은 부 버전을 0.0.0으로 고정하고 실제 버전 데이터를 Sec-CH-UA-Full-Version-List로 이동시킨 축소 UA를 사용합니다. 분석된 메이저 버전을 Client Hints 헤더와 교차 확인하여 축소를 감지하세요. 모바일 감지는 화면 크기 대신 토큰 키워드(iPhone, Android, Mobile)에 의존하며, 최신 Client Hints는 UA 문자열 자체보다 더 신뢰할 수 있는 Sec-CH-UA-Mobile 불리언을 제공합니다. 장치 유형을 결정하기 전에 항상 UA 분석, Client Hints, 기능 감지를 함께 사용하세요.

기술 원리

User-Agent 헤더는 RFC 7231 §5.5.3에서 제품 토큰(product/version)과 괄호 주석의 시퀀스로 정의되지만, 실제로 모든 최신 브라우저는 Mozilla/5.0 토큰으로 시작하는 문자열을 전송합니다. 이 접두사는 1993년으로 거슬러 올라갑니다. 당시 사이트들이 Mozilla를 확인하여 NCSA Mosaic를 감지했고, Netscape는 Mozilla를 채택했으며, Internet Explorer 3는 호환성을 위해 이를 추가했고, 이후 모든 포크(Safari, Chrome, Edge, Opera)가 이 거짓말을 유지해 왔습니다. OS가 어디에 위치하고, 엔진 버전이 어디에 오며, 여러 브라우저가 호환성을 위해 서로를 나열할 때 어떤 토큰이 우선하는지를 규정하는 형식 문법이 없기 때문에, 파싱은 브라우저·엔진·OS·장치라는 네 가지 고전적 축에 대해 우선순위가 있는 정규식 목록으로 수행됩니다. ua-parser-js, bowser, UAParser Lua/Python 포트 같은 오픈소스 라이브러리 모두 동일한 패턴 파일을 유지합니다. 2022년부터 Chrome은 UA 축소를 적용하고 있습니다. 브라우저 버전이 MAJOR.0.0.0으로 고정되고 플랫폼별 마이너 토큰이 삭제되므로, Windows에서 파싱된 Chrome 120.0.0.0은 실제로 Chrome 120대 어느 버전이 Windows 10 또는 11에서 실행 중임을 의미하며, 정확한 빌드는 Client Hints 뒤에 숨겨집니다. 현대적인 대안은 User-Agent Client Hints(draft-ietf-httpbis-client-hints)로, 모든 요청에서 Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform을 노출하고, navigator.userAgentData.getHighEntropyValues()를 통해 고엔트로피 값(모델, 전체 버전, 아키텍처)을 제공합니다. UA 파서는 로그 리뷰와 봇 분류에 여전히 유용하지만, 기능 감지와 Client Hints가 런타임 분기를 주도해야 합니다.

  • RFC 7231 §5.5.3은 User-Agent를 제품 토큰과 주석으로 정의하지만, OS나 장치에 대한 문법은 없습니다. 모든 파서가 자체 정규식 목록을 유지합니다.
  • Mozilla/5.0 접두사는 Mosaic 시대의 1993년 호환성 해킹입니다. Safari, Chrome, Edge 모두 브라우저 감지 사이트가 깨지는 것을 방지하기 위해 이를 유지합니다.
  • Chrome UA 축소(2022~2023년 롤아웃)는 마이너 버전을 0.0.0으로 고정하고 플랫폼 문자열을 고정합니다. 실제 빌드 번호는 Sec-CH-UA-Full-Version-List에 있습니다.
  • User-Agent Client Hints는 모든 요청에서 Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform을 노출합니다. 고엔트로피 필드는 navigator.userAgentData.getHighEntropyValues(['model','platformVersion','architecture'])가 필요합니다.
  • 키워드 기반 봇 감지(bot, crawler, spider, Googlebot, Bingbot, Baiduspider, YandexBot)는 정중한 크롤러를 잡지만, 실제 Chrome UA를 복사하는 악의적 스크래퍼는 잡지 못합니다. 속도 제한과 행동 신호를 함께 사용하세요.
  • 모바일과 태블릿은 화면 크기가 아닌 토큰(Mobile, Tablet, iPhone, iPad)으로 결정됩니다. Mobile 토큰 없는 Android UA는 대부분의 파서에서 태블릿으로 처리합니다.
  • Vary: User-Agent를 키로 사용하는 캐시와 CDN은 단일 리소스를 수천 개의 캐시 항목으로 분할할 수 있습니다. Vary: Sec-CH-UA-Mobile을 선호하거나 낮은 적중률을 감수하세요.

예시

Chrome 브라우저

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

iPhone Safari

Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 Version/17.0 Mobile/15E148 Safari/604.1

Google 봇

Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

자주 묻는 질문

User-Agent 파싱은 어떤 정보를 추출하나요?

브라우저 이름과 버전(예: 'Chrome 124'), 운영 체제와 버전, 디바이스 유형(데스크톱/모바일/태블릿), CPU 아키텍처, 렌더링 엔진(Blink/Gecko/WebKit), 그리고 알려진 크롤러 패턴과 일치할 경우 봇/크롤러 분류 정보를 추출합니다.

UA 파싱은 얼마나 정확한가요?

일반적이고 잘 알려진 브라우저는 잘 처리합니다. 다음 경우에는 어려움을 겪습니다: 파서 라이브러리가 업데이트되기 전의 새 버전, 감지를 우회하기 위해 Chrome/Safari를 흉내 내는 브라우저, 실제 UA를 위장한 봇, UA에 엔진 대신 호스트 앱 이름이 들어가는 임베디드 WebView 등입니다.

왜 User-Agent 문자열이 점점 덜 유용해지고 있나요?

브라우저 벤더(특히 Chrome)는 핑거프린팅을 제한하기 위해 UA 문자열을 '동결'하고 있으며, 대신 UA Client Hints(Sec-CH-UA-* 헤더)를 밀고 있습니다. 몇 년 안에 UA 문자열은 안정적이고 엔트로피가 낮은 값을 보고하게 되며, 실제 디바이스 데이터는 클라이언트 힌트에 들어갈 것입니다. 코드도 그에 맞춰 마이그레이션해야 합니다.

기능 게이팅에 UA 감지를 써야 할까요?

거의 절대로 안 됩니다. UA는 거짓일 수 있고, 같은 브라우저 안에서도 버전에 따라 기능 지원이 달라집니다. `if ('serviceWorker' in navigator)` 같은 방식으로 기능 감지를 사용하세요. UA 감지는 분석, 지원 티켓, 버그 리포트 분류에는 괜찮지만 — 어떤 API를 호출할지 결정하는 용도로는 부적합합니다.

내 UA를 파싱할 수 있나요?

네. 페이지는 상단에 사용자의 현재 브라우저 UA를 표시하고 구성 요소로 파싱합니다. 브라우저가 서버에 정확히 어떤 버전을 보고하는지 확인할 때 유용합니다.

봇 감지는 어떤가요?

파서는 자신을 식별하는 잘 동작하는 봇(Googlebot, Bingbot, Slackbot)을 표시합니다. 악성 봇은 보통 실제 브라우저로 위장하므로, UA만으로 하는 봇 감지는 약합니다. 실질적인 보호를 위해서는 속도 제한, CAPTCHA, 행동 신호와 함께 사용하세요.

UA가 어딘가로 업로드되나요?

아니요. 파싱은 브라우저에서 JS 라이브러리(보통 ua-parser-js)로 실행됩니다. 붙여넣은 UA 문자열은 서버로 전송되지 않습니다.