用Python下载抖音无水印视频!
不知不覺距離小F最開始寫的一篇抖音文章,時間也過了一年。
用Python全自動下載抖音視頻!
上面這一篇閱讀量是所有文章中閱讀量最高的,當然還有另外兩篇相關的。
用Python生成抖音字符視頻!
用數據分析大家最喜歡什么類型的抖音視頻。
除了感慨時間過的快之外,真的無它~
最近發現了抖音無水印視頻的下載方法。
所以就來記錄一下,小F也已經部署到服務器上,歡迎大家使用。
#?抖音接口 https://www.fanasite.xyz/douyin/?url=https://v.douyin.com/CoQBx1/「url」參數值就是從抖音上復制的鏈接。
后面會放到我的小程序中,歡迎大家收藏使用。
/ 01 / Python下載
首先來看一下,直接訪問抖音鏈接得到的結果。
妥妥的水印...
接下來打開瀏覽器的開發者工具,看看視頻的地址。
可以發現「playAddr」就是視頻的地址,復制然后訪問。
鏈接會重定向到以「v9」開頭的鏈接,然而還是有水印。
接下來就是重點了,首先你需要讓你的瀏覽器能夠修改UA,即爬蟲經常用到的「User-Agent」。
我用的是Mac+谷歌瀏覽器,就說說我自己怎么修改的。
Windows的請自行百度~
首先在電腦的文稿中創建一個文件夾。
這個文件夾的路徑如下。
并且在根目錄的終端運行下面這段代碼。
open?-n?/Applications/Google\?Chrome.app/?--args?--disable-web-security?--user-data-dir=/Users/star-river/Documents/MyChrome如此我的谷歌瀏覽器就能成功更換UA啦!
還是直接訪問抖音的鏈接,可以看到結果和最初的不一樣。
就在這個模式下查找接口。
發現「?item_ids」開頭的這個接口就包含了我們想要的無水印抖音視頻。
就是「play_addr」下的列表中的那兩個鏈接。
其中「?item_ids」開頭的這個接口有兩個參數需要我們在另一個接口中獲取。
這樣「item_ids」和「dytk」參數值我們也知道了。
不過我們直接用瀏覽器訪問獲取到的那兩個鏈接是不會直接出現視頻的,需要和上面的一樣。
也改變一下UA,這里的鏈接如果還用「iPhone X」這個UA訪問,會失敗。
什么原因,小F就不得而知了...
把瀏覽器UA改為「Responsive」即可訪問,鏈接會重定向。
這樣無水印的抖音視頻就搞定了。
不過要是每個視頻都需要這么下載,就太麻煩了。
所以小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',#?這個貌似很重要'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):"""下載抖音無水印視頻"""#?獲取接口參數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)#?字符串轉字典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)#?獲取重定向后的鏈接,這個也是無水印視頻的下載鏈接,不過本次沒用redirect?=?response.urlprint(redirect)#?視頻是二進制,需要這種下載辦法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想讓大家下載的更方便一點,所以將程序部署到了服務器上。
你只需要通過小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',}#?默認返回內容return_dict?=?{'code':?1,?'result':?False,?'msg':?'請求成功'}#?判斷入參是否為空if?request.args?is?None:return_dict['return_code']?=?'504'return_dict['return_info']?=?'請求參數為空'return?json.dumps(return_dict,?ensure_ascii=False)#?獲取傳入的參數get_data?=?request.args.to_dict()url?=?get_data.get('url')#?獲取接口參數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)#?字符串轉字典content?=?json.loads(html_item.text)#?獲取視頻相關的信息#?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]#?視頻的評論數#?data['comments']?=?content['item_list'][0]['statistics']['comment_count']#?視頻的點贊數#?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)#?獲取重定向后的鏈接,這個也是無水印視頻的下載鏈接,不過本次沒用redirect?=?response.url#?print(redirect)#?視頻的下載鏈接#?data['videoPlayAddr']?=?redirect#?返回視頻的信息#?return_dict['result']?=?data#?返回結果#?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__":#?本地調試app.run(debug=True)#?部署上線#?app.run(host='127.0.0.1',?port=443)如果本地安裝了Flask以及Requests庫,這個程序是可以直接運行。
并且能夠下載到你所想要的無水印抖音視頻。
#?本地接口 http://127.0.0.1:500/douyin/?url=https://v.douyin.com/CoQBx1/部署到服務器上的話,則需要使用443端口。
具體操作可以看之前幾篇的推文,這里不細說。
原本是部署在33550端口,但是小程序中的接口使用有要求。
不能使用帶有端口號的接口,所以就使用443端口,默認域名訪問。
/ 03 / 總結
還是那句話~
少刷抖音,多看書,一點毛病也沒有。
萬水千山總是情,點個「好看」行不行。
推薦閱讀
···? END? ···
支持小F原創???
總結
以上是生活随笔為你收集整理的用Python下载抖音无水印视频!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【OCR技术系列一】光学字符识别技术介绍
- 下一篇: [Web]Canvas手绘时钟