[목차] == 개요 == {{{+1 '''User Agent'''}}} 사용자를 대신하여 일을 수행하는 [[소프트웨어]]의 식별 정보이다. 여기서 사용자 에이전트가 쓰이는 곳은 대개 웹 분야이기 때문에 '사용자를 대신하여 일을 수행하는 소프트웨어'는 대개 '''[[웹 브라우저]]'''를 뜻한다. 그런데 [[웹 브라우저]]와 [[운영체제]]의 수는 수없이 많다. 웹 브라우저만 해도 [[Microsoft Edge|엣지]], [[Safari|사파리]], [[Chrome|크롬]], [[Firefox|파이어폭스]] 등이 있고, 최근에는 운영체제의 다변화도 이루어져 [[Microsoft Windows|Windows]] 말고도 [[안드로이드(운영체제)|안드로이드]], [[iOS]] 등 모바일 플랫폼용 운영체제도 많이 출시되었다. 여기서 웹 페이지에 접속할 때 각 플랫폼에 맞는 페이지, 즉 모바일 페이지나 데스크탑용 페이지로 연결하려면 거기에 맞는 정보가 필요한데, 그 정보가 바로 '''사용자 에이전트'''이다. 이름만 보면 거창하지만 사실상 평범한 웹 헤더다. [[https://www.whatismybrowser.com/detect/what-is-my-user-agent|What is my user agent?]] 등에서 확인할 수 있다. [[https://www.youip.net/browser.php|YOUIP.NET]] 에서는 Fake-user-agent 와 Real-user-agent를 감지하여 표시해주는 기능을 제공한다. 사실 이는 사용자 에이전트 자체라기 보다는, 사용자 에이전트가 뭔지 표시하는 문자열이고, 영어로 정확히 표현하면 User-Agent string in HTTP라고 해야 옳겠지만, 줄임말 비슷하게 앞뒤 자르고 User Agent라고만 하는 경향이 있다보니 용어가 혼용되는 것이다. [[https://en.wikipedia.org/wiki/User_agent|영문 위키백과]]에서도 설명 자체는 구분해 뒀지만, User agent identification과 Use in HTTP라는 하위 문서를 통해 적당히 구분해 둔 정도이다. 아래 설명들도 바로 이 웹 헤더로써의 사용자 에이전트를 설명하는 것이다. 파이어폭스 계열 브라우저에서는 about:config에서 사용자 에이전트 문자열을 바꿀 수 있으며 타브라우저는 확장기능으로 변경할수 있다. IETab에서도 특정 버전의 사용자에이전트로 바꿀수있는 기능이 있다. 과거 IE7 미지원 웹페이지가 많았을때 구세주였다. == 구조 == >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에서 출력하는 내용 [[Microsoft Windows|Windows]] NT 커널 버전 10을 사용하는 64비트 운영체제[* [[Windows 10]], [[Windows 11]]]상의 Gecko 같은 브라우저 레이아웃 엔진인 KHTML을 사용하는[* [[The Chromium Projects|크로뮴]]에서 사용하는 엔진은 블링크지만 KHTML의 포크인 웹킷에서 다시 한번 포크한 엔진이기 때문에 KHTML로 표기된다.] [[Microsoft Edge|엣지]] 버전 108.0.1462.46이고, [[Chrome|크롬]] 버전 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에서 출력하는 내용 [[Firefox|파이어폭스]] 버전 108로 확인 시 볼 수 있는 사용자 에이전트 문자열이다. 파이어폭스 자체가 오리지널 Gecko 엔진을 이용하기 때문에 깔끔하게 Gecko와 Firefox의 버전만 적혀있다.[* 단 파이어폭스의 데스크탑 버전에서는 Gecko의 날짜가 20100101로 고정되어 있다.] [[https://developers.whatismybrowser.com/useragents/explore/|여기]]에서 해당 사이트가 수집한 모든 User-Agent string을 확인할 수 있다. == 역사 == === 과거 === [[월드 와이드 웹]]이 처음 만들어졌을 때는 딱히 웹 브라우저에 의한 기능 차이나 호환성과 같은 개념이 없었으나, 시간이 지날수록 브라우저가 많아지고 호환성 문제가 늘어났기 때문에 이 문제들을 해결하기 위해 만들어졌다. 이로 인해 [[모자이크(웹 브라우저)|모자이크]]에서는 제품명/버전과 같은 형식으로 Mosaic/0.9와 같이 표시하였고, [[넷스케이프 내비게이터]]는 코드네임이었던 Mozilla를 이용하여 Mozilla/1.0과 같은 식으로 표시하였다. 1996년 RFC 1945[[https://datatracker.ietf.org/doc/html/rfc1945|#]]로 표준화된 HTTP 1.0에 사용자 에이전트라는 개념이 포함되면서 현재까지 내려오고 있다. 이후 [[인터넷 익스플로러]]가 자사 제품이 Netscape 브라우저의 특정 버전과 호환된다는 의미로 사용자 에이전트 정보에 Mozilla/version을 --도용--명시하고 뒤에 compatible; MSIE Version과 문구를 추가했다. 실제로는 Mozilla/version 기반이 아니었지만. [[오페라]], [[사파리]], [[크롬(웹 브라우저)|크롬]] 등 다른 브라우저 벤더들 또한 KHTML, like Gecko와 같이 브라우저 고유의 문구를 추가한 구조를 하고 있다. Mozilla/5.0은 [[넷스케이프 내비게이터]]의 [[오픈 소스]]로 시작한 [[모질라 애플리케이션 스위트]]에서 처음으로 도입하였다. === 현재 === 현재도 사용자 에이전트의 구조는 큰 변경 없이 내려오고 있다. Mozilla/5.0 또한 호환성을 위해 수십년 간 버전 올림 없이 그대로 이용되고 있다. 대신 뒤에 붙는 내용은 브라우저에 따라 많이 다르다. [[Chrome]]은 버전 100부터 점진적으로 사용자 에이전트에 포함되는 데이터 양을 줄인다고 발표했다. 사용자 개인 정보에 위해가 될 수 있는 개인 식별의 가능성을 줄이기 위함이라고 한다.[[https://developer.chrome.com/blog/user-agent-reduction-origin-trial/|#]] 자세한 사항은 [[https://www.chromium.org/updates/ua-reduction|여기]]에서 확인 가능. [[분류:컴퓨터]]