与 Chrome 一样,Safari 也有不少扩展。你可以在 Safari 浏览器、Mac App Store 和开发者网站下载所需的扩展,而 少数派 此前也曾介绍过一些尚未上架 Mac App Store 的实用 Safari 扩展。不过在升级 macOS Mojave 后,你可能会发现,文中介绍的扩展已经无法继续使用。

这一问题源于与 macOS Mojave 一同发布的 Safari 12。新版的 Safari 不再支持未经苹果官方审核的扩展,并启用了全新的扩展 API。相比原有的 API,这一新的 API 减少了扩展可以访问的内容。这也就意味着,一些扩展即使通过了官方审核,也可能无法实现原有的功能。
不过,这也不意味着我们只能放弃这些扩展。借助本文中的方法,你可以继续像往常一样使用它们。
首先,我们需要定位到已安装的扩展。打开访达后,点击菜单栏中的「前往」,按住 ⌥option
后,选择「资源库」。

在打开的窗口中,依次选择「Safari – Extensions」。在这一文件夹中,将你希望使用的扩展拖到桌面。为了方便接下来的操作,你可以将它们存放在一个文件夹中。

完成这一步骤后,打开终端 App,输入 cd
。然后,将刚刚创建的文件夹拖到终端的窗口,按下回车键,即可让终端定位到目标位置。如果你在上一步中没有创建文件夹,也可以参考少数派之前的 文章 ,在访达窗口上显示当前路径,并将其输入至终端。

随后,在终端中输入 xar -xf 扩展的名称
,比如 xar -xf NoMoreiTunes.safariextz
,按下回车键。扩展所在的位置将产生一个与该扩展的名称相同的文件夹。你需要对每一个扩展重复上述的操作。

完成这一步骤后,打开 Safari,在「偏好设置 – 高级」中确认勾选了「在菜单栏中显示『开发』菜单」一项。

然后,依次点击菜单栏中的「开发 – 显示扩展构建器」。初次打开时,系统会弹窗要求确认,点击「继续」即可。

在打开的扩展构建器窗口中,点击左下角的「+」,选择「添加扩展」。选中并添加由终端生成的、以扩展名命名的文件夹即可。

添加完毕后,点击「运行」,输入密码,就完成了这一扩展的安装。之后,你就可以在 Safari 的偏好设置中正常地启用该扩展。

不过,这一解决方案也并非完美。首先,未经苹果审核的扩展可能存在着安全风险。因此,建议你仅通过这一方式恢复你已经长期使用、可以信赖的扩展,而不是用来继续安装新的未审核扩展。此外,这只是一个临时性的方法,究竟能够有效多久还是未知数。而且,每次系统升级后你都可能需要重新进行上述操作。
🔗 参考文章:《Give new life to old extensions in Safari 12》