抖音视频去水印原理及其python实现(2020.12)

1,650 阅读1分钟

抖音里面的视频保存之后,会发现全都带有水印,

怎样才能不带水印呢,今天,它来了~~

首先在抖音里复制链接,获得如下URL: https://v.douyin.com/JyCk5gy/

把这个URL复制到浏览器直接访问,

image.png

我们发现,URL地址变了,

https://www.iesdouyin.com/share/video/6870423037087436046/?region=CN&mid=6849704381667920647&u_code=16bc6a164&titleType=title&utm_source=copy_link&utm_campaign=client_share&utm_medium=android&app=aweme

其中的 6870423037087436046 就是视频ID,

接下来,打开F12,刷新页面,筛选XHR,

image.png

可以看到一个item_ids的链接,

https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=6870423037087436046

很明显,最后的这串数字,就是视频的ID,

通过这个URL就可以获取到视频的真正播放地址,

image.png

通过这个JSON结果可知,视频文件的真正地址是:

https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0200f230000btcaac52m1gham4830p0&ratio=720p&line=0

但这个视频是带水印的,我们还需要把playwm替换成play才是无水印的地址,

https://aweme.snssdk.com/aweme/v1/play/?video_id=v0200f230000btcaac52m1gham4830p0&ratio=720p&line=0

这个地址无法通过PC浏览器直接访问,可以用手机浏览器访问,在手机上把它保存为一个.mp4文件就可以了。

有的手机浏览器不支持视频下载功能,但是,能看到视频,就证明可以直接下载,

知道了它的原理,就可以编写python代码,实现一键下载啦。

手机可以看,电脑不能看,问题基本就在user-agent,

经测试发现,只要头信息agent包含Android就可以正常获取数据流,

所以我们这样做:

def download(playurl): # 手机浏览器能看,电脑不能看,经测试发现,只要agent信息里包含Android或iPhone就可以获取数据流 headers = { 'user-agent': 'Android', } video = requests.get(url=playurl, headers=headers) with open('hello.mp4', 'wb')as file: file.write(video.content) file.close() print("视频下载完成!")

这样就可以正常下载到电脑了