本文发自 http://www.binss.me/blog/safari-use-chrome-extensions/,转载请注明出处。

作为苹果全家桶用户,在 MacOS 上都是使用 Safari 作为浏览器。但 Safari 的插件又少又难用,很多还要商店购买。一日偶然看到一个文档: https://developer.apple.com/documentation/safariservices/safari_web_extensions/converting_a_web_extension_for_safari 介绍了如何将 Chrome 插件转换成 Safari 。于是我开始了折腾。

流程

商店下载 Xcode ,以得到 /Applications/Xcode.app/Contents/Developer/usr/bin/safari-web-extension-converter 工具。

对插件源代码目录执行以下命令:

xcrun /Applications/Xcode.app/Contents/Developer/usr/bin/safari-web-extension-converter /Users/binss/Downloads/SponsorBlock

会自动创建 xcode 工程并打开。修改项目的 Code Signing Identity 为 Mac Developer ,Development 为你自己的账户,如果没有账户,需要在 Preferences - Accounts 添加,登陆自己的 appleid 。

目标选择 MacOS,点击构建:

成功后会有 extension app 弹出,直接点击 Quit and Open Safari Extensions Preferences :

就会发现已经添加到 Safari 的插件列表中了

即便如此,插件功能不一定是有效的,需要自行验证。比如我试过 bypass paywalls 和 TamperMonkey ,虽然装上了,但功能不可用。

让编译好的插件在其他 Mac 上运行

Xcode - Product - Show build folded in finder 会打开构建目录,将目录下的 Products/Debug/xxx.app 拷贝到其他机器上运行即可,记得需要在 Security & Privacy 里允许 app 运行。

获取插件源代码

对于一些开源插件,直接下载即可,比如 SponsorBlock 在 https://github.com/ajayyy/SponsorBlock release 直接有 Safari 版本的代码。对于找不到源代码的插件,可以通过 https://crxextractor.com 先根据 Chrome 商店链接得到 crx,再根据 crx 解出源代码。