최근 수정 시각 : 2024-10-09 14:09:53

사용자 에이전트

1. 개요2. 구조3. 역사
3.1. 과거3.2. 현재

1. 개요

User Agent

사용자를 대신하여 일을 수행하는 소프트웨어의 식별 정보이다.
여기서 사용자 에이전트가 쓰이는 곳은 대개 웹 분야이기 때문에 '사용자를 대신하여 일을 수행하는 소프트웨어'는 대개 웹 브라우저를 뜻한다.

그런데 웹 브라우저운영체제의 수는 수없이 많다. 웹 브라우저만 해도 엣지, 사파리, 크롬, 파이어폭스 등이 있고, 최근에는 운영체제의 다변화도 이루어져 Windows 말고도 안드로이드, iOS 등 모바일 플랫폼용 운영체제도 많이 출시되었다.
여기서 웹 페이지에 접속할 때 각 플랫폼에 맞는 페이지, 즉 모바일 페이지나 데스크탑용 페이지로 연결하려면 거기에 맞는 정보가 필요한데, 그 정보가 바로 사용자 에이전트이다. 이름만 보면 거창하지만 사실상 평범한 웹 헤더다. What is my user agent? 등에서 확인할 수 있다.

YOUIP.NET 에서는 Fake-user-agent 와 Real-user-agent를 감지하여 표시해주는 기능을 제공한다.

사실 이는 사용자 에이전트 자체라기 보다는, 사용자 에이전트가 뭔지 표시하는 문자열이고, 영어로 정확히 표현하면 User-Agent string in HTTP라고 해야 옳겠지만, 줄임말 비슷하게 앞뒤 자르고 User Agent라고만 하는 경향이 있다보니 용어가 혼용되는 것이다. 영문 위키백과에서도 설명 자체는 구분해 뒀지만, User agent identification과 Use in HTTP라는 하위 문서를 통해 적당히 구분해 둔 정도이다. 아래 설명들도 바로 이 웹 헤더로써의 사용자 에이전트를 설명하는 것이다.

파이어폭스 계열 브라우저에서는 about:config에서 사용자 에이전트 문자열을 바꿀 수 있으며 타브라우저는 확장기능으로 변경할수 있다.

IETab에서도 특정 버전의 사용자에이전트로 바꿀수있는 기능이 있다. 과거 IE7 미지원 웹페이지가 많았을때 구세주였다.

2. 구조

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.46
Microsoft Edge 버전 108.0.1462.46에서 출력하는 내용
Windows NT 커널 버전 10을 사용하는 64비트 운영체제[1]상의 Gecko 같은 브라우저 레이아웃 엔진인 KHTML을 사용하는[2] 엣지 버전 108.0.1462.46이고, 크롬 버전 108.0.0.0, AppleWebKit 및 Safari 버전 537.36과 호환되는 브라우저라는 내용이며 맨 앞의 Mozilla/5.0 부분은 최신 브라우저를 알지 못하는 유물급의 사이트들을 위한 하위호환용 문구다.
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0
Firefox 버전 108.0에서 출력하는 내용
파이어폭스 버전 108로 확인 시 볼 수 있는 사용자 에이전트 문자열이다. 파이어폭스 자체가 오리지널 Gecko 엔진을 이용하기 때문에 깔끔하게 Gecko와 Firefox의 버전만 적혀있다.[3]

여기에서 해당 사이트가 수집한 모든 User-Agent string을 확인할 수 있다.

3. 역사

3.1. 과거

월드 와이드 웹이 처음 만들어졌을 때는 딱히 웹 브라우저에 의한 기능 차이나 호환성과 같은 개념이 없었으나, 시간이 지날수록 브라우저가 많아지고 호환성 문제가 늘어났기 때문에 이 문제들을 해결하기 위해 만들어졌다.

이로 인해 모자이크에서는 제품명/버전과 같은 형식으로 Mosaic/0.9와 같이 표시하였고, 넷스케이프 내비게이터는 코드네임이었던 Mozilla를 이용하여 Mozilla/1.0과 같은 식으로 표시하였다.

1996년 RFC 1945#로 표준화된 HTTP 1.0에 사용자 에이전트라는 개념이 포함되면서 현재까지 내려오고 있다.

이후 인터넷 익스플로러가 자사 제품이 Netscape 브라우저의 특정 버전과 호환된다는 의미로 사용자 에이전트 정보에 Mozilla/version을 도용명시하고 뒤에 compatible; MSIE Version과 문구를 추가했다. 실제로는 Mozilla/version 기반이 아니었지만. 오페라, 사파리, 크롬 등 다른 브라우저 벤더들 또한 KHTML, like Gecko와 같이 브라우저 고유의 문구를 추가한 구조를 하고 있다.

Mozilla/5.0은 넷스케이프 내비게이터오픈 소스로 시작한 모질라 애플리케이션 스위트에서 처음으로 도입하였다.

3.2. 현재

현재도 사용자 에이전트의 구조는 큰 변경 없이 내려오고 있다. Mozilla/5.0 또한 호환성을 위해 수십년 간 버전 올림 없이 그대로 이용되고 있다. 대신 뒤에 붙는 내용은 브라우저에 따라 많이 다르다.

Chrome은 버전 101부터 점진적으로 사용자 에이전트에 포함되는 데이터 양을 줄인다고 발표했다. 사용자 개인 정보에 위해가 될 수 있는 개인 식별의 가능성을 줄이기 위함이라고 한다.# 자세한 사항은 여기에서 확인 가능.

[1] Windows 10, Windows 11[2] 크로뮴에서 사용하는 엔진은 블링크지만 KHTML의 포크인 웹킷에서 다시 한번 포크한 엔진이기 때문에 KHTML로 표기된다.[3] 단 파이어폭스의 데스크탑 버전에서는 Gecko의 날짜가 20100101로 고정되어 있다.

분류