[정리] 사용자 에이전트(User Agent)
Opened this issue · 0 comments
sbyeol3 commented
- 사용자 에이전트(User Agent) : 사용자의 신분을 대신할 수 있는 소프트웨어로, 웹에서는 브라우저 종류와 버전, 운영체제 등을 포함한다.
- HTTP header로서도 사용되지만
navigator
인터페이스의 속성이기도 하다. - 대부분의 브라우저는 비슷한 지원 범위를 갖고 있으므로 모바일 디바이스 기기 여부와 OS 버전을 체크하는 용도가 더 강하다.
사용자 에이전트가 복잡해진 이유
- 1993년 마크 앤드리슨은
NCSA Mosaic
라는 브라우저를 개발. 이때부터 UA가 들어가는데 당시 구조는제품명/버전
이었다.- ex.
Mosaic/0.9
- ex.
- 저작권 문제로 앤드리슨은 회사이름을 _넷스케이프 커뮤니케이션즈_로 변경하고
Netscape Navigator
라는 브라우저를 다시 개발했다. 이 넷스케이프에는Mozilla
라는 코드네임이 존재했고 이것이 UA에 그대로 반영되었다. 여기에 언어설정, 운영체제 등의 부가적인 정보를 덧붙였고 버전에 따라 UA 형식을 변경하였다.- ex. `Mozilla/2.02 [fr] (WinNT; I)
- 이후 마이크로소프트 사에서 모자이크 브라우저의 라이센스를 구매하여
Trident
라는 엔진을 만들고IE
를 개발했다. - 당시 웹 서버들은 (IE도 프레임 태그를 지원했음에도) UA를 체크하여 넷스케이프라면
<frame>
을 지원했기 때문에 마이크로소프트 사는 자신들의 UA를Mozilla
로 시작하게 만들어 웹 서버를 속이게끔 하여 프레임 태그가 적용된 HTML 파일을 받을 수 있었다.- ex.
Mozilla/2.0 (compatible; MSIE 3.02; Windows 95)
(IE)
- ex.
- 1999년 IE가 시장점유율 99%를 차지하며 넷스케이프 개발자는 넷스케이프를 오픈소스로 만들고 모질라 재단을 설립한다. 이때
Gecko
엔진을 공개하였으며, 2002년 브라우저Firefox
를 공개한다.- ex.
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1
- Gecko 엔진 등장 이후
Mozilla/5.0
은 무의미한 존재가 되었으나 이전 코드와의 호환성을 위해 그대로 유지한다. 이 때부터 모든 UA 문자열은Mozilla/5.0
로 시작하게 된다.
- ex.
- Gecko 엔진을 기반으로 하는 브라우저들이 다수 등장하자 웹 서버들은 UA에
Gecko
라는 문자열이 포함된 브라우저에 대한 지원을 강화한다. - 2003년 애플은
Webkit
기반의 웹 브라우저Safari
를 발표한다. 애플도 이전 마이크로소프트와 동일한 해결책으로 Gecko 기반의 브라우저 생태계에서 Safari를 안착시키고자 한다.- ex.
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/522.15.5 (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5
- ex.
- 구글의
Chrome
은 webkit 기반의 브라우저였기 때문에 Safari처럼 인식되기를 원했기 때문에 Safari의 UA를 따라하면서Chrome
이라는 문자열을 추가한다.- ex.
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13
- ex.
출처 : https://wormwlrm.github.io/2021/10/11/Why-User-Agent-string-is-so-complex.html