webbrowser可以使用吗(Webbrowser历史著名千年虫)

曾几何时,计算机领域曾发生过著名的“千年虫”问题,下面我们就来聊聊关于webbrowser可以使用吗?接下来我们就一起去了解一下吧!

webbrowser可以使用吗(Webbrowser历史著名千年虫)

webbrowser可以使用吗

曾几何时,计算机领域曾发生过著名的“千年虫”问题。

计算机2000年的“千年虫”问题,也叫“电脑千禧年千年虫问题”或“千年危机”。缩写为“Y2K“千年虫”不是病毒、也不是什么神奇生物,它只是计算机系统由于时间紊乱产生的一种 Bug:上世纪的计算机系统人员为了节省昂贵的存储空间,其中的年份只使用两位十进制数来表示,因此当系统进行(或涉及到)跨世纪的日期处理运算时(如多个日期之间的计算或比较等),就会出现错误的结果,进而引发各种各样的系统功能紊乱甚至崩溃,所以等到 2000 年时,计算机无法识别这个“00”是 1900 年还是 2000 年,由此引发全球大范围系统功能紊乱甚至崩溃

难道以为这个杀伤力极强的 Bug 不会再轻易出现吗?不曾想在浏览器版本迭代中,也存在类似“千年虫”的问题。

一、版本号首次突破个位数,网站:“您的浏览器版本过低”

浏览器版本中的“千年虫”不是时间问题,而是版本号位数的突破,因此最初出现这一问题时,是浏览器版本号由个位数升级至“10”的时候。2009 年,Opera 浏览器首次更新至版本 10,就在用户高高兴兴升级至最新版本后,访问网站时却被提醒道:“您的浏览器版本过低,请升级…”彼时,许多用户第一反应:什么,难道已经有 Opera 11 了?搜了搜,没有啊!再去看看别的网站…嗯,倒是能访问,但为啥有些功能突然不支持了,网站布局也有些错位?

二、将 Opera 10 认定为 Opera 1

在那个时期,浏览器尚未发展很长时间,多数浏览器的版本号一直保持在个位数以内,而Opera 10 是第一个版本号达到两位数的浏览器。因此,相当多的浏览器嗅探脚本似乎并没有对这一变化做好准备,仍习惯于仅检测 User-Agent 字符串的第一个数字——也就是说,这些网站会错误地将 Opera 10 认定为 Opera 1,从而将 Opera 10 识别为不支持的浏览器,从而破坏服务器以及客户端脚本。

Opera 官方承认了 Opera 10 在一些网站上存在 Bug:在部分网站上,Flash 视频的位置处在预期高度的一半,因为 height 参数所依赖的浏览器嗅探脚本将 Opera 10 识别为 Opera 10 1,这就导致了该值不正确和错乱布局。这一问题很像当年的“千年虫”问题,因此在经过几个月对站点兼容性影响的仔细分析后,Opera 决定冻结字符串的第一部分“Opera/9.80”,并在最后添加版本号“Version/10.00”或“Version/11.00”等,以此在确保提供真实版本号的同时,避免因两位数版本号引发的相关问题。

在众多用户向 Opera 提出投诉后,Opera 官方给出了解释:这与 User-Agent 字符串有关,而 Opera 10 是第一个突破十位数的版本号。User-Agent,是 Http协议中的一部分,属于头域的组成部分,其中包括有关软件的信息,例如浏览器名称、版本号以及它使用的各种技术。当有人访问网站时,浏览器的 User-Agent 会与网页请求一并发送,便于网站检查访问者的浏览器版本由此提供不同的响应。

“根据之前浏览器版本的逻辑,我们在发布 Opera 10 alpha 版本时给了它一个 User-Agent 字符串:Opera/10.00 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.0。但很快我们就发现,很多为特定于版本提供不同内容和脚本而部署了浏览器嗅探功能的网站,似乎不能很好地消化 User-Agent 中的‘Opera/10.00’部分。”Opera 如此回应道。

在 Opera 官方 2009 年对此事的回应中,就曾预言过:“其他浏览器也要注意这个问题,像 IE 距离版本 10 只差两个版本(当时 IE 浏览器更新至 IE 8),将来可能也会

发生类似的问题。”

如 Opera 所料,三年后 Firefox 10 也遇到了相同问题。

三、梅开二度:Chrome、Firefox 版本即将破百

两位数的版本号问题这十几年来已完美解决,但与此同时各大浏览器也在快速发展,如今年 2 月,谷歌推出了 Chrome 98,随后 Mozilla 也发布了 Firefox 97,二者版

本号即将突破 100,那么历史会再度重演吗?

通过近来 Mozilla、谷歌消息显示:会,但可能不会太严重。

自去年 8 月起,Mozilla 就已对三位数版本号的“Firefox/100”User-Agent 字符串进行测试,查看其是否会导致网站出现问题,谷歌也紧随其后开始其 Chrome 100 的实验。

结果他们在测试中发现,果然有少数网站在解析浏览器三位数版本号的 User-Agent 字符串时出现错误,导致出现“网站声明不支持浏览器”、“影响网站部分用户界面”等问题,这些网站包括 HBO Go、Bethesda、Yahoo、Slack 及由 Duda 网站构建器所创建的网站。Mozilla 对此解释道:“在没有单一规范可遵循的情况下,不同的浏览器对 User-Agent 字符串和特定于站点的 User-Agent 解析具有不同的格式。有些解析库可能存在硬编码错误,没有考虑到三位主要版本号。”

同时,Mozilla 还补充道,这次的影响范围不会太严重:“当初浏览器升级至两位数版本号时,许多库都改进了解析逻辑,因此预计这次版本号达到三位数所导致的问题会较少。”

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页