跳转到内容

迅雷下载触发

刀刀

1/8/2025

0 字

0 分钟

实现

现在有一份超链接代码如下:

html
<body>
  <a href="https://xxxxxxxxxxxx">点我下载</a>
</body>

点击即可下载。前端想要实现迅雷下载,可按照以下思路实现:

  1. 为超链接 a 标签添加自定义标识 data-thunder ,表示该超链接需要迅雷下载
  2. 获取所有需要迅雷下载的超链接,for...of... 循环
  3. 通过 btoa 把链接转 base64
  4. 转迅雷下载的 thunder 协议

代码如下:

html
<body>
  <a href="https://xxxxxxxxxxxx">点我下载</a>
  
  <script>
  	const links = document.querySelectorAll('a[data-thunder]')
    for(const link of links) {
      const newHref = btoa(`AA${link.href}ZZ`)
      // 转迅雷下载的 `thunder` 协议
      link.href = `thunder://${newHref}`
    }
  </script>
</body>

⚠️ 注意

示例代码中使用了 JavaScript 内置的 btoa() 函数来进行 Base64 编码。如果你需要在 Node.js 环境下运行这个函数,你需要使用 Buffer.from() 函数来进行 Base64 编码。

拓展:btoa()

btoa() 方法可以将一个二进制字符串(例如,将字符串中的每一个字节都视为一个二进制数据字节)编码为 Base64 编码的 ASCII 字符串。

你可以使用这个方法来对可能遇到通信问题的数据进行编码,然后使用 atob() 方法来对数据进行解码。例如,你可以对 ASCII 中的控制字符(值为 0 到 31 的字符)进行编码。

  • 语法:
    js
    btoa(stringToEncode)
  • 参数: stringToEncode 一个需要编码的二进制字符串
  • 返回值: 一个包含 stringToEncode 的 Base64 表示的 ASCII 字符串。

总体效果