# 文本与文件分享 — 从你的浏览器直达对方浏览器，不上传

分享只活在这个打开的标签页里。读的人从你的浏览器直接取走加密内容，关掉标签页就结束——任何服务器上都不留一点东西。

> 把文本或文件经由直连加密通道从一个浏览器送到另一个。链接名说得出口，边打字边实时同步，逐个批准读者——任何服务器上永远不存任何东西。免费，无需注册。

这是一个浏览器交互工具，地址是 https://abox.tools/zh/share-text/。文件在运行该浏览器的设备上处理。主动分享和可选联网功能都在页面上说明。下文是它的文字说明；使用工具请打开该地址。

## 你的分享的文本与文件**在浏览器里处理**，无须上传处理。

你在这里分享的内容经端到端加密的 WebRTC 通道，从你的浏览器去往每位读者的浏览器，不去任何别处。唯一牵涉的服务器在本页的 `Content-Security-Policy` 里注明，源码在仓库中。它引介浏览器，也列出可被发现的本地链接名。它不保留分享的文字或文件，内容也从不经过它。发现列表中的名称只在分享方连接期间存在。没有内容历史，没有账号。关闭这个标签页，分享在所有地方同时结束，包括读者仍开着的页面。

- ✗ 零存储
- ✗ 无账号
- ✓ 端到端加密
- ✓ 随标签页结束
- ✓ 开源

## 如何不向任何地方上传就分享文本与文件

1. **写下文本，或附上文件。** 编辑器就是分享本身：读者连上时里面是什么，他拿到的就是什么；此后每次修改都随着你的键入实时抵达已连接的读者。文件走同一条通道，每个最大 200 MB；读者看到列表，只下载自己要的那份——没人的带宽会耗在不想要的文件上。
2. **文本配得上排版，就打开 Markdown。** 就一个开关。标题、加粗、列表、代码、链接随着键入在编辑器旁边实时渲染；读者默认看到排好版的样子，还有一个切回原文的按钮。渲染器随页面一起送达并转义一切：无论谁写的，分享的文本都无法在读者的机器上变成脚本。
3. **给链接起名，或者就用建议。** 名称就是地址：`brave-otter-42` 可以隔着房间喊、在电话里念，也能从白板上抄。可被发现的本地分享会把名称列出来，所以敏感内容请保持私密开启。仅通过链接分享时，不易猜中的名称也有帮助。正在使用的名称会被拒绝，停止分享后便会重新空出来。
4. **决定放谁进来。** 私密是默认：每位读者都会被请自报家门——名字、暗号、任何你认得出的东西——你看到那条消息，旁边是“让他读”和“请回”两个按钮。自我介绍走直连通道，连引见服务器都不知道是谁敲的门。取消勾选就是公开分享，知道名字的谁都能读。
5. **开始分享，别关标签页。** 标签页就是服务器：它开着、醒着，分享就在；多一刻都没有。合上笔记本盖子同样会终结它。复制链接，或者干脆把名字说出去——读者在本页地址末尾敲上 `#name` 就行。局域网模式请复制链接：名称前会带上 `?local=1`。读者若使用了不同模式，必须先选择，才能按你的模式重试。
6. **在另一头：先同意，再敲门。** 打开链接的人会得知有人在分享，被告知直连会让双方看到彼此的网络地址，只有自己选择时才会连接。遇到私密分享，就自报家门等你放行。他拿到的内容随你的编辑实时变化，你关掉标签页就消失。

## 说得更细的版本

[如何不上传就在设备间分享文本与文件](https://abox.tools/zh/guides/share-text-between-devices/): 把文本或文件经直连加密通道从一个浏览器送到另一个——不用给自己发邮件，不留聊天记录，不需要账号，也没有哪台服务器留着副本。

## 工具箱里还有

- [二维码与条形码生成](https://abox.tools/zh/qr-barcode/): 打进去，就变成一个码。生成过程不往外送任何东西。
- [二维码与条形码识读](https://abox.tools/zh/qr-barcode-reader/): 把摄像头对准码，或者把拍下来的图丢进来。读这件事只发生在这里，别处都没有。
- [哈希与校验和](https://abox.tools/zh/hash-checksum/): 把下载来的文件和发布方公布的那串数字对一下，不用把它发给任何人。
- [密码与密码短语生成器](https://abox.tools/zh/password-generator/): 在这里生成，由你自己的浏览器生成，不发往任何地方。什么都不保存，也没有历史记录。

## 常见问题

### 有任何东西被上传到任何地方吗？

文字或文件不会上传。它们通过加密 WebRTC 通道从你的浏览器直达每位读者的浏览器。服务器只运送引介和已发布的本地链接名，从不运送内容。房间和发现条目随开放连接结束。Cloudflare 保留七天的连接日志包含元数据，从不包含内容。

### 那这个工具为什么还要和服务器说话，偏偏还是在这个网站上？

因为两个浏览器不能自己找到彼此。引见服务器把输入 `brave-otter-42` 的人和用这个名称分享的人对上，并运送连接协商。本页的 `Content-Security-Policy` 里注明了它，源码在同一个仓库。它还向使用同一公网 IPv4 地址或 IPv6 子网的浏览器列出已发布的本地链接名。它不持有内容，读不了加密直连通道。

### 那台服务器究竟能看到什么？

它能看到正在使用的链接名、分享方和读者的连接与离开时间、IP 地址和连接协商。发现列表按公网 IPv4 地址或 IPv6 子网，以及页面来源，把已发布的名称分组。它看不到文字、文件、文件名或大小、私密审批或自我介绍，这些都经过端到端加密的直连通道。Cloudflare 保留七天连接日志：链接名、地址和时间，从不包含内容。

### 我关掉标签页会发生什么？

分享在所有地方同时结束。链接一两秒内失效；页面还开着的读者会看到自己的副本消失，附一句分享已结束的提示。这不是向哪台服务器提交删除申请——根本不存在要删的服务器副本。标签页是分享存在过的唯一地方，关掉它就是全部的收尾。

### 读者能留下我分享的东西吗？

分享开着的时候，能——分享本来就是这么回事。读者可以复制文本、下载文件，拿走的就是他的了，和你用任何别的方式亲手交给他没有两样。结束分享保证的是未来：新来的人拿不到了，开着的页面也不再显示。没有工具能撤回已经送达的东西，这个页面不装作可以。

### 私密模式是什么？

就是默认。每位到来的读者都会得知分享是私密的，并被请自报家门；你看到那条消息——“是我，站会上的 Alice”——旁边是放行与请回的按钮，你拍板之前什么都不会发出。自我介绍走的是本就加密的直连通道，所以谁敲了门、你怎么决定，服务器永远不知道。分享前取消勾选，就是公开分享。

### 为什么读者会看到我的 IP 地址？

因为连接是货真价实的直连，而直连跑在两个地址之间：每一端必然知道另一端，跟打电话一个道理。读者在任何连接存在之前就被提醒，只有自己选择时才连接；在那之前，你甚至不知道他打开过链接。如果这笔交换不适合某次分享，替代方案是经服务器中转的服务——交换的方向正好相反。

### 文件能有多大，速度怎么样？

每个文件最大 200 MB，类型不限，速度取决于两条连接中较慢的那条。可用的本地连接按该网络的速度传输；VPN 和浏览器路由设置可能影响路径。读者逐个按需下载，所以大文件也要等真有人请求后才会传输。

### 离线能用吗？

老实说：一半。编辑器能——页面照常加载，草稿还在，Markdown 照常渲染，写和保存完全不需要网络。分享不能，也不可能：够到另一个人的浏览器本身就是网络行为，引见还得靠引见服务器。这是本站唯一一个任务在离线时根本不可能完成的工具，暗示别的说法都是不诚实。

### 要是我们连不上呢？

下面的中转选项只适用于普通连接模式。大多数浏览器对经引见后都能直连；少数不行，通常是有一头在移动运营商的共享地址网络里，或者躲在严苛的公司网后面。这个页面绝不会悄悄切到中转——那会不声不响地改变这个工具是什么——而是二十秒后明说直连没有建立，并向读者提供一条中转：由 Cloudflare 运行，在两个浏览器之间只转发加密后的字节，读不了内容，因为密钥从不离开两端。读者在自己的页面上、被告知中转能看到什么之后——两边的地址，直连本来也会看到——才亲自选它，那里同样什么都不存。你这一边什么都没变：你的浏览器仍然只发给那一位读者，就像对方用着 VPN 时一样。局域网模式从不提供中转。请检查两台设备是否使用同一 Wi-Fi 或以太网，以及访客网络隔离、防火墙或 VPN 是否阻止了连接。

### 谁都能分享任何东西，渲染 Markdown 还安全吗？

这个问题正是渲染器是本页源码里的八十行、而不是一个库的原因。任何标签产出之前，每个字符都先被转义；能产出的只有一组固定的无害标签；链接只认 `http`、`https` 和 `mailto`——`javascript:` 链接只会留成一行死文本。无论谁写的，分享的文本都无法在你的机器上变成脚本，而那八十行你自己就能读。

### 两个人能用同一个名字分享吗？

不能同时。每个名字只有一个活着的分享，由引见服务器强制执行：后来的会被拒绝，请他另选名字。分享一结束，名字立刻空出——这也意味着存下来的链接只和背后的分享一样新鲜：同一个名字，下周可能属于别人。把链接当成属于某个时刻的东西，而不是属于某个人的。

### 免费吗？要账号吗？

免费；没有账号，没有注册，也没有值得一提的限制——每次分享最多十六位读者同时在线。网站靠广告维持；广告拿不到这个页面分享的任何东西，而引见服务器恰恰因为什么都不存、几乎什么都不做，才轻轻松松待在免费套餐里。

### 能通过局域网分享文件吗？

能。开始前选择“局域网——不使用互联网中转”，把两台设备连到同一 Wi-Fi 或以太网，再把链接复制给读者。链接会带上模式；读者若使用了不同模式，必须明确选择后才能按分享方的模式重试。引介浏览器仍需要互联网。此模式不使用公共地址发现，也绝不切换到互联网中转。VPN 或浏览器网络策略可能改变路径或阻止连接；这个设置不能证明字节一直留在某栋建筑里。私密审批仍默认开启，每个文件的上限仍是 200 MB。一次分享最多可以附上 256 个文件。此模式默认开启可被发现：另一个浏览器打开起始页面，就能从这条连接的列表中选择你的名称。取消可被发现，只通过链接分享。在共享网络上请保持私密开启。

### 列表如何找到本地分享？

这个列表显示与你使用同一公网 IPv4 地址或 IPv6 子网的浏览器所分享的链接名。通常这意味着同一路由器；共享 VPN 或运营商共享地址可能把其他网络也包括进来。IPv4 与 IPv6 混用或不同路径也可能让身边的设备不出现在列表里。需要互联网。打开分享仍会在连接前征求同意，私密分享仍需要分享方批准。本地分享默认发布名称，取消可被发现即可只通过链接分享。选择名称会打开同意页面，绝不自动连接或绕过私密审批。目录只在分享方连接期间保留链接名，从不保留文字、文件名或文件内容。如果发现暂不可用，分享链接仍可使用。 列表只显示局域网模式的分享；此模式默认关闭，请在开始前选中。

## 这条隐私承诺怎么核实

- **内容只去往你的读者，不去任何别处。** 文本和文件走 WebRTC 数据通道：你的浏览器与每位读者的浏览器之间一条直连、DTLS 加密的连接。这条路上没有服务器。局域网模式使用浏览器自身的网络地址，不使用公共地址发现或互联网中转。VPN 或浏览器网络策略可能影响这些地址的路径，所以这不是关于某栋建筑的保证。普通模式下，无法直连的读者可以在自己的页面上选择加密中转，它只转发同样的密文，读不了内容。
- **引见服务器是什么，以及它能看到的一切。** 直连需要引介。这个起始页面会自动为可被发现的本地链接名建立一条通往引见服务器的 WebSocket；开始分享后会为分享本身再开一条。读者使用一条引介连接。服务器按链接名把读者和分享方对上，并转递几 KB 的连接协商。它不写入存储，房间和发现条目随开放连接结束。它能看到名称、连接时间、IP 地址和连接协商，看不到文字、文件、放行决定或私密介绍。目录只显示使用同一公网 IPv4 地址或 IPv6 子网的在线分享方所发布的名称。共享 VPN 或运营商共享地址可能包括其他网络；身边的设备若混用 IPv4 与 IPv6，或使用不同路径，也可能不出现在列表里。全部源码在仓库中。Cloudflare 保留七天连接日志：地址、链接名和时间，从不包含内容。
- **什么都不存，所以关标签页就是删除本身。** 分享只在你的标签页开着时存在。一关，新来的读者什么也找不到，正在读的人会看到自己的副本消失——不过别人之前复制或下载的东西归他，就像任何你亲手递出去的东西一样。你敲的草稿只放在你自己浏览器的存储里，好让下次还在，也只放在那里；勾上一次性，哪里都不放。
- **链接名是地址，私密模式是那把锁。** 知道或猜中名称的人能打开背后的分享。可被发现的本地分享会向使用同一公网 IPv4 地址或 IPv6 子网的其他浏览器显示名称，此时名称在这个群组内是公开的。敏感内容请保持私密开启。私密默认开启：每位读者通过加密直连通道介绍自己，你批准之前不会发送内容。
- **直连让两边看见彼此的地址。** 点对点就是这个意思，而读者在事情发生前就会知道：打开分享链接只是问引见服务器有没有人在分享；然后页面明说，连接会让双方看到彼此的 IP 地址，并等待一次点击。在那次点击之前，分享方连读者存在都不知道。
- **Google 加载了什么，又拿不到什么。** 广告和统计脚本来自 Google，捐赠按钮来自 Buy Me a Coffee。它们谁也拿不到文本、文件、名字和大小、谁连接过。例外是这个页面自己的地址：读者的链接里带着链接名，广告脚本会读取这个地址。想保密的分享，应该打开私密开关。碰到内容的每一行代码都由本源提供，并且都在仓库里。

**你可以自己核对。**上面这些不用你信。这个页面是仓库里的模板和配置生成出来的，构建脚本你能读，也能自己跑一遍，跑出来的结果就提交在 `dist` 分支上。拿实际发给你的内容，跟你自己从源码构建出来的结果对一遍就知道了： https://github.com/A-Box-of-Tools/website

最值得先读的几个文件：`config/site.toml` 里是 Content-Security-Policy，还有装着交换双方逻辑的 `src/main.js`——分享方的标签页和读者的标签页是同一个文件——以及 `src/markdown.js`：这个渲染器处理的是线路另一头传来的文本，所以在输出任何东西之前先转义一切。服务器的全部源码是同一仓库里的 `workers/rendezvous/worker.js`：每个链接名一个房间，除了打开的连接什么都不持有。额外的发现目录只保留开放连接上发布的链接名，从不保留文字或文件。
