
크롬은 사용자 에이전트(User-Agent, UA) 문자열에서 세부 브라우저 버전과 운영체제 정보, 안드로이드 기기 모델을 고정값으로 바꿨다. 사이트는 필요한 정보를 사용자 에이전트 클라이언트 힌트(UA-CH)로 요청할 수 있지만, 기존 UA 문자열만 읽는 코드는 정확한 세부 정보를 얻지 못한다.
크롬의 사용자 에이전트 문자열이 Chrome/143.0.0.0으로 표시돼도 chrome://version에서 실제 빌드가 143.0.7499.96으로 나온다면 둘 다 맞다. 크롬의 사용자 에이전트 감소 프로그램은 UA 문자열에서 세부 정보를 줄이고, 이를 명시적으로 요청할 때 제공하는 별도 경로로 옮겼다.
UA 문자열에서 바뀐 정보
MDN의 사용자 에이전트 감소 안내에 따르면 제거 대상은 정확한 운영체제 버전, 기기 모델, 브라우저의 마이너·빌드·패치 버전이다. 주요 크롬 버전은 남으며 업데이트에 따라 바뀐다. 그 뒤의 버전은 항상 0.0.0으로 표시된다.
| 플랫폼 | 고정된 값 |
|---|---|
| Windows | Windows NT 10.0; Win64; x64 (Windows 10과 11 모두) |
| macOS | Macintosh; Intel Mac OS X 10_15_7 |
| Linux | X11; Linux x86_64 |
| ChromeOS | X11; CrOS x86_64 14541.0.0 |
| Android | Android 10; K (실제 기기 모델 대신 K) |
안드로이드 기기에서 변경 전 UA 문자열은 다음과 같을 수 있다.
Mozilla/5.0 (Linux; Android 16; Pixel 9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.7499.96 Mobile Safari/537.36
감소 적용 후 같은 기기의 문자열은 다음과 같이 바뀐다.
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Mobile Safari/537.36
실제 안드로이드 버전과 Pixel 9 모델명은 표시되지 않는다. 주요 버전 143은 사이트가 호환성에 따라 분기할 수 있도록 남아 있다.
정보 요청 방식과 사이트 영향
2021년 Chromium 블로그 발표는 UA 문자열이 모든 요청에서 정보를 수동으로 노출하고, 형식이 자유로워 브라우저가 안전하게 변경하기 어렵다는 점을 문제로 들었다. 필드를 바로 삭제하면 기존 UA 판별 코드가 깨질 수 있어, 크롬은 문자열 형식을 유지하면서 값을 여러 기기가 공유하는 고정값으로 바꿨다. 사이트가 세부 정보를 쓰던 경우를 고려해 여러 단계로 적용했고, 데스크톱에 앞서 원본 시험과 단계적 폐기를 거쳐 안드로이드에도 확대했다.
세부 정보가 사라진 것은 아니다. UA-CH에서는 브랜드, 모바일 여부, 플랫폼 이름 같은 일부 정보가 자동으로 제공되고, 전체 버전이나 정확한 운영체제 버전, 기기 모델 같은 정보는 서버가 Accept-CH 헤더로 요청해야 공개된다. 클라이언트에서는 navigator.userAgentData.getHighEntropyValues()로 읽는다. 관련 내용은 UA-CH 설명에서 확인할 수 있다.
navigator.userAgent에서 정확한 OS 빌드나 기기 모델, 마이너 버전을 읽는 사이트와 도구는 값이 0.0.0이나 K로 바뀌어도 오류를 내지 않고 잘못된 결과를 낼 수 있다. 브라우저 종류와 주요 버전, 모바일 여부만 확인하는 코드는 영향을 받지 않는다. 세부 값이 필요한 사이트는 UA-CH를 사용해야 한다.
스푸핑 판별과 직접 확인
UA 문자열의 패치 버전은 이제 실제 업데이트를 따라가지 않는다. 따라서 0.0.0은 최신 크로미움 기반 브라우저에서도 정상적인 값이며, 그 자체로 의심 신호가 되지 않는다. 반면 UA가 주장하는 브라우저 버전과 기능 탐지로 확인한 실제 렌더링 엔진 버전이 맞지 않으면 스푸핑을 가늠하는 단서가 될 수 있다. 엔진 버전을 확인하는 방법과 사용자 에이전트 스푸핑 탐지를 참고할 수 있다. BrowserInsight의 커널 검사 도구는 UA와 기능 탐지 결과를 나란히 보여 준다.
직접 확인하려면 개발자 도구에서 navigator.userAgent를 실행해 주요 버전 뒤가 0.0.0인지 살펴보면 된다. chrome://version의 네 부분 빌드 번호와 비교하면 차이를 확인할 수 있다. 안드로이드에서는 기기 모델 대신 K가 표시되는지도 볼 수 있다.
이 감소 프로그램은 크로미움 기반 브라우저에 적용된다. 파이어폭스와 사파리는 전통적인 UA 문자열을 계속 사용한다. iOS용 크롬은 애플의 WebKit 엔진을 사용하므로, Blink 기반 크롬을 대상으로 한 감소 적용 범위에 포함되지 않는다. 안드로이드 WebView도 기존 UA 문자열을 유지한다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요