User-Agent(약칭 UA)는 HTTP 요청 헤더 필드 중 하나로, 브라우저(또는 크롤러, 기타 HTTP 클라이언트)가 요청을 보낼 때마다 이 문자열을 붙여 서버에 '내가 누구인지' 알려줍니다——브라우저 이름과 버전, 운영체제와 버전, 렌더링 엔진, 디바이스 타입, CPU 아키텍처 등의 정보가 포함됩니다. 서버는 UA에 따라 디바이스에 적합한 콘텐츠를 반환할 수 있으며 개발자는 UA를 사용해 호환성 처리, 트래픽 통계, 크롤러 식별을 자주 수행합니다.
UA 문자열이 길고 어지럽게 보이는 데는 역사적 이유가 있습니다: 브라우저 전쟁 시절, 새로운 브라우저는 오래된 브라우저 스니핑 기반 웹사이트에서도 정상 작동하도록 UA에서 자신이 오래된 브라우저라고 주장했습니다(예를 들어 Chrome은 Safari 마커를 붙이고 Safari는 Gecko 마커를 붙였습니다). 겹겹이 쌓이면서 현대 UA 문자열에는 많은 역사적 호환성 식별자가 포함되어 사람이 직접 읽기 어렵게 되었습니다. UA 파서의 역할은 이 복잡한 문자열을 분해하여 진정으로 유용한 정보를 추출하는 것입니다.
주요 브라우저에는 각각 고정된 형식과 식별자가 있습니다: Chrome은 Chrome/버전 번호를 포함하고 Firefox는 Firefox/버전 번호를 포함하며 Safari는 Version/버전 번호와 Safari/마커를 포함하고 새로운 Edge는 Edg/로 식별되며 위챗 내장 브라우저는 MicroMessenger/로 식별됩니다. 운영체제에도 해당 마커가 있습니다: Windows는 Windows NT+버전, macOS는 Mac OS X+버전, iOS는 CPU iPhone OS+버전, Android는 Android+버전을 사용합니다. 정규식으로 이 키워드를 매칭하면 정확히 식별할 수 있습니다.
렌더링 엔진은 브라우저가 HTML/CSS를 파싱하고 페이지를 렌더링하는 핵심입니다: Chromium 계열 브라우저(Chrome, Edge, Opera 등)는 Blink 엔진을 사용하고 Safari는 WebKit을 사용하며 Firefox는 Gecko를 사용하고 구 IE는 Trident을 사용합니다. 렌더링 엔진을 알면 CSS/JS 호환성 문제를 판단하는 데 도움이 됩니다——동일한 Blink 엔진이라면 Chrome과 Edge의 렌더링 동작은 매우 일치합니다.
크롤러 감지는 UA 파싱의 중요한 용도 중 하나입니다. 검색 엔진 크롤러(Googlebot, Bingbot, Baiduspider), SEO 도구 크롤러, 악의적인 크롤링 프로그램, 명령줄 도구(curl, wget), 스크립트 라이브러리(Python requests)는 모두 UA에 자신의 식별자를 붙이거나 아주 단순한 UA 문자열을 사용합니다. bot, crawler, spider, curl 등의 키워드를 매칭하면 사람이 아닌 접속 트래픽을 빠르게 식별할 수 있습니다.
디바이스 타입 식별은 주로 모바일 식별자에 의존합니다: Mobile, iPhone, Android 등의 키워드가 포함되면 스마트폰; iPad, Tablet, Kindle 등이 포함되면 태블릿; 나머지는 데스크톱 PC입니다. 다만 UA는 위장 가능(User-Agent Spoofing)하다는 점에 주의해야 합니다. 악의적인 크롤러는 정상 브라우저로 위장할 수 있으므로 엄격한 크롤러 방어에는 다른 특징도 결합해야 하며 UA 파싱은 어디까지나 예비 판단으로 사용해야 합니다.
CPU 아키텍처 정보는 오늘날 점점 더 중요해지고 있습니다: Apple M 시리즈 Mac은 ARM64 아키텍처를 사용하고 기존 Intel Mac은 x64를 사용합니다; Windows PC에는 x64와 ARM64가 모두 존재합니다(스냅드래곤 탑재 PC 등); 스마트폰은 모두 ARM64입니다. 소프트웨어를 다운로드할 때 UA에서 사용자 아키텍처를 판단할 수 있다면 해당 설치 패키지(예: .dmg에서 Intel/Mac 버전 구분, .exe에서 x64/ARM64 버전 구분)를 직접 제공하여 사용자 경험을 크게 향상시킬 수 있습니다.
UA 파싱에는 한계가 있다는 점에 주의해야 합니다: UA는 사용자나 플러그인에 의해 수정·위장될 수 있으며 새로운 버전의 브라우저가 UA 형식을 변경하면 정규식이 무효화될 수 있습니다. Windows 11은 NT 10.0 버전 번호를 그대로 사용하고 있어 UA에서 Win10/Win11을 구분할 수 없으며 iOS의 모든 제3자 브라우저(Chrome, Firefox for iOS)는 WebKit 엔진 사용이 강제되어 UA에 Safari 마커가 붙습니다. 본 도구의 파싱은 개발 디버깅, 로그 분석 등 대부분의 시나리오에 적합하지만 보안 요구 사항이 매우 높은 시나리오에서는 IP, TLS 핑거프린트 등 다각적 판단과 결합하여 사용하시기 바랍니다.