Web浏览器是现代操作系统。谷歌的Chrome OS,一个独家运行Chrome浏览器的操作系统,现在是第二个最受欢迎的桌面操作系统。另外,电子和类似的跨平台框架的兴起意味着我们每天使用的许多应用程序(例如,Slack)实际上是伪装的浏览器应用程序。
浏览器的无处不在巩固了他们在消费者生产力和自我效能的关键作用。鉴于这一重要性,我想了解多年来浏览器可扩展性如何发展。因为我找不到完整的历史,我开始写自己。
免责声明#1:我将在许多细节上光泽,以使这篇文章保持为非技术。例如,我不会挖掘浏览器和渲染引擎之间的区别。
免责声明#2:如果我犯任何错误或省略任何您的感觉很重要,请在评论中发布。由于我没有个人对非英语国家的浏览器接触,因此这篇文章中的缺点仍然存在差距。
一开始,有时伯纳尔 - 李的WorldWideWeb浏览器(1990)。但是,Marc Andreessen的Mosaic(1993)是第一个获得主流人气的浏览器,因为它易于安装,显示图形和提供客户支持。然后安德烈森然后继续推出Netscape,它将战斗Internet Explorer(1995年首次发布),以便在90年代后期的浏览器战争中的主导地位。浏览器WARS在Internet Explorer和Windows集成的整合中面临反垄断行动。
早期的Web仅支持静态内容。插件 - 浏览器中的动态内容的插件 - 本机可执行文件 - 为多媒体,企业应用程序和游戏打开了门。 Internet Explorer通过其ActiveX技术支持插件,而其他浏览器支持NPAPI。
在消费者方面,您基本上无法浏览网页而不安装Flash(1996)和Java(1998)插件。
作为本机可执行文件,插件是一种慢性安全漏洞和不稳定性的源。尽管存在这些问题,但直到2014年通过HTML5标准和现代Web API,浏览器可以摆脱插件,而不会牺牲功能。
桌面浏览器在2015年开始丢弃对插件的支持,Chrome引领充电。在Mobile,iOS(2003)着名的是从一开始就没有提供闪光。
由于Flash内容的ubiquity,Flash插件已是最长的阻滞。例如,Firefox拒绝在今年年初拒绝对闪存的支持。
在市场上具有多种浏览器和现场渲染的不兼容,Tim Berners-Lee于1994年创立了万维网联盟(W3C),开发跨浏览器标准。
这些标准之一是1996年的层叠风格表(CSS)规范。 CSS定义了对“样式表”的支持,该表告诉浏览器如何在页面上进行样式的内容。样式表可以来自三个不同的来源:
1998年,Opera 3.5是第一个支持CSS的浏览器,并包括对用户样式表的支持。 Internet Explorer遵循1999年的Internet Explorer 4的发布。
2005年,随着杰森巴纳比的时尚延期的推出,消费者造型开始转移到风格的经理浏览器扩展。与用户样式表相比,风格管理器提供更灵活的控件,共享功能和易用性。
Chrome在2014年对用户样式表的支持。Firefox仍然通过UserContent.css样式表支持,但自2019年以来,尚未从主界面访问用户样式表。
纠正6/5/2021:Safari仍然支持从首选项的“高级”选项卡中的用户样式表。这是Safari自定义样式表的历史
Brendan Eich和Netscape于1995年向世界推出了JavaScript .Javascript是一个编程语言,网站作者可以包括创建动态内容和交互式用户界面。
JavaScript还为浏览器定制开辟了新的大道:书签。 Bookmarklets是包含在javascript的书签中的javascript的小片段:单击书签时,它会在页面上下文中运行JavaScript,可能从另一个源加载更多JavaScript。
例如,这是一个书签,它在Internet归档的Layback机器中打开了一个页面的历史版本:
Bookmarklet于2004年击中了一条道路凹凸,并引入了W3C的内容安全策略(CSP)规范。旨在保护站点免受恶意用户内容和第三方代码,CSP使Site Suseer启用了锁定代码和网络请求。
但是,希望主要可扩展性,CSP规范指定书签和其他可扩展性功能应免除CSP限制:
在资源上强制执行的策略不应干扰用户代理功能,如附件,扩展或书签。这些特征通常在页面作者中推出用户的优先级,如[HTML-Design]中的支持。
在实践中,事情是不同的。在Firefox中,Bookmarklets受到网站的CSP,防止书签在许多页面上运行。在Chrome中,Bookmarklet不受CSP的约束。但是,默认情况下,Chrome仅在新标签页上显示书签;用户必须在网页上配置书签栏。
浏览器可扩展性的现代方法,浏览器扩展,1999年互联网资源管理器在Internet Explorer中添加了支持4.新扩展支持“资源管理器栏”(即工具栏)并添加到上下文菜单的条目。
浏览器扩展,也有时称为加载项,支持修改浏览器界面,修改网页的用户界面,并在网页上下文中运行JavaScript。这些天,浏览器扩展支持各种用例,范围从写作辅助和网站优惠券到adblocking。
Firefox于2004年通过扩展支持推出,其他主流浏览器在2009 - 2010年诉讼。早在2005年,“Mozilla更新”页面熙熙攘攘的活动:
主要浏览器供应商每个都维护自己的浏览器扩展市场,其中扩展经过安全审查和更新,可以自动分发给用户。
不幸的是,因为浏览器扩展可以访问用户的浏览活动,所以它们是恶意演员的有吸引力的攻击矢量。
抑制滥用,铬铬,特别是已经采取了措施限制浏览器扩展的分布方式。 2014年,Chrome引入了限制,以便Windows用户只能从Chrome Web Store安装扩展名。
Mozilla和Firefox的用户界面是使用名为XUL的语言实现的,XML用户界面语言。 XUL定义了一瞬间呈现的用户界面。
在Firefox中,浏览器扩展可以修改XUL,从而允许它们更改用户界面的核心部分(例如,添加工具栏)。
Firefox于2017年停止了XUL,因为它导致漏洞和不稳定性,当多个扩展修改UX时。技术用户仍然可以通过其UserChrome.css设置文件对Firefox接口进行有限的修改。
Netscape浏览器于1998年开放,并用于构建Mozilla浏览器套件。 Mozilla Firefox是第一个主流开源浏览器,随后于2004年发布。
2008年,谷歌发布了铬开源浏览器项目。 Google使用Chromium作为其Chrome Web浏览器的基础。通过开源,开发人员可以“叉”浏览器,修改它,并分发自己的自定义版本。
出现了很多替代浏览器,其中许多又没有转移到时间的考验。一些显着的例子包括:
Flock(2005-2011):浏览器,具有集成的社交媒体功能。最初基于Firefox及以后的基于铬。由Zynga,社交游戏公司购买。
Tor Browser Bundle(2008-):Firefox分布,用于使用Tor网络进行私人浏览。
勇敢(2016-):Brendan Eich's(JavaScript名人)铬浏览器,通过基本关注令牌加密货管与内容创建者收入共享。
Microsoft Edge(2019-):在内部浏览器(也称为Edge)失败后,微软的基于铬的浏览器。
用户填充者是修改网页的小脚本。与浏览器扩展一样,它们通常用JavaScript编写。但是,用户脚本在重量较轻,因为您无需打包它们并通过浏览器的Web Store分发它们。相反,要运行和管理用户填充程序,您可以使用恰当地称为usercript管理器的浏览器扩展名。
UserScripts在书签中提供了许多优点:它们可以在页面上自动运行,不受长度限制,并且可以在网站的CSP之外运行。
First Userpical Manager Greasemonkey于2005年为Firefox发布。现在有几种可供选择的变化,包括Tampermonkey(2010)和PriveMomkey(2013)。这些变体都使用相同的Greasemonkey脚本。
2019年,Firefox在扩展中为用户填充者提供了正式支持,提供了额外的安全保障。 Chromium有一个单独的沙箱功能来分离运行代码,但没有正式的用户脚本支持。但是,正如我稍后会稍后触摸的那样,结束是铬浏览器中的用户填充物。
Firefox在2017年放弃了基于XUL的扩展,通过和大模拟Chromium的API切换到Defacto标准WebExtensions API。
Firefox的转变意味着绝大多数浏览器扩展现在正在使用Chrome的清单版本2所定义的API,于2012年首次发布的方式(尽管从那以后介绍了额外的增量API功能)。
由于其繁荣的市场份额,Firefox还选择支持Chrome API命名空间,除了供应商 - 不可知的browserapi命名空间。在许多情况下,Chrome扩展可以移植到Firefox,没有代码修改。 Firefox还为开发人员提供了一个多填充,以使他们的供应商无话代码与Chrome兼容。
写入遗嘱游戏的扩展传统上涉及使用Apple的Xcode开发工具编写它们。从2020年开始以Safari 14开始,Safari还通过了WebExtensions API。
1月2021年1月,Chrome发布了WebExtensions API的争议情报3(v3)。 “清单”是指技术集成点和策略Chrome在审阅其Chrome Web Store的扩展时强制执行。
根据以前的浏览器API更改,表单V3的规定的目标是安全性,速度和可靠性。表明V3中引入的主要变更是:
Manifest V3在浏览器扩展社区中存在争议,因为它会破坏许多流行扩展的功能。
对于公众,最令人担忧的是,将不再支持流行的内容和adblockers(例如,泛酷源和隐私獾)。这些阻止者通过维护大规则集来阻止网络请求。幻灯片中不支持这种大型和动态的规则集。 (为了公平,为了响应愤怒,Chrome团队增加了每次延期规则的数量。)
此外,通过他们的定义,用户脚本管理器通过允许用户安装和运行远程JavaScript代码来工作。截至目前,甚至甚至用户粘贴的代码都不会被Chrome支持删除了对清单V2的支持(可能在2022)中的支持时。
自主流浏览器增加了对扩展的支持以来,开发人员社区建立了一个令人难以置信的扩展生态系统,使消费者控制他们的浏览体验:
上下文菜单管理器(? - ):添加上下文菜单项(例如,根据所选文本动态打开新的URL)。
Web Clippers(? - ):来自页面的剪辑信息;自定义剪辑和发送的地方。
尽管发布的扩展数量(Chrome Web Store有189K扩展),但仍有很多创新空间。特别地,使用浏览器扩展的No-Code + API +的进步的配对具有巨大的可能性增加消费者生产力和自我效能。
为了实现这一愿景,我创立了Pixiebrix。 在PixieBrix,我们正在为消费者和公司创建一个开源浏览器扩展,以定制他们的浏览体验,以适应他们的工作方式。 PixieBrix是否/低代码 - 您配置并组合“Bricks”添加缺少的功能,集成了没有API的站点,并自动化重复任务。 就个人而言,我对这个空间的兴趣激增非常兴奋。 我遇到的一个值得注意的初创公司是Insight浏览器,一个iOS浏览器,允许用户构建和共享简单的扩展。 在企业世界,Extension.dev是内部企业扩展的另一个低代码构建器(检查他们的全面“内部扩展是人们建造的?”页面)。 如果您有兴趣在此空间工作或投资,我很乐意收到您的来信。 想要跟随我们的旅程吗? 在Twitter上关注我们,明星我们的GitHub存储库,或订阅我们的时事通讯。