본문으로 건너뛰기

User Agent 문자열 파싱하기

User Agent 파서는 User-Agent 헤더의 토큰을 읽어 구조화된 필드로 변환합니다. 아래에서는 데스크톱 브라우저, 휴대폰, 검색 크롤러의 고정 문자열 세 개를 대화형 도구와 같은 파서로 분석한 뒤, 파서가 적용하는 규칙을 설명합니다.

실제 예시

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
브라우저
Chrome 120.0.0.0
엔진
Blink
운영 체제
Windows 10/11
기기 유형
데스크톱
기기
알 수 없음
CPU 아키텍처
x64
봇 / 크롤러
아니오
iPhone용 Safari
Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1
브라우저
Safari 17.0
엔진
WebKit
운영 체제
iOS 17.0
기기 유형
모바일
기기
Apple iPhone
CPU 아키텍처
알 수 없음
봇 / 크롤러
아니오
Googlebot(스마트폰 크롤러)
Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.216 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
브라우저
Chrome 120.0.6099.216
엔진
Blink
운영 체제
Android 6.0.1
기기 유형
봇
기기
Nexus 5X Build/MMB29P
CPU 아키텍처
알 수 없음
봇 / 크롤러
Googlebot

Windows용 Chrome은 Windows NT 10.0을 보내는데, 이 값은 Windows 10과 Windows 11이 공유하므로 OS가 10/11로 표시됩니다. iPhone에서는 Version/17.0이 Safari 버전을, iPhone OS 17_0이 iOS 버전을 알려 줍니다. Googlebot 문자열에는 Android용 Chrome의 전체 User Agent가 포함되어 있지만, 크롤러 서명을 먼저 확인하므로 기기 유형은 bot이 됩니다. 그래도 브라우저와 OS 필드에는 크롤러가 자신을 무엇으로 소개하는지가 그대로 표시됩니다.

핵심 규칙

  • 크롤러 서명을 가장 먼저 확인합니다: Googlebot, Bingbot, DuckDuckBot, YandexBot, Baiduspider, Slackbot, Twitterbot, facebookexternalhit. 일치하면 브라우저 토큰이 있어도 기기 유형이 bot으로 설정됩니다.
  • 대부분의 문자열에는 다른 브라우저의 토큰도 들어 있으므로 브라우저는 고정된 순서로 매칭합니다: Edge(Edg/), Opera(OPR/), Samsung Internet, Firefox, Chrome, Safari, 마지막으로 Chromium. 엔진은 브라우저에 따라 Blink, Gecko, WebKit 중 하나로 정해집니다.
  • 운영 체제는 괄호 안의 플랫폼 부분에서 판단합니다: iPhone, iPad, Android, Windows NT, CrOS, Mac OS X, Linux. Apple 버전 번호의 밑줄은 점으로 변환됩니다.
  • 기기 유형은 iPad, Tablet 토큰 또는 Mobile 토큰이 없는 Android이면 태블릿이고, iPhone 또는 Mobile 토큰이 있는 Android이면 모바일이며, Windows, macOS, Linux, ChromeOS이면 데스크톱입니다.
  • 문자열에 명시되지 않은 정보는 추측하지 않고 알 수 없음(JSON 출력에서는 null)으로 남깁니다. 신뢰도는 브라우저와 운영 체제가 모두 일치할 때만 높음입니다.
  • 어떤 클라이언트든 Googlebot User Agent를 보낼 수 있습니다. 실제 Google 크롤러인지 확인하려면 요청 IP에 대해 역방향 DNS 조회를 실행하고, 호스트 이름이 googlebot.com 또는 google.com으로 끝나는지 확인한 다음 정방향 조회로 다시 검증하세요.

더 많은 User Agent 가이드