从 Chrome 69 开始,Google 就在尝试将地址栏中的 https://
和 www
隐藏起来,虽然这一改动很快就被撤掉了,但是在 Chrome 76 开始,Google 再一次进行这一改动,直到 Chrome 79,彻底尘埃落定,无法再通过 chrome:https://flags
禁用掉。本文就来谈谈 Chrome 隐藏 URL 中 https 和 www 这件事。
TL; DR
我知道你们想看什么。你们只关心如何重新显示 https://
和 www
。所以我把解决方案放在文章的开头。
如果你的 Chrome 版本小于等于 76,在地址栏输入 chrome:https://flags/#omnibox-ui-hide-steady-state-url-trivial-subdomains
,定位到「Omnibox UI Hide Steady-State URL Trivial Subdomains」,禁用该选项〔选择 Disabled〕,重启 Chrome 即可。
如果你的 Chrome 版本小于等于 78,还需要在地址栏输入 chrome:https://flags/#omnibox-ui-hide-steady-state-url-scheme
,定位到「Omnibox UI Hide Steady-State URL Scheme」,禁用该选项〔选择 Disabled〕,重启 Chrome 即可。
如果你的 Chrome 版本大于等于 79,chrome:https://flags
中已经没有上述选项。你需要在 Chrome Web Store 安装一个名为「Suspicious Site Reporter」的插件〔截至本文写成,该插件最后于 2019 年 11 月 2 日更新〕。这个插件由 Google 提供,用户可以通过这个插件将可疑网址举报给 Google Safe Browsing。但是当你安装完这个插件后你会发现,地址栏中的 https://
和 www
又回来了。
如果你只是想找个解决方案,你现在可以关闭标签页离开了;如果你对「Suspicious Site Reporter」插件感兴趣,Chormium 在 GitHub 上 开源了这个插件的源码;如果你对相关的 URL 规范很感兴趣,欢迎读下去,你会发现 Chrome 这一改动绝非空穴来风。
当 Chrome 推出这一改动时,很多人都在批判 Google 弱化 URL 的概念、弱化 HTTPS 的重要性。但是如果看看 WHATWG 制定的 URL 规范,你会发现 Chrome 的改动完全不是异想天开。
WHATWG,或网页超文本应用技术工作小组,制定了大量现行的 Web 方面的标准,包括 URL 相关的规范。截至本文写成,URL 相关规范最后更新于 2019 年 11 月。让我们看看 WHATWG URL 规范的 章节 4.8.1 – Simplify non-human-readable or irrelevant components,即「简化非人类可读或不相关的组件」。
删除可能提供欺骗或干扰安全相关信息的组件:
- 浏览器可以只渲染对用户来说很重要的部分来区分 URL 的 Host 和 URL 的其他部分〔例如路径〕。浏览器也可以进一步简化 Host,以引起对「可被注册域名」的关注。 例如,浏览器可能会省略前导的 www 或 m 域标签以简化 Host,或者仅显示「可被注册的域名」以避免类似
https://examplecorp.attacker.com/
的欺骗攻击。 - 浏览器不应该渲染 URL 中的 Authentication 部分,因为这可能被用于欺骗攻击〔如
https://[email protected]/
〕 - 浏览器可以不渲染 URL 的
scheme
部分,转而使用人类可读的字符串〔如「不安全」〕、安全指示符图标或同时使用上述两者进行替代。
如果你看了 WHATWG 制定的 URL 规范,你就会发现,Chrome 并不是心血来潮就把 URL 里的 https
和 www
隐藏起来,而是 完完全全遵照了 URL 规范。
所以,不仅仅 Chrome,未来所有浏览器 都有可能 按照这一规范,隐藏 URL 中的 https://
、https://
、www.
或者 m.
。如果你对这一行为不满意,你应该 现在就向 WHATWG 小组提出异议。
那么那个插件是怎么工作的呢?「Suspicious Site Reporter」的插件 ID 是 jknemblkbdhdcpllfgbfekkdciegfboi
。如果你在 Chormium 的源码中搜索这个 ID,你会发现 Chrome 专门针对这个插件做了降级处理,安装了这个插件就不再隐藏 https://
和 www
而已。