手把手教你把BT下载功能集成到自己的网站

很多做资源分享类网站的朋友都遇到过这种情况:用户想下载一个大文件,结果点进页面只能看到一堆磁力链接和种子文件,复制粘贴麻烦不说,还得自己打开下载软件。其实完全可以让用户直接在网页里就开始下载,体验立马提升一大截。

为什么要在网站里集成BT下载

想象一下,你建了个电影资源站,访客搜到一部高清片源,结果点开只有“点击下载种子”六个字。这时候如果他电脑没装迅雷或者qBittorrent,很可能就关掉页面走人了。但如果你的网站能像网盘那样直接弹出下载进度条,甚至支持边下边播,用户流失率会明显降低。

技术实现思路

核心是用 WebTorrent 这个开源库。它基于 WebRTC 协议,能在浏览器里直接跑 BT 下载,不需要后端服务器中转数据。GitHub 上 star 数超过 2.5 万,稳定性没问题。

先在网页中引入 WebTorrent:

<script src="https://cdn.jsdelivr.net/npm/webtorrent@latest/webtorrent.min.js"></script>

然后写一段 JS 启动下载:

const client = new WebTorrent();
const torrentId = 'magnet:?xt=urn:btih:08ada5a7a6183aae1e09d831df6748d566095a10';

client.add(torrentId, { path: './downloads' }, function (torrent) {
  torrent.files.forEach(function (file) {
    file.renderTo('#video-player'); // 如果是视频可直接播放
  });
});

嵌入播放器更实用

对于视频类资源,可以结合 <video> 标签实现边下边播。用户点开页面几秒内就能看到画面,不用等整个文件下完。

<video id="video-player" controls autoplay>
  <source type="video/webm">
</video>

配合上面的 JS 代码,WebTorrent 会自动将视频流注入到这个播放器里。

注意这些坑

不是所有浏览器都支持 WebRTC 数据通道,iOS Safari 就基本跑不了。建议做个兼容性判断:

if (typeof WebTorrent !== 'undefined' && WebTorrent.WEBRTC_SUPPORT) {
  // 启动 WebTorrent
} else {
  document.getElementById('fallback').style.display = 'block';
}

不支持的时候可以降级显示磁力链接,让用户手动复制。

性能与带宽考虑

虽然 WebTorrent 是 P2P,但初期种子健康度低时,可能需要你搭几个做种服务器来保证速度。可以用 Docker 快速部署一个常驻客户端:

docker run -d --name seed-box \n  -v /path/to/files:/data \n  -p 6881:6881 \n  -p 6881:6881/udp \n  rlesouef/qbittorrent

这样即使访客用的是不支持 WebRTC 的设备,也能从你的服务器拉数据,不影响体验。

把这个功能加进去后,我朋友的动漫站用户平均停留时间从1分半涨到了4分钟,转化率翻了一倍。说白了,就是让流程更顺,少一次跳转,就多留一批人。