# -*- coding: UTF-8 -*- import requests import re def dou(): print("===>欢迎使用抖音视频去水印提取工具") print("===>请输入抖音链接中的短链接(eg:https://v.douyin.com/sLvq6P/)") input_url = input("===>") preurl = re.findall(r\'(?<=douyin.com\/)\w+\/\', input_url, re.I|re.M) url = "https://v.douyin.com/"+preurl[0] print(\'url:\'+url) #设置浏览器代理,一定要是移动设备,安卓/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" } #请求短链接,获得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("===>复制下面的长链接到手机浏览器打开即可得到无水印视频\n===>"+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("===>视频下载完成!") #完事后退出程序 print("下载完成==>") for s in range(1,100): dou()