跨不同网络的剪贴板同步

大多数剪贴板和文件分享工具做不到这件事,原因是它们靠在局域网里 喊一嗓子来找到彼此。广播出不了子网,所以用移动数据的手机在连着 家里 Wi-Fi 的笔记本眼里就是不存在的,你改什么都没用。要跨网络同步, 你需要的是一个改为在中间某个已知地址碰头的工具 —— 基于浏览器的 剪贴板做的正是这件事。

同一个 Wi-Fi 这条限制是怎么来的

AirDrop、LocalSend、KDE Connect 和最早的 Snapdrop,底下的做法是一样的。 你打开它们的时候,每台设备会朝自己所在网段的每一个地址发一条发现消息 —— 视工具而定,可能是 mDNS、UDP 广播或者蓝牙 —— 然后等回复。谁答话,谁就 出现在列表里。

正是这个设计让它们不需要账号也不需要配置:没人需要被告知谁在哪里。 也正是这个设计让它们停在网络的边界上。路由器不会把广播流量在子网之间 转发,所以处于不同网络的两台设备根本听不见对方。这里没有什么可修的, 没有端口要开,也没有哪个设置被你漏掉 —— 这就是这套机制按设计在工作。

有三种常见情况会撞上它,而且哪一种都不是故障:

  • 手机用移动数据,笔记本连 Wi-Fi。哪怕两台设备贴在一起,它们也在不同的网络上。
  • 开启了客户端隔离的办公室或校园 Wi-Fi。设备在同一个网络里,但被刻意隔开,这在访客网络和企业网络上是一项安全措施。
  • 是真的分开 —— 家里和公司,或者两个不同的城市。

那什么才管用

另一条路是两台设备都朝外连到同一个已知地址,在那里被介绍给对方。谁都 不必找到谁,所以它们在同一个房间里还是在地球两端,没有任何区别。代价是 中间现在有个东西知道这两台在说话 —— 于是真正要紧的问题变成了 那个中间的东西能看见什么

剪贴板和传输工具的对比:能不能跨不同网络工作,设备之间怎么碰头, 以及内容会不会落到系统剪贴板上。
工具 跨网络 设备怎么碰头 系统剪贴板
RealtimeClipboard 可以 两边输入同一个短密钥 支持
PairDrop 可以 6 位配对码 文字是以消息形式到达的
Windows 剪贴板同步 可以 微软账号 支持,但只在 Windows 之间
苹果通用剪贴板 不行 蓝牙 + 接力,要在范围内 支持,但只在苹果设备之间
KDE Connect 不行 局域网发现 支持
LocalSend / Snapdrop 不行 局域网发现 不支持
AirDrop 不行 蓝牙 + 点对点 Wi-Fi 不支持

能跨网络的那三个,各自都要你拿点什么来换。Windows 剪贴板同步要求两台 机器都登录微软账号,而且只跟别的 Windows 电脑说话。PairDrop 不要账号, 也跨平台,但它把文字当消息发过来,而不是放进你的剪贴板。第三条路是 浏览器里的剪贴板,也就是这一页接下来讲的东西。

不用账号,在任意两个网络之间同步

  1. 在第一台设备上打开剪贴板。它会生成一个短密钥。
  2. 在第二台设备上输入这个密钥,或者扫二维码。
  3. 在任意一台设备上复制点什么。
  4. 切到另一台粘贴。它已经在系统剪贴板里了。

取代设备发现的就是这个密钥。两台设备都朝外连到同一个中继服务器,索要 属于这个密钥的房间,于是它们找到了彼此,而谁都不需要知道对方在哪里。 家里 Wi-Fi 对移动数据,笔记本对手机,公司对家里 —— 都是同一种情况。

中间那台服务器能看见什么

这一段值得说具体,因为"它要经过一台服务器"正是跨网络的真实代价,而这 一点通常被含糊带过。

文字在发送之前就已经在你的浏览器里用 AES-GCM 加密好了。中继 服务器是按 SHA-256(密钥) 而不是按密钥来寻址的,所以它能 把你的消息路由到正确的房间,却从来拿不到读懂它们所需的那个密钥。它不 往磁盘上留任何东西:消息只存在到被转发出去为止。文件完全绕开它,通过 WebRTC 在两个浏览器之间直接传输。

它确实能看到的是:某个房间哈希在某个时刻活跃过,以及那两条 连接的 IP 地址。它拿不到你的密钥、你的文字、你的文件名,也不知道你是谁。 那个房间哈希和加密密钥经过同样的 25 万次迭代拉伸,所以没法廉价地反推回 你的密钥 —— 威胁模型里有具体数字。 代码采用 MIT 许可证, 中继服务器是一个小到能一口气读完的 Python 服务 —— 如果你不想只听别人 怎么说,你可以自己跑一个,再把 应用指过去。

在依赖它之前值得知道的事

密钥就是密码
任何人知道了它,就能在会话开着的时候读到内容。请把它当密码对待。
自动读取需要 Chromium 内核
Firefox 和 Safari 可以发送和接收你粘贴进来的文字,但不能自己读剪贴板。
后台读取做不到
标签页在后台时,任何浏览器都不能读剪贴板。你切回这个标签页,它就会把你复制的内容取走。
文件上限 5 MB
更大的东西,专门的传输工具才是对的选择。

打开剪贴板

常见问题

我能在连着不同 Wi-Fi 的设备之间同步剪贴板吗?

能,但用依赖局域网发现的工具不行。AirDrop、LocalSend、KDE Connect 和 Snapdrop 都是靠在局域网里广播来找设备的,而广播过不了路由器。基于 浏览器的剪贴板换了一种做法:两台设备用一个共享密钥朝外连到同一个中继 服务器,于是它们各自在什么网络上就不重要了。

为什么我的手机用移动数据时看不到笔记本?

因为它们在两个不同的网络上。局域网发现只能到达同一个网段里的设备,而 用蜂窝网络的手机和连 Wi-Fi 的笔记本完全不在一个网段里,哪怕两台就并排 放着。把手机的 Wi-Fi 打开、连上同一个网络,那些工具就好了;除此之外, 就需要一个根本不依赖设备发现的工具。

剪贴板同步能在访客 Wi-Fi 或办公室 Wi-Fi 上用吗?

靠局域网发现的工具通常不行。访客网络和企业网络普遍开启了客户端隔离, 它会阻止同一个网络里的设备直接互相通信 —— 这是刻意为之的安全措施。 浏览器剪贴板不受影响,因为每台设备只是发起一个普通的对外 HTTPS 连接, 而不是去够另一台设备。

服务器能看到我复制了什么吗?

看不到。文字在发送前就在浏览器里加密好了,而且中继服务器是按你密钥的 哈希、而不是按密钥本身来寻址的,所以它能路由消息却解不开。它不向磁盘 写任何东西。文件根本不经过它 —— 它们通过 WebRTC 在两个浏览器之间直接 传输。

用 VPN 能让局域网工具跨网络工作吗?

有时候可以,而且比听上去麻烦。Tailscale 或 ZeroTier 这类组网 VPN 会把 两台设备放进同一个虚拟网络,这能让局域网发现重新可用 —— 但有些工具依赖 的广播流量,组网 VPN 默认并不转发,所以要看具体是哪个工具。它还意味着 要在两台设备上都装好并配置软件,而这恰恰是大多数人想躲开的事。