跨不同网络的剪贴板同步
大多数剪贴板和文件分享工具做不到这件事,原因是它们靠在局域网里 喊一嗓子来找到彼此。广播出不了子网,所以用移动数据的手机在连着 家里 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 不要账号, 也跨平台,但它把文字当消息发过来,而不是放进你的剪贴板。第三条路是 浏览器里的剪贴板,也就是这一页接下来讲的东西。
不用账号,在任意两个网络之间同步
- 在第一台设备上打开剪贴板。它会生成一个短密钥。
- 在第二台设备上输入这个密钥,或者扫二维码。
- 在任意一台设备上复制点什么。
- 切到另一台粘贴。它已经在系统剪贴板里了。
取代设备发现的就是这个密钥。两台设备都朝外连到同一个中继服务器,索要 属于这个密钥的房间,于是它们找到了彼此,而谁都不需要知道对方在哪里。 家里 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 默认并不转发,所以要看具体是哪个工具。它还意味着 要在两台设备上都装好并配置软件,而这恰恰是大多数人想躲开的事。