热爱技术
专注分享

【授人以渔】 关于抖音视频无水印解析的方法 (附最新接口)

由于最近忙着开发自己的QQ机器人,所以好久没更新了,今天抽个空,写一篇文章。
同时提醒一下大家,疫情期间,少走动,安心宅在家里为国家做贡献。

今天稍微研究了下抖音的无水印解析的方法。因为抖音的接口经常会变,今天找到了接口,明天又变成另一个了,教程的时效性就会很差。授人以鱼不如授人以渔,这里为大家展示一下是如何分析到接口的,同样这个教程也通用找其他网站的接口。

本教程适用于小白,如果是大佬,或者有更好的方法,可以加群:607614097 一起讨论,提点建议。

示例视频: https://v.douyin.com/tbXQ9N/
推荐:谷歌浏览器


一. 找到这个页面的数据请求

用谷歌浏览器打开这个链接,可以看到标题栏里视频链接302跳转,成了另一个链接:

https://www.iesdouyin.com/share/video/6560551973479779591/?region=CN&mid=6560552003767012100&u_code=idc3k7bl&titleType=title&utm_source=copy_link&utm_campaign=client_share&utm_medium=android&app=aweme

按F12打开浏览器的开发者工具,切换到network标签,按上方的模拟终端按钮,切换到手机web形式。

file

然后刷新一下页面,我们可以看到network标签里,有很多的请求日志。

file

这里大部分的请求都是图片,js,css这种,这些是定义页面的样式和功能的,在这里我们并不需要。
切换到XHR(俗称AJAX)过滤,可以看到我们需要的数据请求:

file

一共有4个。分别点开这4个的Preview,查看这4个请求的返回数据。
在 ?items_id= 这个请求中,找到了2个视频的播放地址:

file

随便复制一个视频地址到浏览器打开,看到了无水印的视频(注意一定要切换到手机模拟模式)

file


二. 分析数据请求的参数

切换到headers标签,可以看到这次请求提交的参数

file

可以看到,这是一个GET请求,在url里传递了items_id和dytk这两个参数。
看到这个items_id是不是有点熟悉?看一下地址栏,这个id就在地址栏的url里:
https://www.iesdouyin.com/share/video/6560551973479779591/?region=…

另一个参数dytk暂时不知道,我们试一下去掉这个参数,请求一下看看:

file

一样也成功返回了地址。


三. 分析总结

通过上面的分析,步骤总结如下:

  1. 访问链接,通过跳转的地址拿到视频ID。

  2. 通过XHR中的 ?item_id= 这个链接,传递视频ID,拿到视频播放地址

  3. 拿到的播放地址就是无水印的视频地址

API接口:https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=视频ID


四.python实现

import requests
import re

api = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids={}'

headers = {
    'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Mobile Safari/537.36'
}

def parse_video(videoUrl):
    r = requests.get(videoUrl, headers=headers)
    realUrl = r.url
    realUrl = realUrl.split('?')[0]
    videoId = re.findall('\d+', realUrl)[0]
    apiUrl = api.format(videoId)
    r = requests.get(apiUrl, headers=headers)
    result = r.json()
    items = result.get('item_list')
    item = items[0]
    video = item.get('video')
    address = video.get('play_addr').get('url_list')
    return address[0]

if __name__ == '__main__':
    parse_video('https://v.douyin.com/tbXQ9N/')

运行结果:

https://aweme.snssdk.com/aweme/v1/play/?video_id=v0200ff50000bc5s6gj3ft9inuibot10&line=0&ratio=540p&media_type=4&vr_type=0&improve_bitrate=0&is_play_url=1&is_support_h265=0&source=PackSourceEnum_PUBLISH
赞(3) 打赏
未经允许不得转载:小伟博客 » 【授人以渔】 关于抖音视频无水印解析的方法 (附最新接口)

评论 4

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    广告视频怎么解析?如:https://v.douyin.com/TmCYmG/

    深沁7个月前 (04-22)回复
    • 照着文章方法试一试!

      misery4个月前 (08-04)回复
  2. #2

    左上角和右下角是否有水印呢?

    echo 1237个月前 (05-08)回复
    • 抖音的视频地址变了,把解析出来的pylyvm改成play

      misery4个月前 (08-04)回复

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏