微信号:weixin888
首先声明该方法仅供个人使用,严禁非法获利。
1.一般我们保存抖音视频,下载保存打开后视频上是有水印的,如下图:
视频中会有水印,虽然网上也有各自去水印的方法,但是都是基于视音频图像处理进行的,有的还要收费,下面介绍的方法是从源头直接获取无水印视频下载链接
2.首先我们在抖音分享里面,复制视频链接,例如:#在抖音,记录美好生活#我今年38,身高180,从来不洗澡,家里有八套房子,里面只有一件事情是真的,你猜是哪一件#twice问号舞 https://v.douyin.com/tPPT11/ 复制此链接,打开【抖音短视频】,直接观看视频!
3.以这个视频为例,复制这段内容里面的url链接:https://v.douyin.com/tPPT11/,可以看出来抖音视频都是以短链接的方式进行外链分享,我们把这个短链接用Chrome浏览器打开【注意】浏览器用F12开发者模式中,改为移动设备,如图:
4.在开发者工具中过滤item,可以看到request请求url为:https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=6799201381799513359&dytk=cd3d594ff02fe56fca2568f82d659b939942bf444f1a974247d6bb6f526a2995
可以看出这里面每个视频的实际播放url的组成格式都是这样的,那么接下来就是要找到每个视频的item_ids和dykt。
5.我们继续看过滤前的报文,里面有个document的报文,这里面就是我们打开短链接时获取的一个页面。里面包含了我们所需要的item_ids和dykt。
6.OK通过上面操作我们已经获取到一个短视频的长链接所以要的2个参数,下面就是需要进行组装url,我们先打开url看看内容是什么。这其实就是一个Http请求,我们直接看回复的内容:
7.可以看到返回了多个addr。其中download_addr,下面标注了has_watermark:true,这是我们平常保存时候带水印的视频链接。
继续往下看,有一个play_addr,这个就是我们要找的无水印视频链接,复制到手机浏览器里打开,OK没有水印,大功告成!对比一下同一个时间点的视频截图:
最后附上python代码:
# Chrome用开发者模拟移动设备打开短链接 https://v.douyin.com/sLvq6P/
# 过滤item_ids字段和dytk字段,组装视频播放url
# 打开里面的play_addr,即可得到无水印视频播放地址,复制url到手机浏览器打开即得无水印视频
#视频播放长链接组装规则
# "https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?
# item_ids="+item_ids[0]+"&dytk="+dytk[0]
import requests
import re
#设置浏览器代理,一定要是移动设备,安卓/iOS均可
headers = {
"user-agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1"
}
print("===>欢迎使用抖音视频去水印提取工具")
print("===>请输入抖音链接中的短链接(eg:https://v.douyin.com/sLvq6P/)")
input_url = input("===>")
#根据粘贴的分享内容,提取视频短链接
preurl = re.findall(r'(?<=douyin.com\/)\\w+\/', input_url, re.I|re.M)
# print("https://v.douyin.com/"+preurl[0])
#组装短链接url
url = "https://v.douyin.com/"+preurl[0]
#请求短链接,获得itemId和dytk
get = requests.get(url, headers=headers)
html = get.content
# print(html)
itemId = re.findall(r"(?<=itemId:\\s\\")\\d+", str(html))
# print(itemId[0])
dytk = re.findall(r"(?<=dytk:\\s\\")(.*?)(?=\\")", str(html))
# print(dytk[0])
#组装视频长链接
videourl = "https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?\\
item_ids="+itemId[0]+"&dytk="+dytk[0]
# print(videourl)
#请求长链接,获取play_addr
videoopen = requests.get(videourl, headers=headers)
vhtml = videoopen.text
# print(vhtml)
uri = re.findall(r'(?<=\\"uri\\":\\")\\w{32}(?=\\")', str(vhtml))
# print(uri[0])
#长链接的格式其实是固定的,唯一变动的就是video_id,上面提取出uri后进行组装即可得到最终链接
play_addr = "https://aweme.snssdk.com/aweme/v1/play/?video_id="+uri[0]+\\
"&line=0&ratio=540p&media_type=4&vr_type=0&improve_bitrate=0&is_play_url=1&is_support_h265=0&source=PackSourceEnum_PUBLISH"
print("===>复制下面的长链接到手机浏览器打开即可得到无水印视频\
===>"+play_addr)
#自定义文件名保存短视频
name = input("===>正在下载保存视频,请输入视频名称:")
video = requests.get(url=play_addr, headers=headers)
with open(name+".mp4", 'wb')as file:
file.write(video.content)
file.close()
print("===>视频下载完成!")
#完事后退出程序
input("===>press enter key to exit!")
实际运行一下,OK!
也可以用pyinstaller打包为exe文件在windows下运行。