互联网与文化webaim.org编辑精选
浏览器 User-Agent 字符串的历史
History of the browser user-agent string (2008)
2012 — 2022,它一次次回到首页
黑点是上首页(≥ 50 分)的那次投稿,空心点是没冲上去的投稿,点越大分数越高。
导读
这篇 2008 年的经典文章用戏谑的“创世纪”口吻,讲述浏览器 User-Agent 字符串如何从简单的标识演变成层层叠加的伪装:浏览器为了绕过按 UA 分发的网站检测,纷纷把自己伪装成 Netscape、IE、Firefox、Chrome、Safari,最终形成今天又长又荒谬的一串标识。
为什么经久不衰:它把一段技术史写成寓言,解释了为什么今天的 UA 字符串如此臃肿,也揭示了兼容性博弈如何让所有人陷入局部最优却整体糟糕的困境。
HN 评论精选
用续写寓言的方式补上 Edge 的伪装,延续文章的讽刺基调。
更妙的是……Chrome 表现好而 MSIE 不好,于是站长给 MSIE 发烂页面。微软不高兴,推出了 Edge。Edge 表现好,但微软担心站长会把它当 MSIE 对待,于是让 Edge 假装成 Chrome 来换取好页面:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0
antoncohen查看英文原文
It gets one better... And Chrome was good, and MSIE wasn't, so webmasters served bad pages to MSIE. Microsoft was not happy. So they created Edge. Edge was good, but Microsoft feared webmasters would treat it like MSIE. So Microsoft Edge pretended to be Chrome to get the good pages. Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0
借 Croquet 项目指出:更好的架构(面向对象而非文本)因路径依赖和网络效应而失败。
Alan Kay 早就预见了这一点:与其把一堆烂文本发给各渲染引擎各自解析,不如发送对象——每个对象都有 URL,用户直接与对象交互。他和 David A. Smith 等七人真的做出来了,有 2D 对象、有不同服务器上的对象互相交互的 3D 虚拟现实,大家都觉得很酷,但最终什么都没成,因为世界是路径依赖的,网络效应说了算。简言之:未来早已到来,只是无法与当下通信。
nabla9查看英文原文
And Alan Kay saw this coming from a mile away and said: "What a total stone age BS this is. We already did it better in the PARC". Instead of sending shitty text files to rendering engines to parse all their own way, we should send objects. Every object should have an URL and the users should interact with these objects. And he teamed with David A. Smith and six others and they made it happen... aand it had 2d objects and it had 3d virtual reality where objects from different servers interacted and everybody saw it was cool as hell, but nothing came out of it because the world is path dependent and network effects rule. http://wiki.c2.com/?OpenCroquet https://en.wikipedia.org/wiki/Croquet_Project https://www.youtube.com/watch?v=XMk9IGwuRmU TL;DR: Future was already here, but it could not communicate with the present.
指出这是各方局部最优导致集体困境的典型案例,出路在于被普遍遵守的标准。
有意思的是,每一步中每个参与者都做了局部最优的选择——站长想给用户可用的页面,新浏览器厂商想让用户拿到支持全部特性的页面。可最终却给所有人留下了一团乱麻。本可以怎么做才能得到好结果?大概是有统一制定并被遵守的标准,这样浏览器只需声明“我支持 HTML 1.3”。
Wehrdo查看英文原文
This is interesting, because at every step along the way, each actor took the locally optimal step -- webmasters wanted to serve up working pages to their users, and new browser vendors wanted their users to get pages with all the supported features. Yet, in the end, we end up with a mess for everybody. What could have been done differently to end up at a good solution? I guess having universally defined and complied with standards would have helped, so a browser could just say "I support HTML 1.3".
提出把 UA 拆成结构化虚拟头以兼顾可解析性和向后兼容。
UA 承担了两件事:描述设备(操作系统)和描述能力(浏览器、插件)。我讨厌它没有合理长度上限、开发者随意重载它的方式,解析极其困难。我希望把 UA 变成由其他头组成的虚拟头,比如 os: Windows、os-version: 7、client: Gecko、client-version: 16、plugins: [{'flash':11}]——信息相同但结构更清晰、类型明确,同时保留向后兼容。
buro9查看英文原文
The user-agent has two implied pieces of functionality: 1) Describe the device that the agent is coming from (operating system) 2) Describe the capabilities of the agent (this browser, those plugins) One of the things I loathe about the user agent header is the lack of reasonable maximum length, and the inconsistent way in which developers have overloaded the value. Parsing it is difficult (especially given that the length means there is a lot of scope for bad input). I would love to see user agent be a virtual header comprised of other headers. The other headers would not be mandatory, but as most browsers would provide them you could reasonably use them in most cases. These other headers may be things like: os: Windows os-version: 7 client: Gecko client-version: 16 plugins: [{'flash':11}] Basically... same info but more structure with known acceptable types for certain values. Headers taking uncompressed space it would also be helpful if shorthand names were accepted: c-v for client-version, etc. This is me thinking aloud, and perhaps it's an idea that has been thought of before and rejected... but by offering User-Agent as a virtual header that is comprised of all of the other headers you maintain some background compatibility whilst providing something easier to parse, use and trust for developers.
历次讨论
同类还值得读
如今电脑上几乎所有操作在感知上都比 1983 年更慢(2017)
Almost everything on computers is perceptually slower than it was in 1983 (2017)
2017 年的推文串认为,尽管计算机硬件比 1983 年快得多,日常操作的感知速度却常常更慢:启动、界面响应和网络应用被层层抽象、动画、后台检查与网络依赖拖累。
互联网与文化上首页 5 次 · 2017–2020twitter.com网站肥胖危机
The Website Obesity Crisis
Maciej Cegłowski(idlewords)的经典演讲文稿《网站肥胖症危机》,批评现代网页越来越臃肿:动辄数 MB 的 JavaScript、追踪脚本和广告,把本可以轻…
互联网与文化上首页 5 次 · 2016–2021idlewords.com编辑精选亚马逊那本标价 23,698,655.93 美元的苍蝇书
Amazon’s $23,698,655.93 book about flies
博文讲的是亚马逊上一本关于果蝇的二手书被标到 23,698,655.93 美元。
互联网与文化上首页 5 次 · 2011–2022michaeleisen.org最后的问题——艾萨克·阿西莫夫
The Last Question - Isaac Asimov
阿西莫夫最著名的短篇科幻小说《最后的问题》的在线全文。
互联网与文化上首页 5 次 · 2009–2019multivax.com编辑精选一场杀死 IE6 的阴谋
A Conspiracy to Kill IE6
博客是 YouTube 前工程师 Chris Zacharias 的回忆:他和同事秘密给 IE6 用户投放“请升级浏览器”横幅,绕过公司审批,并推动 Google 其他产品跟进。
互联网与文化上首页 4 次 · 2019–2025blog.chriszacharias.com