从Arc迁移到Safari

写在开头

我曾经常常挂在嘴边的名言是:xx才用Safari你不要用Safari了,换个浏览器就没这个问题了,现在由于一些原因,我也开始成为使用Safari的一员。本文将记录我从Arc迁移到Safari的原因与过程。

为什么要迁移到Safari

最近学校在放圣诞假,我躺在家里最喜欢的一件事情就是葛优躺在床上。但是我家里的布局有一个非常大的问题,就是我床边上没有插座,导致我的“待机”时长就不是很长,常常需要在MacBook,iPad,iPhone之间切换,经常打断我的思绪。但是我非常奇怪,为什么网上一直说MacBook的续航可以达到5-6个小时,我的MacBook只能支撑3小时左右。于是我从我运行的软件开始排查,通过活动监视器内的能耗模块发现,以下应用位居榜首。

  • Arc
  • 飞书
  • 哔哩哔哩
  • Visual Studio Code
  • 钉钉

不知屏幕前的你读到这里有什么发现,没错,他们都是Electron或浏览器套壳应用。这些浏览器们虽然长得不一样,但是本质上都是Chromium内核,其中Arc和哔哩哔哩的能耗更是“断崖式领先”。于是我决定擒贼先擒王,先从Arc开始。

那么在决定了斩首对象之后,就要考虑他的替代品。市面上的浏览器目前可以简单地归类为3类:Chromium, Firefox,Safari。Chromium的巨额耗电以及Google Chrome的丑陋令我望而却步。其次Firefox也面临网站兼容性问题,在我的工作流里,经常需要使用到Apple官方网站,如Apple School ManageriSAMS,前一个网站在使用Firefox打开的时候会直接提示不兼容,第二个网站在FireFox中的排版有显著问题。最后就是Safari,Safari是Apple自家的浏览器,可以轻松的享受各种由Apple全家桶带来的生态体验,而且在macOS上的能耗也是最好的。于是我决定迁移到Safari。

迁移过程

迁移书签

众所周知,在Arc中,书签并不是书签,而是保存在不同Space中的Tab,他独特的展示方式自然不能通过常规的方案导出。因此在探索一一圈之后的找到了如下仓库

ivnvxd/arc-export - GitHubhttps://github.com/ivnvxd/arc-export

可以很轻松的将Arc中的书签导出为HTML文件,然后在Safari中导入即可。

迁移插件

我原先在Arc中使用的插件如下,这里不得不感叹Apple让用户自适应的能力。在我的一翻挑挑拣拣之后,只留下了三个插件:AdGuard1PasswordTampermonkey。其中1Password会时不时的要求重新登录,此时直接关闭弹窗即可,稍后会自动修复。本来想带着BewlyBewly一起迁移,但是发现其官方作者没有签名Safari版本,见此Issue因此只能作罢。

插件名称 插件功能 官方开发 替代品
AdGuard Browser Assistant 广告拦截,配合macOS上客户端工作
1Password - Password Manager 密码管理器,多端同步
BewlyBewly 哔哩哔哩助手 ⚠️ Safari版本无签名
Free Download Manager 下载管理器 Safari自带下载
Grammarly 语法检查
Selenium IDE 自动化开发工具
User-Agent Switcher UA切换 Safari自带
ModHeader Header修改
Tampermonkey 脚本管理器 ✅ 付费$2.99

遇到的问题

  1. 部分网站渲染错误,内容显示错误

在调查问题的时候发现,大部分问题的原因在于Safari浏览器自带的Content Blocker,这个功能原本是用来阻止网页跟踪器并屏蔽部分广告,但是似乎需要保存在jsdeliver上的JavaScript脚本也会被错误的拦截,可以在以下位置关闭这个选项。

  1. 部分file://协议的链接无法打开

大部分提示Operation not permitted NSPOSIXErrorDomain,这个问题在直接访问微信下载的时候出现,因为尝试访问Container内的内容,我的解决方案是直接授予Safari完全磁盘访问权限。虽然这个可能不太安全,但是我认为是比较简单的解决方案。如果你有更好的解决方案,欢迎在评论区留言。

  1. 显示错误代码

大家在使用Chrome的时候可能会遇到一些错误代码,如ERR_CONNECTION_REFUSEDERR_CONNECTION_TIMED_OUTERR_CONNECTION_RESET等,这些错误代码在Safari中确实只有一个孤零零的网络错误,导致我时常无法判断网页为何无法访问。我的解决方案是,使用Surge的报错页面,这样可以直接看到详细的错误信息。但是这种方案可能在某些已经下发HSTS策略的网站上不起作用。

  1. 某些我自行部署的要求mTLS的网站无法正确呼出证书请求

首先关于什么是mTLS,大家可以查看这篇Cloudflare的文章,这个问题目前无解,我选择继续滚回Arc使用。

结语

以上就是我目前从Arc迁移到Safari的过程,虽然在迁移过程中遇到了一些问题,但是我认为Safari的优势还是远远大于劣势的。如果后续我对上述问题有了更好的解决方案或者发现了更多的问题,我会在这篇文章中更新。