由于最近忙着开发自己的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形式。
然后刷新一下页面,我们可以看到network标签里,有很多的请求日志。
这里大部分的请求都是图片,js,css这种,这些是定义页面的样式和功能的,在这里我们并不需要。
切换到XHR(俗称AJAX)过滤,可以看到我们需要的数据请求:
一共有4个。分别点开这4个的Preview,查看这4个请求的返回数据。
在 ?items_id= 这个请求中,找到了2个视频的播放地址:
随便复制一个视频地址到浏览器打开,看到了无水印的视频(注意一定要切换到手机模拟模式)
二. 分析数据请求的参数
切换到headers标签,可以看到这次请求提交的参数
可以看到,这是一个GET请求,在url里传递了items_id和dytk这两个参数。
看到这个items_id是不是有点熟悉?看一下地址栏,这个id就在地址栏的url里:
https://www.iesdouyin.com/share/video/6560551973479779591/?region=…
另一个参数dytk暂时不知道,我们试一下去掉这个参数,请求一下看看:
一样也成功返回了地址。
三. 分析总结
通过上面的分析,步骤总结如下:
-
访问链接,通过跳转的地址拿到视频ID。
-
通过XHR中的 ?item_id= 这个链接,传递视频ID,拿到视频播放地址
-
拿到的播放地址就是无水印的视频地址
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
广告视频怎么解析?如:https://v.douyin.com/TmCYmG/
照着文章方法试一试!
左上角和右下角是否有水印呢?
抖音的视频地址变了,把解析出来的pylyvm改成play
失效了,求更新
小伟小伟,你不会是之前cs1.6写插件那个小伟吧?久仰大名!