WebTorrent:浏览器与桌面端的流式种子客户端 #
WebTorrent 是什么? #
WebTorrent 是第一个能够在浏览器中直接运行的种子(Torrent)客户端,同时也提供面向 Mac、Windows 和 Linux 的桌面版本 WebTorrent Desktop。它完全使用 JavaScript 编写——也就是网页的语言——并在可能的情况下使用 WebRTC 进行点对点传输,因此在浏览器中使用时无需安装任何插件、扩展或本地程序。
它的核心价值在于"流式播放":无论是来自 Internet Archive 的视频、Creative Commons 的音乐,还是 Librivox 的有声书,你都可以不必等待完整下载就立即开始播放。对于普通用户,它是一个轻量、快速、免费的下载与在线播放工具;对于开发者,它是一套可在 Node.js 与浏览器中通用、可通过 npm install webtorrent 直接集成的开源 P2P 引擎,被用于从 CDN 加速到去中心化网站的各种场景。
WebTorrent 有哪些亮点特色? #
- 首个浏览器种子客户端:WebTorrent 是第一个真正跑在浏览器里的种子客户端,不需要浏览器插件、扩展或任何本地安装,打开网页即可加入 P2P 网络。
- WebRTC 真 P2P 传输:完全用 JavaScript 编写,使用 WebRTC 建立浏览器到浏览器的直连通道,形成一个分布式、去中心化的对等网络,让用户之间直接交换文件,砍掉中间服务器。
- 边下边播的流式体验:视频与音频可以在文件尚未下载完成时就开始播放,并且支持拖动进度条——WebTorrent 会按需从网络中动态抓取对应的分片,采用 sequential(顺序)分片选择策略优化播放体验。
- 下载即做种:下载一个种子时会自动开始做种(seeding),把文件回馈给其他节点,让整个网络随着参与者增多而更快、更健壮。
- 全平台桌面客户端:WebTorrent Desktop 面向 Mac、Windows 与 Linux 提供,官方将其描述为"快速、免费、非商业且开源"的流式种子客户端。
- 完整的 BitTorrent 协议能力:支持 DHT、Tracker、BEP14 本地服务发现(LSD)、BEP11 节点交换(PEX)、BEP19 Web Seeds、BEP29 uTP 传输、NAT-UPnP / NAT-PMP 端口映射、下载与上传限速、IP 黑名单等。
- 一致的双端 API:WebTorrent 在 Node.js 和浏览器环境中提供相同的 API,只需一行
npm install webtorrent即可集成,并兼容 browserify、webpack 等打包工具。 - 繁荣的开源生态:基于 WebTorrent 已经涌现出 Wormhole(私密文件分享)、Instant.io(在线流式传输)、GitTorrent(去中心化 GitHub)、File.pizza、βTorrent、P2P Media Loader 等大量项目,官方持续收录在 FAQ 页面中。
免费下载 WebTorrent #
以下为官方提供的各平台安装包(版本 v0.24.0),点击链接即可下载:
| 文件名 | 描述 | 大小 | 下载 |
|---|---|---|---|
| WebTorrent-v0.24.0.dmg | macOS 安装包(磁盘映像) | 85.5 MB | 夸克网盘 |
| WebTorrentSetup-v0.24.0.exe | Windows 安装包 | 81.8 MB | 夸克网盘 |
| webtorrent-desktop_0.24.0_amd64.deb | Linux(Debian / Ubuntu)安装包 | 59.2 MB | 夸克网盘 |
WebTorrent 如何使用? #
一、使用 WebTorrent Desktop(桌面客户端) #
- 安装并启动:从上方下载对应平台的安装包,安装后打开 WebTorrent Desktop,主界面即为简洁的种子管理窗口。
- 添加种子:点击界面上的添加按钮,粘贴磁力链接(magnet URI)、拖入
.torrent文件,或直接把种子链接丢进窗口即可开始下载。 - 在线播放:在种子文件列表中点击可播放的音视频文件,WebTorrent 会立刻开始流式播放,无需等待 100% 下载完成;拖动进度条时会自动从网络中拉取所需分片。
- 发送文件给朋友:也可以用它把本地文件做种,生成磁力链接后发给朋友,对方用 WebTorrent 或任何兼容客户端即可接收。
- 管理做种与限速:下载完成的种子会自动做种;如有需要,可在设置中调整下载/上传限速或关闭做种。
二、在浏览器中使用(以 Instant.io 为例) #
- 打开官网推荐的在线演示站 Instant.io,无需安装任何东西。
- 将文件拖入页面,或粘贴一个磁力链接,即可开始点对点传输与流式播放。
- 页面会实时显示连接到的节点数、下载进度、剩余时间与传输速度等统计信息。
三、在项目中集成(开发者) #
npm install webtorrent
import WebTorrent from 'webtorrent'
const client = new WebTorrent()
client.add(torrentId, torrent => {
const file = torrent.files.find(f => f.name.endsWith('.mp4'))
file.streamTo(document.querySelector('video'))
})
注意:浏览器只能下载由 WebRTC 节点(web peers)做种的种子,可以使用 WebTorrent Desktop 或 Instant.io 来向 WebTorrent 网络做种。
WebTorrent 的常见问题? #
WebTorrent 需要安装浏览器插件吗? 不需要。WebTorrent 完全使用开放 Web 标准构建,在浏览器中运行时不需要任何插件、扩展或本地安装。前提是浏览器支持 WebRTC,目前 Chrome、Firefox、Opera、Safari 均可。
WebTorrent 客户端能和普通的 BitTorrent 客户端互相连接吗?
浏览器中的 WebTorrent 节点只能与同样支持 WebRTC 的"web peer"通信,无法直接与传统的 TCP/uTP 客户端互联。如果需要在 Node.js 中做种给浏览器节点下载,需要使用 webtorrent-hybrid,它可以同时作为 WebRTC 与传统 BitTorrent 的桥梁。
浏览器里下载没有速度、看不到节点怎么办? 最常见的原因是所下载的种子没有 WebRTC 做种者。浏览器端只能从 web peers 获取数据,建议改用 WebTorrent Desktop 或 Instant.io 对该种子做种,或直接使用桌面客户端下载。
音视频为什么无法在线播放?
流式播放依赖浏览器支持的编解码器。如果文件使用了浏览器不支持的编码格式,就只能下载完成后用本地播放器打开;此外,部分依赖 Service Worker 的流式方案需要通过 http(s) 环境访问页面,file:// 协议下会出现 Blob URL 失效的问题。
使用 VPN 时 WebRTC 会泄露真实 IP 吗? WebRTC 在建立直连时确实可能暴露本机 IP,这是 WebRTC 本身的特性而非 WebTorrent 独有。如果对匿名性有较高要求,建议在浏览器中禁用 WebRTC 或使用支持 WebRTC 防泄露的 VPN 配置。
WebTorrent 支持边下边播和实时直播吗? 支持。视频和音频可以在下载完成前开始播放,且支持拖动进度条按需取片。社区也已经基于 WebTorrent 实现了 Live-torrent 等实时流媒体方案,但官方文档中对直播能力没有做产品化的正式承诺。
WebTorrent 如何安装? #
Windows #
- 下载
WebTorrentSetup-v0.24.0.exe。 - 双击运行安装程序,按向导提示选择安装目录。
- 完成安装后,从开始菜单或桌面快捷方式启动 WebTorrent Desktop。
macOS #
- 下载
WebTorrent-v0.24.0.dmg。 - 双击打开磁盘映像,将 WebTorrent 图标拖入"应用程序"文件夹。
- 首次启动时若提示"来自未识别的开发者",可在"系统设置 → 隐私与安全性"中点击"仍要打开"。
Linux(Debian / Ubuntu) #
- 下载
webtorrent-desktop_0.24.0_amd64.deb。 - 在终端中执行安装命令:
sudo dpkg -i webtorrent-desktop_0.24.0_amd64.deb
# 若提示依赖缺失,可执行:
sudo apt-get install -f
- 安装完成后在应用菜单中启动,或终端执行
webtorrent-desktop。
在项目中使用(开发者安装方式) #
npm install webtorrent
若需要在 Node.js 中做种给浏览器节点,请改为安装 webtorrent-hybrid。
WebTorrent 如何卸载? #
Windows #
- 打开"控制面板 → 程序和功能"(或"设置 → 应用 → 已安装的应用")。
- 找到 WebTorrent,点击"卸载"并按照提示完成操作。
- 如需彻底清理,可手动删除
%APPDATA%\WebTorrent Desktop目录下残留的配置与缓存文件。
macOS #
- 打开"访达 → 应用程序",将 WebTorrent 拖入废纸篓。
- 清空废纸篓完成卸载。
- 如需清理残留设置,可删除
~/Library/Application Support/WebTorrent Desktop与~/Library/Preferences下相关配置文件。
Linux(Debian / Ubuntu) #
sudo apt remove webtorrent-desktop
# 若需连同配置文件一起清理:
sudo apt purge webtorrent-desktop
用户目录下的缓存与配置(如 ~/.config/WebTorrent Desktop)如需一并删除,可手动清理。
开发者依赖 #
如果只是作为项目依赖安装,进入项目目录执行 npm uninstall webtorrent 即可移除。
