sbyeol3/articles

[정리] 사용자 에이전트(User Agent)

Opened this issue · 0 comments

  • 사용자 에이전트(User Agent) : 사용자의 신분을 대신할 수 있는 소프트웨어로, 웹에서는 브라우저 종류와 버전, 운영체제 등을 포함한다.
  • HTTP header로서도 사용되지만 navigator 인터페이스의 속성이기도 하다.
  • 대부분의 브라우저는 비슷한 지원 범위를 갖고 있으므로 모바일 디바이스 기기 여부와 OS 버전을 체크하는 용도가 더 강하다.

스크린샷 2022-02-04 오후 12 14 57

사용자 에이전트가 복잡해진 이유

  • 1993년 마크 앤드리슨은 NCSA Mosaic라는 브라우저를 개발. 이때부터 UA가 들어가는데 당시 구조는 제품명/버전이었다.
    • ex.Mosaic/0.9
  • 저작권 문제로 앤드리슨은 회사이름을 _넷스케이프 커뮤니케이션즈_로 변경하고 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)
  • 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로 시작하게 된다.
  • 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
  • 구글의 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

image

출처 : https://wormwlrm.github.io/2021/10/11/Why-User-Agent-string-is-so-complex.html


참고