用Python下载抖音无水印视频!
不知不覺距離小F最開始寫的一篇抖音文章,時(shí)間也過了一年。
用Python全自動(dòng)下載抖音視頻!
上面這一篇閱讀量是所有文章中閱讀量最高的,當(dāng)然還有另外兩篇相關(guān)的。
用Python生成抖音字符視頻!
用數(shù)據(jù)分析大家最喜歡什么類型的抖音視頻。
除了感慨時(shí)間過的快之外,真的無它~
最近發(fā)現(xiàn)了抖音無水印視頻的下載方法。
所以就來記錄一下,小F也已經(jīng)部署到服務(wù)器上,歡迎大家使用。
#?抖音接口 https://www.fanasite.xyz/douyin/?url=https://v.douyin.com/CoQBx1/「url」參數(shù)值就是從抖音上復(fù)制的鏈接。
后面會(huì)放到我的小程序中,歡迎大家收藏使用。
/ 01 / Python下載
首先來看一下,直接訪問抖音鏈接得到的結(jié)果。
妥妥的水印...
接下來打開瀏覽器的開發(fā)者工具,看看視頻的地址。
可以發(fā)現(xiàn)「playAddr」就是視頻的地址,復(fù)制然后訪問。
鏈接會(huì)重定向到以「v9」開頭的鏈接,然而還是有水印。
接下來就是重點(diǎn)了,首先你需要讓你的瀏覽器能夠修改UA,即爬蟲經(jīng)常用到的「User-Agent」。
我用的是Mac+谷歌瀏覽器,就說說我自己怎么修改的。
Windows的請(qǐng)自行百度~
首先在電腦的文稿中創(chuàng)建一個(gè)文件夾。
這個(gè)文件夾的路徑如下。
并且在根目錄的終端運(yùn)行下面這段代碼。
open?-n?/Applications/Google\?Chrome.app/?--args?--disable-web-security?--user-data-dir=/Users/star-river/Documents/MyChrome如此我的谷歌瀏覽器就能成功更換UA啦!
還是直接訪問抖音的鏈接,可以看到結(jié)果和最初的不一樣。
就在這個(gè)模式下查找接口。
發(fā)現(xiàn)「?item_ids」開頭的這個(gè)接口就包含了我們想要的無水印抖音視頻。
就是「play_addr」下的列表中的那兩個(gè)鏈接。
其中「?item_ids」開頭的這個(gè)接口有兩個(gè)參數(shù)需要我們?cè)诹硪粋€(gè)接口中獲取。
這樣「item_ids」和「dytk」參數(shù)值我們也知道了。
不過我們直接用瀏覽器訪問獲取到的那兩個(gè)鏈接是不會(huì)直接出現(xiàn)視頻的,需要和上面的一樣。
也改變一下UA,這里的鏈接如果還用「iPhone X」這個(gè)UA訪問,會(huì)失敗。
什么原因,小F就不得而知了...
把瀏覽器UA改為「Responsive」即可訪問,鏈接會(huì)重定向。
這樣無水印的抖音視頻就搞定了。
不過要是每個(gè)視頻都需要這么下載,就太麻煩了。
所以小F寫了用Python就可以下載視頻的代碼。
import?requests import?json import?reheaders?=?{'accept':?'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','accept-encoding':?'gzip,?deflate,?br','accept-language':?'zh-CN,zh;q=0.9,en;q=0.8','cache-control':?'max-age=0',#?這個(gè)貌似很重要'User-Agent':?'Mozilla/5.0?(Linux;?Android?6.0;?Nexus?5?Build/MRA58N)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/78.0.3904.108?Mobile?Safari/537.36', }def?download(url):"""下載抖音無水印視頻"""#?獲取接口參數(shù)html?=?requests.get(url=url,?headers=headers)title?=?re.findall('itemId:?"(.*?)",',?html.text)[0]dytk?=?re.findall('dytk:?"(.*?)"?}',?html.text)[0]#?拼接接口url_item?=?'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids='?+?title?+?'&dytk='?+?dytk#?獲取抖音無水印視頻鏈接html_item?=?requests.get(url=url_item,?headers=headers)#?字符串轉(zhuǎn)字典content?=?json.loads(html_item.text)#?視頻接口url_video?=?content['item_list'][0]['video']['play_addr']['url_list'][1]response?=?requests.get(url_video,?headers=headers,?allow_redirects=True)#?獲取重定向后的鏈接,這個(gè)也是無水印視頻的下載鏈接,不過本次沒用redirect?=?response.urlprint(redirect)#?視頻是二進(jìn)制,需要這種下載辦法video?=?requests.get(url_video,?headers=headers).contentvideo_name?=?"douyin.mp4"with?open(video_name,?'wb')?as?f:f.write(video)f.flush()print("下載完成")if?__name__?==?'__main__':#?抖音鏈接url?=?'https://v.douyin.com/XJj85H/'download(url)無水印視頻完美下載。
/ 02 / 接口下載
既然知道了如何用Python下載視頻。
那么小F想讓大家下載的更方便一點(diǎn),所以將程序部署到了服務(wù)器上。
你只需要通過小F的接口即可下載視頻,代碼如下。
from?flask?import?Flask,?request,?send_file import?requests import?json import?reapp?=?Flask(__name__)#?只接受get方法訪問 @app.route("/douyin/",?methods=["GET"]) def?check():headers?=?{'accept':?'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','accept-encoding':?'gzip,?deflate,?br','accept-language':?'zh-CN,zh;q=0.9,en;q=0.8','cache-control':?'max-age=0','User-Agent':?'Mozilla/5.0?(Linux;?Android?6.0;?Nexus?5?Build/MRA58N)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/78.0.3904.108?Mobile?Safari/537.36',}#?默認(rèn)返回內(nèi)容return_dict?=?{'code':?1,?'result':?False,?'msg':?'請(qǐng)求成功'}#?判斷入?yún)⑹欠駷榭読f?request.args?is?None:return_dict['return_code']?=?'504'return_dict['return_info']?=?'請(qǐng)求參數(shù)為空'return?json.dumps(return_dict,?ensure_ascii=False)#?獲取傳入的參數(shù)get_data?=?request.args.to_dict()url?=?get_data.get('url')#?獲取接口參數(shù)html?=?requests.get(url=url,?headers=headers)title?=?re.findall('itemId:?"(.*?)",',?html.text)[0]dytk?=?re.findall('dytk:?"(.*?)"?}',?html.text)[0]#?拼接接口url_item?=?'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids='?+?title?+?'&dytk='?+?dytk#?獲取抖音無水印視頻鏈接html_item?=?requests.get(url=url_item,?headers=headers)#?字符串轉(zhuǎn)字典content?=?json.loads(html_item.text)#?獲取視頻相關(guān)的信息#?data?=?{}#?視頻的描述#?data['videoDesc']?=?content['item_list'][0]['desc']#?視頻的封面圖,小圖#?data['dynamiCoverUrl']?=?content['item_list'][0]['video']['dynamic_cover']['url_list'][0]#?視頻的封面圖,大圖#?data['staticCoverUrl']?=?content['item_list'][0]['video']['origin_cover']['url_list'][0]#?視頻的評(píng)論數(shù)#?data['comments']?=?content['item_list'][0]['statistics']['comment_count']#?視頻的點(diǎn)贊數(shù)#?data['prise']?=?content['item_list'][0]['statistics']['digg_count']#?視頻接口url_video?=?content['item_list'][0]['video']['play_addr']['url_list'][1]response?=?requests.get(url_video,?headers=headers,?allow_redirects=True)#?獲取重定向后的鏈接,這個(gè)也是無水印視頻的下載鏈接,不過本次沒用redirect?=?response.url#?print(redirect)#?視頻的下載鏈接#?data['videoPlayAddr']?=?redirect#?返回視頻的信息#?return_dict['result']?=?data#?返回結(jié)果#?return?json.dumps(return_dict,?ensure_ascii=False)video?=?requests.get(url=redirect,?headers=headers).contentvideo_name?=?"douyin.mp4"with?open(video_name,?'wb')?as?f:f.write(video)f.flush()return?send_file('douyin.mp4')if?__name__?==?"__main__":#?本地調(diào)試app.run(debug=True)#?部署上線#?app.run(host='127.0.0.1',?port=443)如果本地安裝了Flask以及Requests庫(kù),這個(gè)程序是可以直接運(yùn)行。
并且能夠下載到你所想要的無水印抖音視頻。
#?本地接口 http://127.0.0.1:500/douyin/?url=https://v.douyin.com/CoQBx1/部署到服務(wù)器上的話,則需要使用443端口。
具體操作可以看之前幾篇的推文,這里不細(xì)說。
原本是部署在33550端口,但是小程序中的接口使用有要求。
不能使用帶有端口號(hào)的接口,所以就使用443端口,默認(rèn)域名訪問。
/ 03 / 總結(jié)
還是那句話~
少刷抖音,多看書,一點(diǎn)毛病也沒有。
萬水千山總是情,點(diǎn)個(gè)「好看」行不行。
推薦閱讀
···? END? ···
支持小F原創(chuàng)???
總結(jié)
以上是生活随笔為你收集整理的用Python下载抖音无水印视频!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【OCR技术系列一】光学字符识别技术介绍
- 下一篇: docker 打包python 应用