在網上看過一些相關教程,有一些解析抖音無水印視頻的教程。說是教程,其實大部分都是提供接口,或引流或賣接口。究竟是怎么實現的去水印,就小小地研究了一下。
1.瀏覽器分析
從抖音短視頻中分享一段視頻。可以得到
我開始期待夏天和你一起吃西瓜,就像期待冬天和你一起吃火鍋,其實我對夏天冬天沒有特別喜歡,只是期待和你一起 https://v.douyin.com/cgLgew/ 復制此鏈接,打開【抖音短視頻】,直接觀看視頻!
我將這段文字中的鏈接部分復制下來,在瀏覽器打開。並使用開發者工具調試(F12或鼠標右鍵)。
可以看到在video標簽中存在一個鏈接。
https://aweme.snssdk.com/aweme/v1/playwm/?s_vid=93f1b41336a8b7a442dbf1c29c6bbc5672cdb2cfaefa126d6cf6ef5532d6940d8202ba55baeffa88df4f525e02e3d9d4a2ac45fb4360d6d7d7735806d8db4a00&line=0
復制該鏈接在瀏覽器打開:
發現仍然是帶水印的視頻,而且頁面重定向成了新地址:
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=
分析之前的地址:
https://aweme.snssdk.com/aweme/v1/playwm/?s_vid=93f1b41336a8b7a442dbf1c29c6bbc5672cdb2cfaefa126d6cf6ef5532d6940d8202ba55baeffa88df4f525e02e3d9d4a2ac45fb4360d6d7d7735806d8db4a00&line=0
包含playwm 后面的wm是什么意思?(wm就是WaterMark,水印的意思),將playwm改成play,並將請求的User-Agent修改為手機。便得到了無水印版本的視頻。手動操作部分結束!
2. 代碼實現
Github:
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文件