Ishannaik/warp

GitHub: Ishannaik/warp

一款基于 WebRTC 的浏览器端点对点加密文件传输应用,无需服务器中转即可在设备间直传任意大小文件。

Stars: 8 | Forks: 6


Warp # WARP ### 直传送达。 点对点文件传输,**绝不经过服务器**。选择一个文件,分享一个代码,你的数据就会通过加密的 WebRTC 通道**在设备之间直接传输** —— 无需上传,无需账号,没有大小限制,没有云存储。

⚡ warp.ishannaik.com  ·  工作原理  ·  问题

[![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/Ishannaik/warp/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-5360ff.svg)](./LICENSE) ![Built with WebRTC](https://img.shields.io/badge/WebRTC-P2P-5360ff) ![Cloudflare](https://img.shields.io/badge/Cloudflare-Pages%20%2B%20Workers-ef6a3d) ![Cost](https://img.shields.io/badge/cost-%240%20%C2%B7%20no%20card-1f9d55)
`peer-to-peer` · `end-to-end encrypted` · `no size cap` · `no account` · `multi-device` · `$0`
Warp — direct, encrypted transfer queue
## 有何不同 - 🔒 **默认端到端加密** —— 每次传输都在 WebRTC data channel 上使用 DTLS;密钥仅存在于两个浏览器中。你的 ISP、咖啡厅的 Wi-Fi 以及 Warp 本身看到的都只是密文。 - 🛰️ **路径中无服务器** —— 信令服务器只负责*介绍*两个 peer 认识,然后就退居幕后。它绝不会查看、存储或中继任何一个文件的字节。 - ⚡ **极速** —— 带有背压(backpressure)的 256 KB SCTP 数据块推动通道逼近你的真实链路速率。数 GB 的游戏和压缩包会**直接流式传输到磁盘**,而不是缓存在 RAM 中。 - 🌐 **真正的多设备** —— 房间是一个全连接网格(full mesh)。**同时将一个文件分发到所有设备**,或者反向发送。通道保持开启以支持更多传输。 - ✋ **由你掌控** —— 接收方拥有一个**预览 → 接收 → 托盘**的流程。没有任何东西会自动下载;你可以逐个文件或打包为 zip 选择要保存的内容。在传输过程中取消会**立即停止**(取消指令通过信令 socket 发送,会跳过字节队列)。 - 💸 **$0 且无需信用卡** —— 使用 Cloudflare 的免费层级 + 公共 STUN。全域没有任何付费中继,因此绝对不会产生任何费用。 ## 工作原理 Warp 由两个小部分组成: - **`web/`** —— 应用程序 + 着陆页(Vite + React 19 + TypeScript + Tailwind v4)。完全在浏览器中运行。 - **`server/`** —— 一个 **Cloudflare Worker + Durable Object** 负责执行 WebSocket **信令**。它代理连接握手并**在空闲时休眠**(因此在两次传输之间不会产生任何费用)。 ``` Browser A ──handshake──▶ signaling (introduce only) ◀──handshake── Browser B └────────────── encrypted WebRTC data channel · your files ──────────────┘ ``` 1. 你打开一个房间 —— 服务器会生成一个简短的代码。 2. 朋友通过代码(或扫描二维码)加入 —— 服务器会将你们介绍给对方。 3. 浏览器直接连接(通过 STUN 进行 NAT 发现),文件以**点对点、端到端加密**的方式流式传输。 **同一网络**上的设备也会自动发现彼此(通过公共 IP 进行分组,类似于 Snapdrop)。多个 peer 可以共享同一个房间 —— 形成一个网格,最多支持 `MAX_PEERS`。 ### 刻意未实现的目标 - **无 TURN 中继。** 如果两个 peer 都处于严格/对称 NAT 之后且无法打洞,Warp 会显示一个**真实的错误**,而不是悄悄付费中继你的数据。相同的 Wi-Fi 下总是可以正常工作;大多数网络通过 STUN 都能很好地连接。 - **无云存储。** 什么都不会被上传 —— 没有东西会泄露、过期或产生费用。 - **无付费基础设施。** 信令是一个免费的、可休眠的 Worker;STUN 是公共的;文件字节直接通过点对点传输。 ## 快速开始 ``` pnpm install pnpm dev:server # signaling (wrangler dev) on :8787 pnpm dev # web app on :5173 ``` ``` pnpm --filter @warp/web build # lint + typecheck + production build pnpm --filter @warp/server test # signaling e2e ``` ## 自托管 - **前端** → 任何静态托管服务。我们将 `web/` 部署到 **Cloudflare Pages**: cd web && wrangler pages deploy dist --project-name= - **信令** → 一个 **Cloudflare Worker + Durable Object** —— 在 Workers Free 计划中完全免费,无需信用卡,空闲时会休眠: pnpm --filter @warp/server run deploy 将前端的 `VITE_SIGNALING_URL` 指向你信令服务器的 `wss://` URL。 ## 架构与协议 有关信令协议,请参阅 [`server/README.md`](./server/README.md) —— 包括消息契约、房间生命周期和网格规则。 ## 品牌 Logo 素材位于 [`web/public/brand/`](./web/public/brand) —— 包含 SVG + PNG,提供了一个通用的强调色磁贴以及透明的明/暗主题图标。 ## 贡献 欢迎提交 PR —— 请参阅 [CONTRIBUTING.md](./CONTRIBUTING.md)。发现安全问题?请参阅 [SECURITY.md](./SECURITY.md)。 ## 许可证 [MIT](./LICENSE) © [Ishannaik](https://github.com/Ishannaik)
标签:P2P, WebRTC, 实时通信, 文件传输, 无服务器, 程序员工具, 端到端加密, 自动化攻击