사용자 에이전트

 

사용자 에이전트 / User Agent
1. 개요
2. 구조
3. 역사
3.1. 과거
3.2. 현재


1. 개요


사용자를 대신하여 일을 수행하는 소프트웨어 에이전트.
여기서 '사용자를 대신하여 일을 수행하는 소프트웨어'는 대개 '''웹 브라우저'''를 뜻한다. 사용자 에이전트가 쓰이는 곳은 대개 웹 분야이니까.
그런데 웹 브라우저와 OS의 수는 수없이 많다. 웹 브라우저만 해도 모질라 파이어폭스, 구글 크롬, 애플 Safari, MS 인터넷 익스플로러 등이 있고, 최근에는 OS의 다변화도 이루어져 MS 윈도우 말고도 안드로이드(운영체제), iOS 등 모바일 플랫폼용 OS도 많이 출시되었다.
여기서 웹페이지에 접속할 때 각 플랫폼에 맞는 페이지, 즉 모바일 페이지나 데스크탑용 페이지로 연결하려면 거기에 맞는 정보가 필요한데, '''그 정보가 바로 사용자 에이전트'''이다. 이름만 보면 거창하지만 사실상 평범한 웹 헤더다. What is my User Agent? 등에서 확인할 수 있다.
사실 이는 사용자 에이전트 자체라기 보다는, 사용자 에이전트가 뭔지 표시하는 문자열이고, 영어로 정확히 표현하면 User-Agent string in HTTP라고 해야 옳겠지만, 줄임말 비슷하게 앞뒤 자르고 User Agent라고만 하는 경향이 있다보니 용어가 혼용되는 것이다. 영문 위키백과에서도 설명 자체는 구분해놨지만, User agent identification과 Use in HTTP라는 하위 문서를 통해 적당히 구분해 놓은 정도이다. 아래 설명들도 바로 이 웹 헤더로써의 사용자 에이전트를 설명하는 것이다.

2. 구조


아래에 샘플을 준비했다.

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

윈도우 NT 10버전 64비트의 Gecko 같은 브라우저 레이아웃 엔진인 KHTML을 사용하는 크롬 52.0.2743.116버전이고, AppleWebKit 및 Safari 537.36 버전 과 호환되는 브라우저다. (User-agent string에 대해 좀 아는 사람은 알겠지만 실제 크롬 52.0.2743.116버전에서 출력하는 내용이다.)
이하는 파이어폭스 60버전으로 확인 시 볼 수 있는 User-agent string이다.

Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0

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

3. 역사



3.1. 과거


1995년 HTML 2.0이 나오기 전까지 HTML은 표준화되지 않았다.
당시에는 유저 에이전트 없이 아주 잘 사용했다. 하지만 시간이 지날수록 브라우저가 많아지고 호환성 문제가 늘어나 이 문제들을 해결하기 위해 만든 것이 '''유저 에이전트'''이다. 하지만 그 당시에는 Netscape Navigator와 Internet Explorer 만 주로 사용하였고, 그래서 종류와 버전으로 구분 했으면 됐다.
그러나 Netscape Navigator는 Mozilla/version 정보를 찾는 방식이었다. 이후의 다른 브라우저 벤더들은 자사 제품이 Netscape 브라우저의 특정 버전과 호환된다는 의미로 유저 에이전트 정보에 Mozilla/version 을 추가했다. 실제로는 Mozilla/version 기반이 아니었지만.

3.2. 현재


옛 페이지들을 그냥 버릴 수는 없으므로 호환성을 위해 이제는 그냥 Mozilla/5.0을 넣어줘서 호환성을 유지하고 있다. 비슷한 이유로 like Gecko도 거의 모든 브라우저에서 사용하게 되었다.[1]

[1] 몇몇 브라우저는 생략 하기도 한다. 그리고 모질라 계열 브라우저(예전의 Netscape, Mozilla Suite나 현재의 Firefox, SeaMonkey 등)는 정통 Gecko 엔진이므로 like 없이 Gecko만 쓴다.

분류