home

웹 표준의 중요성(퍼먹는 user-agent)

글 분류
main
키워드
browser
생성일
2022/06/11 14:15
최근 수정일
2023/04/23 12:51
작성중

⚽️ 목표

user-agent에 대해 Araboza

TLDR;

1. 엣지는 크롬인척 하고 싶었고 2. 크롬은 사파리인척 하고 싶었고 3. 사파리는 KHTML인척 하고 싶었고 4. KHTML은 Gecko인척 하고 싶었고 5. 모든 브라우저는 모질라인척을 하고싶었다
user agent는 이젠 끔찍한 혼종이라 더 이상은 유의미하지 않다. → 간접적으로 조합에 따라서 브라우저 유추는 가능

들어가며

브라우저 춘추 전국시대를 표현하는 글이다, 많이 왔다 갔다 하니 어지러움 주의하고 읽어주길 바란다.
브라우저가 처음 나왔을때는 당연히 웹표준이란건 존재하지도 않았습니다, 그리하여 브라우저 마다 렌더링 할 수 있는 능력이 달랐다. → 웹서버는 user-agent를 파싱하여 각 브라우저가 렌더링 할 수 있는 컨텐츠를 다르게 줬었다.

브라우저 전쟁사

1. 모든것의 시작 - NCSA Mosaic

NCSA_Mosaic/2.0 (Windows.3.1)
Plain Text
복사
이미지를 표시할 수 있던 최초의 브라우저
개발 책임자였던 마크 앤드리슨이 넷스케이프 브라우저를 개발한 후 개발 중단 → MS가 기존 모자이크 저작권을 구매한 후 소스코드를 활요해 인터넷 익스플로러를 개발함 불지옥의 서막

2. Mozilla(Netscape)

Mozilla/1.0(Win3.1)
Plain Text
복사
Mosaic Killer의 줄임말 - 나중에 Netscape로 이름변경
해당 브라우저만 프레임을 지원해서 당시 웹 서버는 user-agent에 Mozilla가 보일 경우에만 프레임이 들어간 페이지를 반환했다.
user-agent 헤더에 Mozilla가 없을 경우 프레임이 존재하지 않는 페이지 반환했었다는 뜻
여기까지는 그래도 user agent 자체에 유의미한 의미가 존재했다. → 여기까지는..

3. 분노의 원천 - IE

Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)
Plain Text
복사
초창기엔 프레임을 지원하지 않다가 이후 업데이트를 통해서 지원 -> 당시 서버들은 요청 useragent에 mozilla가 들어간 사이트에만 프레임을 넣어 반환했으므로 IE도 업데이트 이후 user-agent에 "Mozilla" 를 추가하게 된다.
여기서 부터 user agent의 유의미한 의미가 희미해진다.
MS가 IE를 Windows 운영체제 기본 브라우저로 제공 + Mozilla보다 나은 기능을 제공 → 이로인해 높은 점유율을 갖게 됐고, 넷스케이프의 몰락이 시작됐다.

4. 떠오르는 새로운 희망 - Firefox

이름 변경의 순서

Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826
Plain Text
복사
넷스케이프에서 Gecko 엔진(렌더링 엔진 - 웹 표준을 잘 지키고 있었던 엔진)을 기반으로한 브라우저 모질라를 출시 → 이후 Firefox로 이름이 바뀐다.
Firefox는 웹표준 잘 지키고 있었지만 IE는 마이웨이로 였기 때문에 서버는 user-agent에 mozilla는 신경 안쓰고 Gecko가 있을 경우에만 웹표준에 준수한 페이지를 보내주는게 국룰 이였다.

5. 넌 또 뭔데 - Konqueror

Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)
Plain Text
복사
KHTML도 웹 표준을 준수하는 엔진인데 Gecko가 안들어갔단 이유로 IE와 같은 취급 받고 있었다. - 그래서 맨뒤에 like Gecko를 붙이게 된다.
“아… 그만하세요 제발…”

6. 이상하게 짜증나게 하면서 맘에드는 그 녀석 - Safari

Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5
Plain Text
복사
KHTML을 기반으로 훨씬 많은 기능을 추가한 WebKit 엔진을 새로 개발된 오픈소스 엔진이다.
Apple, Google, Nokia등등이 함께 개발
추후에 구글은 webkit과 손절 치고 webkit에서 fork된 chromium 브라우저를 사용하게 된다.

7. 통일 개선장군, 근데 너어어…! - Chrome

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
Plain Text
복사
Webkit은 구글 + 애플과 함께 여러 벤더사들이 만들었던 오픈소스 브라우저 엔진
Webkit을 기반으로 새로운 엔진을 제작한다. - chromium
브라우저를 만듬 - 사파리인척을 하고 싶었었다.
현재는 대부분의 브라우저가 chromium 엔진을 사용하게 됐다.

7-1. 크로미움 이전 EDGE

Mozilla/5.0 (Windows NT 10.0; Win64; x64; ServiceUI 11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299
Plain Text
복사
기존 IE 코드를 버리고 새로운 EDGE 브라우저를 만들게됐다. -> 크롬과의 호환성을높였다는 것을 장점을 세워 크롬을 따라함
요즘 Edge는 크로미움 엔진을 사용 → 국내 사이트 중 chrome으론 안돌아 가지만 Edge에는 돌아가는 사이트들 존재한다.
웹표준 저리가라! 아직도 user agent로 기능을 나누다니!

번외 1 - 오페라

"우리는 우리 사용자들이 오페라가 어떤 브라우저 인척 하는지 선택하게 할거에요.."
1995년 부터 2013년 까진 presto라는 자체엔진을 사용했었으나, 현재는 chromium 기반으로 변경됐다.

번외 2 - 2023년에도 이런 이슈가 있다고…?

모던 웹에서는 "브라우저마다 다른 결과물 전달"은 웹 표준을 해치는 아주 위험한 생각이지만 위의 이야기를 봐왔듯이 이전 웹서비스에서는 흔한 일
Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko
Plain Text
복사
Internet Explorer 11의 user agent
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:110.0) Gecko/20100101 Firefox/11
Plain Text
복사
Firefox 110 버전의 user agent
둘의 user agent가 완전 비슷하긴 하다..
오래된 사이트들에서 최신 파이어 폭스의 11이란 글자를 보고 "익스플로러 11 아냐?!??!" 라고 판단하여 익스플로러 11에 최적화에된 사이트를 전달해주는 케이스가 발생했었다.
다음 릴리즈 부터 11* 을 넘기고 120으로 버전 변경할 예정 -> 다행이도 나이틀리에서 발생한 문제다. 나이틀리의 중요성을 다시한번…

참조