本文作者:99ANYc3cd6

抖音下载jsbox怎么用?

99ANYc3cd6 2025-12-06 27
抖音下载jsbox怎么用?摘要: 核心思路获取抖音 Web 页面:通过 http.get 请求抖音的分享链接,获取其 HTML 内容,解析视频地址:抖音的 HTML 中通常包含一个 <script> 标...

核心思路

  1. 获取抖音 Web 页面:通过 http.get 请求抖音的分享链接,获取其 HTML 内容。
  2. 解析视频地址:抖音的 HTML 中通常包含一个 <script> 标签,里面存有 JSON 数据,其中包含了视频的直接链接 (playAddrdownload_addr)。
  3. 下载视频:解析出视频链接后,使用 http.download 将视频文件下载到 JSBox 的沙盒目录中。
  4. 显示通知:下载完成后,使用 notification 提示用户。

完整 JSBox 脚本

你可以直接复制下面的全部代码,在 JSBox 中新建一个 JavaScript 文件并粘贴进去。

抖音下载jsbox怎么用?
(图片来源网络,侵删)
// 抖音视频下载器
// 作者: JSBox 社区
// 日期: 2025-10-27
// 主函数,入口
async function main() {
  // 1. 获取用户输入的抖音分享链接
  const { url } await $input.text({
    placeholder: "请粘贴抖音分享链接",
    handler: (text) => ({ url: text.trim() })
  });
  // 检查输入是否为空
  if (!url) {
    $ui.alert("请输入有效的抖音链接!");
    return;
  }
  // 2. 请求抖音页面,获取 HTML
  $ui.loading(true);
  try {
    const html = await http.get(url);
    // 3. 从 HTML 中解析出视频数据
    // 通过正则表达式找到包含视频信息的 script 标签
    const videoDataRegex = /<script>window\.__INITIAL_STATE__=({.+?});\(function\(\)\{var s;.*?\}\(\)\);<\/script>/;
    const match = html.match(videoDataRegex);
    if (!match || !match[1]) {
      throw new Error("无法解析页面数据,可能是链接无效或页面结构已更改。");
    }
    const initialState = JSON.parse(match[1]);
    // 根据最新的页面结构调整数据路径 (2025年10月)
    const videoItem = initialState?.videoDetail?.itemInfo?.itemStruct;
    if (!videoItem || !videoItem.playAddr || !videoItem.playAddr.urlList || videoItem.playAddr.urlList.length === 0) {
      throw new Error("未找到视频播放地址。");
    }
    // 获取视频标题和最高清的链接
    const videoTitle = videoItem.desc || "未命名视频";
    const videoUrl = videoItem.playAddr.urlList[0]; // 通常第一个链接是最高清的
    console.log(`视频标题: ${videoTitle}`);
    console.log(`视频链接: ${videoUrl}`);
    // 4. 下载视频文件
    $ui.toast("开始下载视频...");
    const downloadPath = await http.download({
        url: videoUrl,
        save: "Douyin" // 将文件保存在 Douyin 文件夹下
    });
    // 5. 下载完成,显示通知
    $ui.loading(false);
    $ui.alert("下载成功!", `视频 "${videoTitle}"\n已保存至: ${downloadPath}`);
  } catch (error) {
    $ui.loading(false);
    $ui.alert("下载失败", error.message);
    console.error(error);
  }
}
// 执行主函数
main();

使用步骤

  1. 打开 JSBox:在你的手机上启动 JSBox 应用。
  2. 新建脚本
    • 点击右下角的 号,选择 JavaScript
    • 给你的脚本起个名字,抖音下载
  3. 粘贴代码:将上面提供的完整代码复制并粘贴到新建的脚本编辑器中。
  4. 运行脚本

    点击编辑器右上角的运行按钮(一个三角图标)。

  5. 输入链接
    • 脚本运行后,会弹出一个输入框。
    • 从抖音 App 复制视频分享链接:打开抖音 App,找到你想下载的视频,点击右下角的 分享 按钮,然后选择 复制链接
    • 将复制的链接粘贴到 JSBox 的输入框中,点击 确定
  6. 等待下载
    • 脚本会开始请求、解析并下载视频,你会在屏幕上看到加载提示。
    • 下载完成后,会弹出一个成功提示,告诉你视频的保存路径。

代码详解

  1. async function main()

    • 使用 async/await 语法可以让异步代码(如网络请求)看起来像同步代码一样,逻辑更清晰。
  2. $input.text()

    • 这是 JSBox 提供的输入组件,用于弹出一个文本框让用户输入内容。
    • placeholder 是输入框的提示文字。
    • handler 是一个回调函数,当用户输入完成并点击确定后,它会返回用户输入的文本。
  3. http.get(url)

    抖音下载jsbox怎么用?
    (图片来源网络,侵删)

    这是 JSBox 的网络请求工具,用于获取指定 URL 的内容,这里我们用它来获取抖音分享页的 HTML。

  4. html.match(videoDataRegex)

    • 这是整个脚本的核心,抖音为了方便前端渲染,会把大部分关键数据(包括视频链接)以 JSON 格式放在一个 <script> 标签里,并赋值给 window.__INITIAL_STATE__
    • 我们用正则表达式精准地找到这个 script 标签的内容。
    • 注意:网页结构可能会更新,如果这个正则表达式失效了,就需要根据新的页面结构调整。
  5. JSON.parse(match[1])

    将匹配到的 JSON 字符串转换成一个 JavaScript 对象,方便我们从中提取数据。

    抖音下载jsbox怎么用?
    (图片来源网络,侵删)
  6. initialState?.videoDetail?.itemInfo?.itemStruct

    • 这是数据路径,通过这个路径,我们可以一层层地访问到视频对象 (videoItem)。
    • 使用 (可选链操作符)可以防止在某一层路径为 undefined 时导致整个程序崩溃。
  7. videoItem.playAddr.urlList[0]

    • playAddr 是视频地址对象,urlList 是一个包含多个清晰度视频链接的数组,通常第一个是最高清的。
  8. http.download(...)

    • 这是 JSBox 的文件下载工具。
    • url: 要下载的文件地址(就是我们解析出的视频链接)。
    • save: 指定保存的文件夹名称,如果文件夹不存在,JSBox 会自动创建,下载的文件会保存在 JSBox/Douyin/ 目录下。
  9. $ui.alert()$ui.toast()

    • $ui.alert 用于显示一个模态弹窗,适合显示重要信息(如成功/失败)。
    • $ui.toast 用于显示一个短暂的提示信息,适合在操作过程中给用户反馈。

重要提示

  • 链接有效性:此脚本仅适用于抖音 App 内的分享链接,格式通常为 https://v.douyin.com/xxxxxx/,它不适用于抖音网页版的链接。
  • 网页结构变化:抖音可能会随时更新其网页前端代码,导致解析数据的正则表达式或数据路径失效,如果脚本突然不能用了,很可能是这个原因,届时需要根据新的页面结构更新脚本。
  • 版权问题:请尊重原创作者的版权,下载的视频仅供个人学习或欣赏使用,请勿用于商业传播或二次创作。

希望这个详细的教程能帮助你成功在 JSBox 中使用抖音下载功能!

文章版权及转载声明

作者:99ANYc3cd6本文地址:https://www.chumoping.net/post/680.html发布于 2025-12-06
文章转载或复制请以超链接形式并注明出处初梦运营网

阅读
分享