0%

抖音去水印方法

能点开这篇文章,相信你和我一样,有找个没有水印视频的需求

前言

抖音上有许多有意思的视频,但我们保存到手机后总有个很low水印。
IMG_2223.PNG

现状

搜索了去水印相关的方法,结果还挺多,但也是套路满满。总结如下:

  • 网页版:手机保存不方便,特别是iphone,还得下载文件管理器等等其它软件来处理
  • 小程序:打着免费的名义,需要分享、充钱等等套路
  • QQ群:骗子、广告一堆

方法

作为一个技术宅,分析了抖音视频链接的请求流程,自己写了个去水印小程序。

  1. 懒得了解实现的可以在微信小程序搜索:抖友之去水印。
  2. 微信扫码:
    IMG_2205.JPG

使用方法:
IMG_2224.PNG

解决思路

整体架构设计如下:

dqy.png

核心代码:

1.分析分享链接

1
2
3
4
5
6
7
def getRewirte(url):
headers = {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'
}
res = requests.get(url,headers=headers,allow_redirects=False)
locationUrl = res.headers['location']
return locationUrl

2.下载视频

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
def downvideo(id,url,now):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1'
}
res = requests.get(url,verify=False,headers=headers)
with open(now+'/html.txt','wb') as f:
f.write(res.content)
new_file = open(now+'/html.txt')
data = new_file.readlines()
new_file.close()
for line in data:
if 'playAddr:' in line:
playurl = re.findall(r'playAddr:(.+?)\,', line)[0]
playurl = playurl.replace('playwm', 'play')
playurl = playurl.replace("\"", "")
postHeaders = {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'
}
locationResponse = requests.get(playurl,verify=False,headers=postHeaders,allow_redirects=False)
locationUrl = locationResponse.headers['location']
videoRes = requests.get(locationUrl,headers=headers,verify=False)
try:
with open(now+'/video.mp4', 'wb') as f:
f.write(videoRes.content)
f.flush()
setTaskStatus(id,'3',(now+'/video.mp4').replace('app/',''))
print("下载完成!!!!")
except:
setTaskStatus(id, '4', '')
print("下载失败!!!!")

前端部分为单页面小程序,借鉴使用的了部分开源的ColorUI组件