⚽️ 목표
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으로 버전 변경할 예정 -> 다행이도 나이틀리에서 발생한 문제다. 나이틀리의 중요성을 다시한번…