본문 바로가기
Coding Study/FrontEnd Study Note

User-Agent

by bell_one 2026. 4. 7.

**User-Agent(UA)**는 웹 서버에 접속하는 클라이언트(브라우저, 앱, 로봇 등)의 정체성을 알려주는 신분증 같은 문자열입니다. HTTP 요청 헤더(Request Header)에 포함되어 서버로 전송됩니다.


1. User-Agent의 생김새

실제 브라우저가 보내는 User-Agent는 꽤나 복잡하고 길게 생겼습니다.

예시 (Windows용 크롬 브라우저):

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

이 복잡한 문자열 안에는 다음과 같은 정보들이 숨어 있습니다.

  • Mozilla/5.0: 역사적인 이유로 거의 모든 브라우저가 공통으로 사용하는 접두사입니다.
  • Windows NT 10.0; Win64; x64: 사용 중인 운영체제(OS) 정보입니다.
  • AppleWebKit/537.36: 브라우저가 화면을 그리는 데 사용하는 엔진(Rendering Engine) 정보입니다.
  • Chrome/120.0.0.0: 실제 브라우저의 이름과 상세 버전입니다.

2. 왜 이렇게 복잡해졌나요? (비화)

User-Agent가 지저분해진 이유는 "호환성 전쟁" 때문입니다.

과거 특정 브라우저에서만 돌아가는 기능을 서버가 판단하기 위해 User-Agent를 확인하자, 다른 브라우저들이 그 기능을 쓰고 싶어서 자신들의 이름 앞에 "나는 사실 Mozilla야", "나도 Safari 기능을 가지고 있어"라며 이름을 덧붙이기 시작한 결과입니다. 그래서 지금은 거의 모든 브라우저의 UA에 Mozilla, AppleWebKit, Safari 같은 이름이 뒤섞여 있게 되었습니다.


3. User-Agent는 어디에 쓰이나요?

서버는 전달받은 User-Agent를 보고 다음과 같은 판단을 내립니다.

활용 사례 설명
기기 최적화 접속자가 모바일인지 PC인지 확인하여 그에 맞는 웹페이지(m.naver.com 등)를 보여줍니다.
브라우저 호환성 특정 브라우저(예: 구버전 IE)에서 지원하지 않는 기능이 있을 때 대체 코드를 실행합니다.
통계 및 분석 구글 애널리틱스 같은 도구에서 어떤 OS나 브라우저 사용자가 많은지 통계를 냅니다.
봇/크롤러 판별 구글 검색 엔진 로봇(Googlebot)인지, 악의적인 스크래핑 봇인지 확인하여 접근을 제어합니다.

4. 개인정보 보호와 새로운 변화 (UA Client Hints)

최근에는 User-Agent가 너무 많은 정보를 담고 있어 사용자를 식별하는 도구(Fingerprinting)로 악용될 수 있다는 우려가 커졌습니다. 그래서 구글 크롬을 중심으로 **User-Agent Client Hints (UA-CH)**라는 새로운 방식이 도입되고 있습니다.

  • 기존: 서버가 원치 않아도 상세한 정보를 통째로 다 보냄.
  • UA-CH: 서버가 필요한 정보(예: OS 버전)를 요청하면, 브라우저가 사용자의 동의나 정책에 따라 그 정보만 콕 집어 알려줌.

💡 개발 시 주의사항

프론트엔드나 백엔드 로직에서 User-Agent를 파싱하여 특정 브라우저를 막거나 기능을 제한하는 것은 위험할 수 있습니다. 사용자가 UA를 임의로 조작(Spoofing)하기 쉽기 때문입니다. 따라서 가급적이면 **"어떤 브라우저인가?"**를 따지기보다는, **"이 기능(Feature)을 지원하는 브라우저인가?"**를 직접 확인하는 방식(Modernizr 등 활용)을 권장합니다.

'Coding Study > FrontEnd Study Note' 카테고리의 다른 글

리액트 Batching Update  (0) 2026.04.07
제네레이터에 대해 설명해주세요.  (0) 2026.03.31
이터러블 프로토콜  (0) 2026.03.31
XSS 공격과 프론트엔드  (0) 2026.03.31
Node.js  (0) 2026.03.24