【Python爬虫】抖音去水印

在网上看过一些相关教程,有一些解析抖音无水印视频的教程。说是教程,其实大部分都是提供接口,或引流或卖接口。到底是怎么实现的去水印,就小小地研究了一下。git

1.浏览器分析

从抖音短视频中分享一段视频。能够获得github

我开始期待夏天和你一块儿吃西瓜,就像期待冬天和你一块儿吃火锅,其实我对夏天冬天没有特别喜欢,只是期待和你一块儿 https://v.douyin.com/cgLgew/ 复制此连接,打开【抖音短视频】,直接观看视频!

我将这段文字中的连接部分复制下来,在浏览器打开。并使用开发者工具调试(F12或鼠标右键)。浏览器

能够看到在video标签中存在一个连接。ide

https://aweme.snssdk.com/aweme/v1/playwm/?s_vid=93f1b41336a8b7a442dbf1c29c6bbc5672cdb2cfaefa126d6cf6ef5532d6940d8202ba55baeffa88df4f525e02e3d9d4a2ac45fb4360d6d7d7735806d8db4a00&line=0

复制该连接在浏览器打开:工具

 

 发现仍然是带水印的视频,并且页面重定向成了新地址:post

http://v26-dy.ixigua.com/6687f6c2701783a302bb486ec3398aad/5e906717/video/tos/cn/tos-cn-ve-15/479476156a58407e939bc3535e4b584a/?a=1128&br=0&bt=2078&cr=0&cs=0&dr=0&ds=3&er=&l=2020041019310601001404601506236F71&lr=aweme&qs=0&rc=ajZvZDhsNHM1dDMzZmkzM0ApNDRpM2k4O2Q6N2Y1ZDs3ZGdyMmYwaGphXjNfLS02LS9zc182LTQuLi00LzMtL2BiLzQ6Yw%3D%3D&vl=&vr=

分析以前的地址:url

https://aweme.snssdk.com/aweme/v1/playwm/?s_vid=93f1b41336a8b7a442dbf1c29c6bbc5672cdb2cfaefa126d6cf6ef5532d6940d8202ba55baeffa88df4f525e02e3d9d4a2ac45fb4360d6d7d7735806d8db4a00&line=0

包含playwm 后面的wm是什么意思?(wm就是WaterMark,水印的意思),将playwm改为play,并将请求的User-Agent修改成手机。便获得了无水印版本的视频。手动操做部分结束!spa

 

 

2. 代码实现

Github:3d

https://github.com/HuanGeNet/douyinkillwatermark调试

import requests,re
 
share = input("请输入你要去水印的抖音短视频连接:")
pat = '(https://v.douyin.com/.*?/)' 
url = re.compile(pat).findall(share)[0]  #正则匹配分享连接
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3904.108 Safari/537.36'
}
r = requests.get(url, headers=headers)
pat = 'playAddr: "(.*?)",'
play = re.compile(pat).findall(r.text)[0].replace("playwm", "play")
headers = {
    'user-agent': 'Android',
}
r = requests.get(play, headers=headers, allow_redirects=False)
playurl = r.headers['location']

#自定义文件名保存短视频
name = input("===>正在下载保存视频,请输入视频名称:")
video = requests.get(url=playurl, headers=headers)
with open(name+".mp4", 'wb')as file:
    file.write(video.content)
    file.close()
    print("===>视频下载完成!")

#完过后退出程序
input("===>press enter key to exit!")

为了方便使用,我打包成了EXE文件

 https://www.lanzous.com/ib7coji