十多亿网友即将打不开网页 只因为更新了波浏览器

十多亿网友即将打不开网页 只因为更新了波浏览器
2022年02月02日 06:56 新浪科技综合

  新酷产品第一时间免费试玩,还有众多优质达人分享独到生活经验,快来新浪众测,体验各领域最前沿、最有趣、最好玩的产品吧~!下载客户端还能获得专享福利哦!

  本文来自微博差评君  

  你想想,你吃着泡面、哼着歌、还在网上冲着浪,突然就发现浏览器用不了了,这可多难受啊。当然啦,这可不是差评君在瞎带节奏啊,因为这事还真有那么点可能会发生。

  因为全世界最流行浏览器之一的 Chrome,马上就要发布第100个版本了。而这次更新,很可能会引发一些 BUG,导致网页直接打不开。

  冲浪板要是坏了,这可让咱们怎么冲浪啊?

  Chrome 大伙们可再熟悉不过了,这款有内存吞噬者之称的浏览器,在这颗行星上有超过 20 亿的装机量。

  至少在编辑部,除了少数几个 Safari 用户外,Chrome 的覆盖率没有 9 成也有 8 成。而剩下的也大都是在用各种 chromium “套壳”浏览器。

  那么问题就来了,别人的软件更新不是内置个虚幻引擎,加些新功能,就是修复一些 BUG,让产品更加稳定。

  Chrome 你这个坐拥数十亿的大咖咋一更新,反而修复了 “ BUG 过少的 BUG ” 呢?

  这不是把用户做宝搞吗?

  其实啊,这锅还真怪不到谷歌的工程师身上,引发这一场 BUG 的,是一个名叫版本号的东西。

  因为在某些网站的眼里,版本号 100 竟然小于 40。

  接下来就请准备好薯片和可乐,差评君这就和大伙们讲讲,这道火锅都能做对的比大小题目背后、这个让大伙们可能上不了网的 BUG 背后,究竟发生了什么。

  简单地说,当你访问某某小网站时,网站是需要知道你用的是啥浏览器和啥版本的。

  一方面,网站就能向那些用最新版浏览器的用户展示新功能、新交互,反过来对那些“古董”浏览器提供适合它们的内容。

  就像 IE9 之前的 IE 浏览器不装插件的话,是不支持 SVG 功能的。而对如今的各大浏览器来说,SVG 早已经算是个平平无奇的玩意儿了。

  在另一方呢,出于网络安全的考虑,网站还能根据版本号,直接拒绝那些早就不更新的浏览器访问网站。

  总得来说,网站要知道 “来者是何人”,然后再决定就接不接客,并在接客之后看碟下菜。

  而这次 Chrome 浏览器即将带来的版本号为 100 的更新,就很可能让一部分网站认错客人,然后直接把用户拒之门外。

  就拿能差评君所用的 Chrome 浏览器为例,网站会通过检查以下的浏览器 UA( 用户代理字符串 )来查一波户口:

  Mozilla/5.0( Windows NT 10.0; Win64; x64 ) AppleWebKit/537.36 ( KHTML , like Gecko ) Chrome/97.0.4692.99 Safari/537.36 

  这里面的东西很多,我们要找的是 Chrome/97.0.4692.99 这一段。

  对于大部分的网站开发者来说,他们只需要关注紧接着Chrome/后的字符 “ 97 ”,其实就足够网站辨别浏览器身份,并根据版本看碟下菜了。

  而巧就巧在,一个国外小有名气,名叫 Duda 的网页设计工具包它更懒。

  因为它只读取 Chrome/背后的两个数字。。。

  所以在 Chrome 浏览器的版本号升到 100 之后,在访问那些用 Duda 开发的网站时,认字只认一半的它们会以为你的版本号是 10。

  更搞人心态的是,Duda 还会自动屏蔽版本号低于 40 的 Chrome 浏览器访问。。。

  所以说在它们的眼里 100 = 10 < 40,你的浏览器就这样被禁止访问了。

  虽然这一波无疑是 Duda 程序员的锅,但是在某种程度上,Chrome 的程序员们其实也还是有那么一捏捏责任的。

  而错就错在 Chrome 的程序员们太能爆肝了,从而导致 Chrome 的更新实在太勤快了。

  这么说吧,今年已经 13 岁的 Chrome 在早期可是 12 周才更新一次,后来加快到了 6 周一次,到后面更是到了 4 周更新一次。

  就这样,Chrome 的版本号便迅速疯涨,到今年的三月份也即将迎来第 100 个版本。

  所以说 Chrome 的工程师要是多摸点鱼,多摆点烂,这个 BUG 就不会这么早出现。

  分完锅,但问题总要解决吧。

  早就发现可能会出现 BUG 的谷歌,在去年就提供了个测试 flag。

  大伙们只要在浏览器中输入 chrome : //flags 然后输入并打开 #force-major-version-to-100 就能让网站打破两位数的魔咒,强制显示版本号为 100 了。

  而老外的性情似乎也是调和折中的,因为还有网友提出了另外中庸的解决办法。

  那就是让谷歌的版本永远停在 99,之后的更新变后面的小数点就可以了。

  只不过,这些人再怎么出谋划策也都是 “皇上不急太监急”,要知道古话说的好:解铃还须系铃人啊!

  好在真正的罪魁祸首 Duda 在不久发布了公告,表示已经更新了代码,并解决了这个问题。

  而在谷歌反馈 BUG 的网站上,这个问题也已经被标注为已修复( Fixed )。

  而在 Chrome、FireFox 这些浏览器的版本号真正到达 100 之后,还有多少的类似 Duda 的 BUG 没被发现,咱们就不得而知了。

  只能说这个浏览器界的“千年虫”问题,只是暂时得到了解决。

  另外,记性比较好的差友应该还记得在今年年初,微软公司也出过类似的千年虫问题。

  它让微软员工们的年都没跨好。

  这个 BUG 的大概剧情是在今年的 1 月 1 日当天,不少使用微软 Exchange 的公司发现邮箱居然发不出去了。

  背后的原因其实也相当简单,那就是微软用了一种名叫 “ yymmddhhmm ” (年年月月日日时时分分)的符号变量( int32 )来存储时间。

  而有符号的 int32 只能存储 -2147483648 到 2147483648 的数据,也就是 2 的 32 次方那么多个。

  原本在上世纪是为了节省存储空间的设定,在如今却成为了 BUG。因为 2022 年的后两位 22 带入到 “ yymmddhhmm ” 中,直接就超过 int32 的取值范围。。。

  好在微软攻城狮的加班加点之下,相关的问题已经得到了解决,连夜捉虫或许就是他们的新年礼物吧。

  总得来说呢,在科技互联网领域其实一直都存在类似的祖传代码存在,或是为了兼容,或许是为了节省时间不重复造轮子,那些具有时代局限性的代码,还有代码中那些千年万年的 BUG,也就一代又一代地传了下来。

  而大伙们也把这些又臭 BUG 又多的代码称为 “ 屎山 ”。

  所以啊,类似于浏览器版本号、日期存储的 BUG 并不是第一次出现,也肯定不会是最后一次。

  最后呢,大伙们可以再等待一波即将到来的 2038 年问题。

  因为那些使用 POSIX 时间的 32 位程序,它们的计时方式是用秒来表示的。其中格林尼治时间 1970 年的 1 月 1 日 0 时 0 分 0 秒为起点,第 2147483648 秒为上限。

  而第 2147483648 秒的时间正好是 2038 年 1 月 19 日的凌晨 3 点 14 分 07 秒,而到过了这那一秒,应该有又不少的设备会有 BUG 了。

  当然,到时候应该不会还有 32 位的设备存在了吧,或许,没了吧。

浏览器chrome
新浪科技公众号
新浪科技公众号

“掌”握科技鲜闻 (微信搜索techsina或扫描左侧二维码关注)

创事记

科学探索

科学大家

苹果汇

众测

专题

官方微博

新浪科技 新浪数码 新浪手机 科学探索 苹果汇 新浪众测

公众号

新浪科技

新浪科技为你带来最新鲜的科技资讯

苹果汇

苹果汇为你带来最新鲜的苹果产品新闻

新浪众测

新酷产品第一时间免费试玩

新浪探索

提供最新的科学家新闻,精彩的震撼图片