웹사이트에 접속할 때 브라우저는 서버에게 몰래 명함을 건넨다. 이 명함의 이름이 바로 User-Agent이다. User Agent란 무엇인가? 문자열 구조와 최신 Client Hints 전환 완벽 정리 글에서 다루듯, 화면 너머의 서버는 이 짧은 텍스트 한 줄만 보고도 접속자가 윈도우를 쓰는지 아이폰을 쓰는지, 크롬을 쓰는지 사파리를 쓰는지 귀신같이 알아낸다.

인터넷 세상에서 나는 어떤 모습으로 비치고 있을까. User Agent 파서 & 분석기를 통해 내 브라우저가 남기는 흔적을 추적해 본다.

왜 브라우저는 서로를 사칭할까

크롬, 사파리, 엣지 등 현대의 거의 모든 브라우저 유저 에이전트를 열어보면 공통적으로 Mozilla/5.0이라는 수상한 단어가 들어간다. 모질라는 과거의 유물인데 어째서 지금까지 살아남았을까.

1990년대 웹 브라우저 전쟁 시절, 서버 개발자들은 넷스파이트 모질라 브라우저에만 최적화된 화려한 웹페이지를 만들었다. 나중에 등장한 마이크로소프트의 인터넷 익스플로러는 이 차별을 뚫기 위해 자기를 모질라라고 속이기 시작했다.

그 결과 모든 브라우저가 서로를 모방하는 기괴한 전통이 생겼다. MDN Web Docs에서 설명하듯 오늘날의 유저 에이전트는 이런 복잡한 구조를 띤다.

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

이 한 줄 안에는 내가 사용하는 운영체제, 내부 렌더링 엔진, 그리고 실제 브라우저 버전까지 모든 비밀이 압축되어 있다.

이럴 때 유저 에이전트를 확인해 보세요

  • 스마트폰에서 접속한 모바일 웹사이트가 데스크톱 화면처럼 찌그러져서 보일 때
  • 웹 개발 도중 특정 브라우저 환경에서만 발생하는 에러를 테스트해야 할 때
  • 내가 방문하는 웹사이트들이 내 기기 정보를 어디까지 수집하는지 호기심이 생길 때
  • 오래된 웹서비스가 내 최신 브라우저를 구버전으로 오인하여 접속을 차단할 때

디지털 신분증 해독하는 법

유저 에이전트 문자열은 단순한 글자 뭉치가 아니라 몇 가지 구역으로 나뉜다.

첫 번째 구역은 호환성을 위한 위장 코드로 보통 Mozilla/5.0으로 시작한다. 그 뒤의 괄호 안에는 사용자의 운영체제 정보가 들어간다. 윈도우 사용자인지 맥북인지 혹은 안드로이드 스마트폰인지가 여기에 적힌다.

마지막 구역에는 진짜 브라우저의 정체와 버전이 드러난다. 크롬을 쓴다면 Chrome/버전이, 사파리를 쓴다면 Version/버전 Safari/버전 형태로 나타난다.

프라이버시를 지키기 위한 변화

과거에는 유저 에이전트에 너무 많은 정보가 담겨 있어 사용자를 추적하는 핑거프린팅(Fingerprinting)에 악용되곤 했다. 웹 표준은 이를 해결하기 위해 User-Agent Client Hints API와 같은 차세대 기술로 진화하고 있다.

서버가 필요한 최소한의 정보만 요청하고 브라우저는 허락된 만큼만 공개하는 방식이다. 내 브라우저가 서버에 어떤 비밀 메시지를 보내고 있는지 궁금하다면 직접 확인해 보자.