免费工具

404 Send

文件从你的浏览器直接进入对方的浏览器。它从不落到我们的服务器上——我们只转交一个描述连接的加密信封,好让两个浏览器找到彼此。文件、文件名、双方的地址,我们一样都看不到。

选好文件,把链接交出去——传输期间别关标签页。

可以开始发送
把文件拖到这里 或者

链接存活十分钟。传输是直接的——文件不会出现在我们的服务器上。

原理

普通的文件传输服务都是一个样:文件跑到别人的硬盘上,在那里躺着不知多久,过着自己的生活。这里不一样。发送方和接收方的浏览器通过 WebRTC 直接相连,文件在它们之间传送,我们的服务器只参与一步——转交描述连接的信封,好让双方找到彼此。

这个信封我们同样不读。里面有双方的 IP 地址,所以页面直接在你这边把它加密,密钥留在链接井号后面的那一段——按照 HTTP 的设计,这一段根本不会发给服务器。我们这边放着的是一串十分钟就过期的不透明字符,而我们没有它的密钥。

这里什么情况下不行

如果双方都处在对称 NAT 的网络后面——移动网络和严格的企业 Wi-Fi 通常如此——直连就建立不起来。让一方换个网络就能解决。这类连接通常借道的中继,我们故意不架:有了它文件就会经过我们,而这个工具的意义恰恰相反。你的网络拦了什么,可以用 旁边的工具检查.

其余的地方也是同一个原则

404 VPN 也是这么设计的:我们不保存访问日志、DNS 查询,也不保存流量内容。不是因为我们承诺,而是因为真要交,也没有什么可交。

原理 →

常见问题

guest@404vpn:~$ cat send-faq.md
[01] $ 在对方打开之前,文件放在哪?
> 哪儿也不放。它在你的硬盘上,只有对方打开链接并按下“接收”之后,传输才开始。所以标签页不能关:这不是上传到服务器,而是两个浏览器之间的直接连接,缺了任何一方都不行。
[02] $ 你们的服务器看到什么?
> 一串它读不懂的字符。对方的浏览器需要一份连接描述——SDP——里面有双方的 IP 地址。所以页面在你这边就把它加密(AES-GCM),并把密钥放进链接的 # 部分:按照 HTTP 的设计,地址的这一部分根本不会发给服务器。房间名是同一个秘密的哈希。我们是没有密钥,而不是承诺不用它。
[03] $ 能传多大的文件?
> 限制不在传输,而在接收方的内存:浏览器要把整个文件拼好才会提示保存。普通笔记本上几个 GB 没问题;老手机上是几百 MB。速度取两条线路中较慢的那一条,通常是发送方的上行。
[04] $ 页面写着“连接没有建立”。这是什么意思?
> 意思是双方都处在不允许直连的网络后面——移动网络和使用对称 NAT 的企业 Wi-Fi 常常如此。让一方换个网络通常就能解决:比如接收方从手机流量切到 Wi-Fi。我们故意不在中间架中继:有了中继文件就会经过我们,而这个工具的意义恰恰相反。
[05] $ 链接可能泄露。会被陌生人拿走文件吗?
> 谁先打开链接谁拿到。链接只能用一次,存活十分钟,但在这十分钟里它就是钥匙——用你信得过、足以传递文件本身的方式来传递它。传输结束前别关标签页:一关,链接就失去了任何意义。