E/D 2009. 3. 24. 18:26

user-agent string의 역사

이 글의 원본과 번역본을 같이 게재한다.


In the beginning there was NCSA Mosaic, and Mosaic called itself NCSA_Mosaic/2.0 (Windows 3.1), and Mosaic displayed pictures along with text, and there was much rejoicing.

And behold, then came a new web browser known as "Mozilla", being short for "Mosaic Killer," but Mosaic was not amused, so the public name was changed to Netscape, and Netscape called itself Mozilla/1.0 (Win3.1), and there was more rejoicing. And Netscape supported frames, and frames became popular among the people, but Mosaic did not support frames, and so came "user agent sniffing" and to "Mozilla" webmasters sent frames, but to other browsers they sent not frames.

And Netscape said, let us make fun of Microsoft and refer to Windows as "poorly debugged device drivers," and Microsoft was angry. And so Microsoft made their own web browser, which they called Internet Explorer, hoping for it to be a "Netscape Killer". And Internet Explorer supported frames, and yet was not Mozilla, and so was not given frames. And Microsoft grew impatient, and did not wish to wait for webmasters to learn of IE and begin to send it frames, and so Internet Explorer declared that it was "Mozilla compatible" and began to impersonate Netscape, and called itself Mozilla/1.22 (compatible; MSIE 2.0; Windows 95), and Internet Explorer received frames, and all of Microsoft was happy, but webmasters were confused.

And Microsoft sold IE with Windows, and made it better than Netscape, and the first browser war raged upon the face of the land. And behold, Netscape was killed, and there was much rejoicing at Microsoft. But Netscape was reborn as Mozilla, and Mozilla built Gecko, and called itself Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826, and Gecko was the rendering engine, and Gecko was good. And Mozilla became Firefox, and called itself Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0, and Firefox was very good. And Gecko began to multiply, and other browsers were born that used its code, and they called themselves Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.2) Gecko/20040825 Camino/0.8.1 the one, and Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.8) Gecko/20071008 SeaMonkey/1.0 another, each pretending to be Mozilla, and all of them powered by Gecko.

And Gecko was good, and IE was not, and sniffing was reborn, and Gecko was given good web code, and other browsers were not. And the followers of Linux were much sorrowed, because they had built Konqueror, whose engine was KHTML, which they thought was as good as Gecko, but it was not Gecko, and so was not given the good pages, and so Konquerer began to pretend to be "like Gecko" to get the good pages, and called itself Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko) and there was much confusion.

Then cometh Opera and said, "surely we should allow our users to decide which browser we should impersonate," and so Opera created a menu item, and Opera called itself Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.51, or Mozilla/5.0 (Windows NT 6.0; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51, or Opera/9.51 (Windows NT 5.1; U; en) depending on which option the user selected.

And Apple built Safari, and used KHTML, but added many features, and forked the project, and called it WebKit, but wanted pages written for KHTML, and so Safari called itself Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5, and it got worse.

And Microsoft feared Firefox greatly, and Internet Explorer returned, and called itself Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) and it rendered good code, but only if webmasters commanded it to do so.

And then Google built Chrome, and Chrome used Webkit, and it was like Safari, and wanted pages built for Safari, and so pretended to be Safari. And thus Chrome used WebKit, and pretended to be Safari, and WebKit pretended to be KHTML, and KHTML pretended to be Gecko, and all browsers pretended to be Mozilla, and Chrome called itself 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, and the user agent string was a complete mess, and near useless, and everyone pretended to be everyone else, and confusion abounded.


태초에 NCSA Mosaic가 있었다. Mosaic는 자신을 NCSA_Mosaic/2.0 (Windows 3.1)라고 불렀으며 텍스트와 그림을 함께 보여주었고, 보시기에 심히 좋았더라. 그 후 Mosaic Killer를 줄여서 만든 이름을 가진 Mozilla라고 하는 새로운 브라우저가 나타났다. Mosaic는 이 이름을 좋아하지 않았고, 결국 Mozilla의 공식 이름은 Netscape가 되었다. Netscape는 자신을 Mozilla/1.0(Win3.1)로 불렀고 보기에 좀 더 좋았다. Netscape는 frames를 지원해서 매우 인기가 있었지만 Mosaic는 frames를 지원하지 않았다. 그래서 웹 마스터들은 user-agent sniffing을 통해 Mozilla인 경우에는 frames를 사용할 수 있도록 사이트를 만들었고 다른 브라우저인 경우에는 frames를 사용하지 않도록 했다.

Netscape는 Microsoft 사의 윈도우즈를 버그투성이의 디바이스 드라이버 ("poorly debugged device drivers")라고 조롱했고 MS는 화가 났다. 그래서 MS는 Netscape Killer가 되길 바라며 Internet Explorer라고 하는 자신들의 웹 브라우저를 만들었다. 익스플로러는 frames를 지원했으나 Mozilla가 아니었기 때문에 정작 frames가 사용된 페이지가 보이지 않았다. MS는 IE가 frames를 지원한다는 것을 사람들이 알게 될 때까지 기다리지 못하고, Netscape를 가장해 자신을 Mozilla 호환 브라우저 ("Mozilla compatible") 라고 했다. 그리고 Mozilla/1.22(compatible; MSIE 2.0; Windows 95)라고 칭해서 frames가 사용된 페이지들을 보여주기 시작했다. MS는 행복했으나, 웹 마스터들은 혼란스러웠다.

MS는 IE를 윈도우와 함께 팔았고 Netscape보다 더 잘 만들었다. 그래서 첫 번째 브라우저 전쟁이 일어났고 마침내 Netscape가 졌다. MS는 좋아했다. 하지만 Netscape는 Mozilla로 다시 태어났고 Gecko를 만들었다. 그리고 자신을 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826이라고 칭했다. Gecko는 렌더링 엔진이었으며 잘 동작했다. Mozilla는 Firefox가 되었으며 자신을 Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0라 칭했고, Firefox는 아주 잘 동작했다. Gecko는 퍼져 나가기 시작했다. 다른 브라우저들는 Gecko의 코드를 써서 다시 만들어졌으며 그중 어떤 것은 Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.2) Gecko/20040825 Camino/0.8.1라고 불렸고, 또 다른 것은 Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.8) Gecko/20071008 SeaMonkey/1.0라고 불렸다. 둘 다 Mozilla인 척했고, Gecko 엔진으로 동작했다.

Gecko는 좋았고 IE는 좋지 못했다. 그래서 user-agent sniffing이 다시 생겨났다. Gecko는 좋은 코드로 짜였지만, 다른 것은 그러지 못했다. Konqueror를 쓰고 있는 Linux 덕들은 더 슬펐다. Konqueror의 엔진은 KHTML 이었고 KHTML는 Gecko만큼 좋았지만, Gecko가 아니었다. 그래서 좋은 페이지들을 보여줄 수 없었다. 그래서 Konquerer는 좋은 페이지들을 보여주기 위해 Gecko와 비슷한 ("like Gecko") 체를 했다. 그리고 자신을 Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)라고 하여 혼란은 더욱 가중되었다.

그리고 Opera가 "우리는 우리의 사용자가 우리가 가장해야하는 브라우저를 결정할 수 있도록 해야 한다."라고 발표했다. 그리고 메뉴를 만들어서 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.51Mozilla/5.0 (Windows NT 6.0; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51 또는 Opera/9.51 (Windows NT5.1; U; en) 중에 하나로 불릴 수 있도록 유저들이 선택할 수 있게 했다.

애플은 KHTML 을 이용해서 Safari를 만들었다. 그 과정에서 많은 기능을 추가했고 프로젝트를 'fork'했다. 이것은 Webkit 엔진으로 불렸지만 KHTML에 최적화된 페이지들을 받아보고 싶었다. 그래서 Safari는 자신을 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5라고 불렀고 상황은 점점 더 악화하였다.

MS는 Firefox가 매우 두려웠다. 그래서 IE는 자신을 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)라 부르며 귀환했다. IE는 좋은 코드로 쓰였지만 오직 웹 마스터가 잘 사용할 경우에만 자연스레 동작했다.

구글은 Chrome을 만들었고 Chrome은 Webkit을 사용했다. Chrome은 Safari와 비슷했고 Safari에 최적화된 페이지를 받아 보기 원했으며 그래서 Safari인 척을 했다. 기어이 Chrome은 Webkit을 사용했고 Safari인 척을 했으며, Webkit은 KHTML인 척을 했고 KHTML 은 Gecko 흉내를 냈다. 모든 브라우저는 Mozilla인 척을 했고, 그래서 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라고 불렀다. 그래서 user agent string 값은 아주 복잡하고 거의 쓸모가 없다. 모든 브라우저가 다른 브라우저인 척 행세하고, 매우 혼란스럽다.


'E > D' 카테고리의 다른 글

Chronostasis  (0) 2012.02.13
현고학생부군신위  (0) 2011.11.18
Firefox  (0) 2011.10.26
,
TOTAL 3.141592653589 TODAY 2.718281845904