抖音无水印视频提取工具方法

开发者: Grant 团队 | 工具路径: /root/claude/scripts/douyin-video.py 方法: 抖音 iesdouyin.com SSR 数据提取 + playwm→play 转换

基于抖音官方分享页 SSR(服务端渲染)数据的无水印视频提取技术。与传统的接口逆向或浏览器自动化不同,此方法直接利用抖音分享页 iesdouyin.com/share/video/{id}/ 在服务端渲染时嵌入的完整视频数据,绕过前端签名验证。


核心原理

抖音分享页 www.iesdouyin.com/share/video/{video_id}/ 在服务端渲染时,会将视频的完整元数据嵌入在 HTML 的 window._ROUTER_DATA JSON 中。该数据包含:

  • 视频播放地址(play_addr.url_list
  • 作者信息(昵称、头像、签名)
  • 视频描述、时长、封面图
  • 清晰度信息

关键发现:play_addr 返回的是带水印地址(路径含 playwm),将 playwm 改为 play 即可获得无水印版本。随后请求该 API URL 会 302 重定向到抖音 CDN 的 MP4 文件。

技术流程

用户短链接 → 302 重定向解析 → 提取 video_id
  → 请求 iesdouyin.com/share/video/{id}(移动端 UA)
  → 正则提取 window._ROUTER_DATA JSON
  → 解析 play_addr.url_list[0] → playwm URL
  → 替换 playwm→play → 无水印 API URL
  → 请求该 URL 获得 CDN 直链 → 直接下载

关键要点

请求头

移动端 UA 是关键,桌面端 UA 可能返回不同的页面结构。推荐:

User-Agent: Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36

无需签名

不同于抖音主站 API(需要 X-Bogus、_signature 等签名参数),iesdouyin.com 分享页的 SSR 数据是服务端直接嵌入的,无需任何签名计算

短链接解析

抖音短链接 v.douyin.com/xxx 需要先通过 HTTP HEAD 请求跟随 302 重定向,从最终 URL 中提取 video/{id} 格式的视频 ID。

局限性

  • 依赖 iesdouyin.com 页面可访问性
  • CDN 链接有时效性(URL 中包含时间戳参数)
  • 仅适用于抖音平台,不适用于 TikTok 国际版
  • 提取的是视频文件,不包含评论、点赞等社交数据

与 DouK-Downloader 对比

维度DouYin Video ToolDouK-Downloader
方法SSR 数据提取API 接口逆向 + Cookie
复杂度极简(无需签名)复杂(需签名还原)
登录态不需要通常需要 Cookie
功能范围仅视频下载下载+数据采集+直播
依赖requests 即可HTTPX + 全套异步生态
适用场景快速获取单条视频批量/大规模采集

关联连接