在不同平台下同步 Safari 和 Firefox 的书签
在不同平台下同步 Safari 和 Firefox 的书签
2022年7月17日
目录
摘要
Safari 浏览器在 macOS、iOS、iPadOS 这些 Apple 生态内的操作系统下,由于其原生的设计和与系统紧密的结合,使用起来十分方便。然而对于某些像我一样的用户,虽然主力设备全是 Apple 生态圈内的产品,但是却不可避免的需要在某些场景下使用 Linux 和 Windows 等其他系统。可惜的是,Apple 并没有为这些平台开发 Safari 浏览器,所以 Safari 中的书签也无法同步到这些设备上,因此,在这些平台下我选择使用 Firefox 作为主力浏览器。虽然说可以在所有平台下都使用 Firefox 来进行网页浏览从而达成跨平台同步的目的,但是毕竟对于我这类用户,Apple 生态圈依然是主力,还是不愿牺牲大部分时间下的系统级的便利性,因此,需要找到一种方式灵活的同步 Safari 和 Firefox 之间的书签。
研究
第一步探索–Windows
如果除了 Apple 的设备以外,只会需要使用 Windows 系统(大部分用户应该就是这样),那么书签的同步就是十分简单的。虽然 Apple 并没有为 Windows 开发 Safari 浏览器,但是却在为 Windows 用户开发的 iCloud 客户端中,提供了书签同步的功能。要想达成 Safari 和 Firefox 之间同步书签的目的,只需要在 Microsoft Store 中下载安装 iCloud 客户端并登录,然后根据指引在 Firefox 中安装 iCloud 同步插件,并开启 iCloud 相关功能,即可同步该 Apple ID 下的 Safari 和该 Windows 系统中的 Firefox 之间的书签了。
第二步探索–Linux
在基于 Windows 系统中探索的经验下,我曾尝试使用同样的方式在 Linux 下为 Firefox 安装 iCloud 同步插件从而实现书签的同步,可惜的是,这个插件完全依赖于系统中安装的 iCloud 客户端,而这个客户端仅支持 Windows,所以这个方法在 Linux 中并不可行。
在此时,有一个新的思路,能否使用一个 Firefox 账户同步各个设备间的 Firefox 书签,然后在 macOS 中同时安装 Safari 和 Firefox,然后在设备内同步二者的数据呢?很遗憾,这个思路可行,但不完全可行。Safari 和 Firefox 都提供了导入来自对方书签的功能,但是都只能手动操作,完全违背了自动同步这个初衷,并且,如果是在 iPhone 或是 iPad 的 Safari 中添加了一个书签,但是此时 Mac 并未使用,该书签只能被同步到 iCloud 中,无法使用这个未开机或是休眠状态的 Mac 将其同步进 Firefox,因此,这个方案也不可行。
探索至此,有几点已经明确:
- Apple 设备之间的 Safari 永远可以无缝同步,且 iCloud 中永远持有最新副本。
- Windows 的 Firefox 可以在运行时依靠 iCloud 与 Safari 同步书签。
- 任意设备间都可以使用 Firefox 账户同步 Firefox 书签。
那么,就诞生了一个思路,在以上三条前提成立的情况下,Windows 中的 Firefox 拥有最强大的权限,其既可以与 iCloud 同步 Safari 的书签,也可以与其他设备同步 Firefox 的书签。很自然的,其可以成为一座桥梁,唯一的前提就是需要保持随时运行。在这样的情况下,任意来自 Apple 设备的 Safari 书签变动都会同步到这座桥,然后通过 Firefox 账户同步至其他设备的 Firefox,反之同理。因此,最终的解决方法如下:
在一台常开的 Windows 系统中安装 iCloud 客户端和 Firefox,并登录 iCloud 和 Firefox 账户,保持iCloud 和 Firefox 开启即可。由于我已经有一台装有 ESXi
虚拟化平台的服务器,我只需添加一个 Windows 虚拟机并完成上述配置即可,如果没有这样的设备,可以考虑通过阿里云或腾讯云等服务商购买一个低配置的 Windows 云主机,能联网挂机即可。
后续问题
理论上来讲,按照上述过程配置完,即可完美的将 Safari 中的书签和其他平台的 Firefox 同步,但在调试过程中,还有几个小问题需要解决。
Windows 休眠策略
最重要的一点就是,一定要在 Windows 电源管理中,关闭所有休眠选项,要让系统一直处于唤醒状态,保持 Firefox 处在前台活跃状态。如 Windows 进入锁屏,睡眠,休眠状态,同步都将被终止。
Firefox 保持活跃
虽然说保持 Firefox 在前台运行,同步就理应正常运行,但在实际情况下,有的时候在很长时间无操作的情况下,不知为何 Firefox 貌似会进入一种暂停状态,也不知道是 Windows 还是 Firefox 造成的。我的解决方案是安装了一个鼠标连点器(我选择的是鼠大侠鼠标连点器,免费的),然后将其设置为每 60 秒点击一次浏览器空白位置,强行让其保持唤醒。
Firefox 同步周期
根据官方文档,在 Firefox 的默认设置中,同步机制如下:
-
如果该 Firefox 账户只登录了一个设备,则同步功能只用于备份,每 24 小时(可更改)同步一次(此场景与我们的需求无关,我们必然不止需要登录一个设备)。 -
用户对书签进行任何主动变动(添加、删除、更改)都将立即触发一次同步。
-
如果在某一次同步中接收到了新的书签,则 90 秒(可更改)后自动触发下一次同步。
-
在用户处于活跃状态(正在浏览但并未对书签进行任何变动)时,每 10 分钟(可更改)自动同步一次。
-
在用户 5 分钟(可更改)未进行任何操作后,进入休眠状态。
-
休眠状态下,每 60 分钟(可更改)自动同步一次。
显然,在默认情况下,如果 Firefox 作为中转服务器,自动同步周期都过于漫长,我们可以手动更改加快同步频率,仅需降低活跃和休眠状态下的同步周期即可,方法如下:
- 在 Firefox 的地址栏中输入
about:config
并进入。 - 点击
接受风险并继续
- 在上方搜索栏输入
services.sync.scheduler.activeInterval
,并将值改为30
(单位:秒),即可使活跃状态下的同步周期降至 30 秒。 - 在上方搜索栏输入
services.sync.scheduler.idleInterval
,并将值改为30
(单位:秒),即可使休眠状态下的同步周期降至 30 秒。 - 重新打开 Firefox,确认 iCloud 插件处于正常运行状态。
经过以上设置后, Firefox 服务器每 30 秒就会同步一次两边的数据,不建议将周期设置的太短,怕被当作异常行为。
享受便利吧~