User-Agent 파서 및 브라우저·기기 식별기
HOT브라우저 User-Agent 문자열을 분석해 OS, 브라우저 버전, 기기 종류, 인앱 웹뷰 및 봇 감지
Responsive 728x90 / 320x100 Ad Slot
(CLS Prevention Active · Zero Shift)Native In-Feed / High Viewability Ad Slot
(CLS Prevention Active · Zero Shift)User-Agent 문자열 파싱과 클라이언트 환경 식별 원리
User-Agent(사용자 에이전트 헤더)는 웹 브라우저나 모바일 앱, 웹 크롤러 등의 클라이언트 소프트웨어가 HTTP/HTTPS 요청을 보낼 때 자신을 식별하기 위해 웹 서버로 전송하는 핵심 요청 헤더(`User-Agent: ...`)입니다. 이 문자열에는 사용자의 브라우저 제품군(Chrome, Safari, Firefox 등) 및 버전, 렌더링 엔진(Blink, WebKit, Gecko), 운영체제(Windows, macOS, iOS, Android, Linux) 및 기기 폼팩터(Desktop, Mobile, Tablet, Bot)에 대한 정보가 압축되어 있습니다.
그러나 1990년대 초기 웹 브라우저 전쟁(Browser Wars)의 호환성 레거시로 인해, 현대의 거의 모든 브라우저는 헤더의 맨 처음에 여전히 `Mozilla/5.0`을 달고 있으며 뒤이어 `AppleWebKit`, `Chrome`, `Safari`라는 서로 상반된 브라우저 이름을 한꺼번에 나열합니다. 예를 들어 최신 구글 크롬 브라우저의 User-Agent에도 `Safari/537.36`이라는 문자열이 포함되어 있기 때문에, 단순한 문자열 포함(`str.includes('Safari')`) 검사를 수행하면 크롬 사용자를 사파리 사용자로 오판하는 심각한 로직 오류가 발생합니다. 정밀한 우선순위 기반 정규식 매칭과 토큰 분해가 필수적입니다.
오르보킷 User-Agent 파서는 복잡하게 얽힌 헤더 토큰을 분해하여 브라우저, OS, 렌더링 엔진, 하드웨어 기기 정보를 직관적으로 시각화합니다. 특히 카카오톡, 인스타그램, 페이스북 등의 인앱 브라우저(WebView) 감지뿐만 아니라 구글봇(Googlebot), 네이버 예티(Yeti) 등 검색엔진 크롤러를 정확히 식별하며, 최신 크롬의 User-Agent 축소(Reduction) 정책 및 Client Hints(`Sec-CH-UA`) 생태계에 대응하는 기술 인사이트를 제공합니다.
우선순위 토큰화 및 클라이언트 식별 알고리즘
레거시 호환성 토큰을 우회하고 최신 식별자를 추출하기 위한 계층적 정규표현식 파싱 규칙입니다.
하위 호환성 문자열(Safari)보다 파생 브라우저 고유 토큰(Edg, Chrome)을 먼저 평가하는 우선순위 체계입니다.
👉 Safari와 Chrome 토큰이 포함되어 있음에도 최종 제품군을 Microsoft Edge로 완벽히 식별합니다.
- 브라우저 식별 우선순위: Edge(Edg/) ➔ Chrome/Chromium ➔ Safari 순으로 검사하여 엔진 호환성 표기 토큰으로 인한 오판을 차단합니다.
- 인앱 웹뷰(WebView) 탐지: `KAKAOTALK`, `NAVER`, `FBAN/FBAV`, `Instagram` 등 모바일 앱 내부 임베디드 웹뷰 시그니처를 우선 추출합니다.
- 운영체제 및 아키텍처 매핑: `Windows NT 10.0`(Windows 10/11), `Mac OS X 10_15_7`, `Android 14`, `iPhone; CPU iPhone OS 17_4` 등을 파싱합니다.
- 검색엔진 크롤러 및 봇 식별: `Googlebot`, `bingbot`, `Yeti`, `Baiduspider` 등 인덱싱 봇을 일반 사용자와 구분하여 렌더링 분기를 지원합니다.
대표 User-Agent 문자열 패턴 및 파싱 결과 비교표
| 플랫폼 및 브라우저 | 전형적인 User-Agent 패턴 | 판별된 브라우저 | 판별된 OS | 디바이스 분류 |
|---|---|---|---|---|
| Chrome (Windows) | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ... Chrome/122.0 ... Safari/537.36 | Chrome | Windows 10/11 | Desktop |
| Safari (macOS) | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 ... Version/17.3 Safari/605.1.15 | Safari | macOS | Desktop |
| Mobile Safari (iPhone) | Mozilla/5.0 (iPhone; CPU iPhone OS 17_4 like Mac OS X) AppleWebKit/605.1.15 ... Mobile/15E148 Safari/604.1 | Mobile Safari | iOS | Mobile |
| Chrome (Android) | Mozilla/5.0 (Linux; Android 14; SM-S918N) AppleWebKit/537.36 ... Chrome/122.0 ... Mobile Safari/537.36 | Chrome Mobile | Android 14 | Mobile |
| 카카오톡 인앱 (iOS) | ... iPhone OS 17_4 ... Mobile/15E148 KAKAOTALK 10.5.0 | KakaoTalk In-App | iOS | Mobile (WebView) |
| Googlebot (SEO 봇) | Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) | Googlebot | Linux (Bot) | Search Bot |
| 네이버 검색 봇 (Yeti) | Mozilla/5.0 (compatible; Yeti/1.1; +http://naver.me/bot) | Naver Yeti | Unknown | Search Bot |
| Microsoft Edge (Mac) | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ... Chrome/122.0 ... Safari/537.36 Edg/122.0 | Edge | macOS | Desktop |
High-Engagement In-Article Native Ad Slot
(CLS Prevention Active · Zero Shift)사용 방법
11. User-Agent 문자열 입력 또는 [내 브라우저 정보 가져오기]
분석하고자 하는 서버 로그의 User-Agent를 입력창에 붙여넣거나, [내 브라우저 감지] 버튼을 클릭해 현재 접속 중인 기기의 헤더를 1초 만에 불러옵니다.
22. 실시간 구조 분해 및 카드 정보 확인
브라우저 이름과 메이저 버전, 운영체제(OS), 렌더링 엔진, 하드웨어 폼팩터(데스크톱, 모바일, 태블릿, 봇)가 시각적 배지로 펼쳐집니다.
33. 웹뷰 및 크롤러 감지 진단
해당 요청이 일반 브라우저인지, SNS 인앱 브라우저(카카오톡, 인스타그램 등)인지, 아니면 검색엔진 인덱싱 크롤러인지 확인합니다.
44. 정규화된 JSON 데이터 복사
[JSON 복사] 버튼을 눌러 Node.js, Python, 백엔드 로깅 시스템에 바로 매핑할 수 있는 정형화된 JSON 객체를 클립보드에 담습니다.
실무에서의 User-Agent 파싱 및 활용 사례
반응형 웹 분기부터 마케팅 인앱 브라우저 탈출 스크립트까지 다양하게 활용됩니다.
결제나 파일 다운로드가 차단되는 인앱 브라우저를 감지하여 'kakaotalk://web/openExternalApp' 스킴으로 사파리나 크롬을 강제 호출합니다.
Nginx access.log에서 악성 스크래핑 봇이나 위장된 Googlebot 요청을 식별하여 WAF 방화벽 차단 목록에 등록합니다.
웹사이트 방문자의 OS를 분석하여 iOS 사용자는 애플 앱스토어로, 안드로이드 사용자는 구글 플레이스토어로 자동 리다이렉트합니다.
최신 웹 표준 기술(WebP, CSS Grid)을 지원하지 못하는 구버전 브라우저 접속자에게 브라우저 업데이트 권장 배너를 노출합니다.
💡 User-Agent 처리 전문가 팁 & 최신 웹 트렌드
개인정보 보호 강화를 위해 최신 크롬/사파리는 OS 빌드 번호나 디바이스 상세 모델명을 고정된 더미 값으로 축소하여 전송합니다.
정밀한 CPU 아키텍처나 모델명이 필요한 경우 최신 모던 규격인 `Sec-CH-UA-Model`, `Sec-CH-UA-Platform-Version` 헤더를 활용하세요.
iPadOS의 Safari는 기본적으로 데스크톱 웹을 요청하기 위해 Mac과 동일한 `Macintosh` UA를 전송하므로 터치 지원 여부(`maxTouchPoints > 0`)를 함께 검사해야 합니다.
클라이언트는 cURL이나 브라우저 개발자 도구를 통해 UA를 손쉽게 조작할 수 있으므로 절대 보안 인증이나 결제 인가 수단으로 단독 사용하지 마세요.
⚠️ 흔히 하는 실수 & 예방법
자주 묻는 질문 (FAQ)
사용자 및 전문가들이 가장 자주 묻는 핵심 질문과 명확한 해답입니다.
1990년대 초 넷스케이프(코드명 Mozilla)가 최초로 프레임(Frame) 등 혁신 기능을 지원하자, 많은 웹 서버들이 오직 Mozilla 브라우저에만 해당 페이지를 전송하도록 설정했습니다. 이후 등장한 인터넷 익스플로러와 다른 브라우저들이 동일한 웹페이지를 제공받기 위해 '우리도 모질라와 호환된다'는 의미로 Mozilla/5.0을 헤더 맨 앞에 붙이기 시작했고, 이것이 굳어져 오늘날까지 유지되고 있는 역사적 레거시입니다.
Wide Responsive Banner
(CLS Prevention Active · Zero Shift)관련 도구 추천
HTTP 상태 코드 사전 및 REST API 가이드
HTTP 상태 코드(100~599) 규격 검색, 원인 분석 및 REST API 상황별 권장 응답 코드 가이드
CSP 보안 헤더 및 웹 보안 설정 빌더
Content-Security-Policy(CSP), HSTS, X-Frame-Options 헤더를 체크박스로 조합해 Nginx/Next.js 설정 생성
비가시 투명 문자 탐지기 & 인스타 줄바꿈 공백 복사
Zero-Width Space(U+200B), NBSP 등 코딩 에러를 유발하는 투명 문자 감지·제거 및 인스타그램 줄바꿈 공백 복사
JSON 포매터 및 유효성 검증기
JSON 정렬, 들여쓰기 2칸/4칸/압축(Minify), 문법 에러 위치 감지, 코드/트리 뷰 및 다운로드