一、前言
本文為兩類人準備:技術控和工具控。
- 如果你是工具控,想簡單方便地下載無水印的視頻,那么可以使用第三方去水印平臺:
抖音短視頻解析下載平臺
- 如果你是技術控,想要使用自己寫的代碼下載視頻,那么可以使用本文的方法,用python寫爬蟲下載視頻,最新開源項目:
Python3批量下載抖音無水印視頻
本文的代碼已經不是最新的,但是抓取思路就是如此,可以參考,代碼可以直接運行使用,持續維護中。
更新日志
- 2018.5.23:github代碼已經修復無法下載問題。
- 2018.7.17:github代碼已經修復參數驗證問題。
- 2018.11.07:api更新
二、實戰背景
抖音越來越火,感覺它有毒,越刷越上癮,總感覺下一個視頻一定會更精彩,根本停不下來。想將抖音里喜歡的小哥哥/小姐姐的視頻全部存到電腦硬盤里該如何操作?不想有抖音的視頻水印該如何處理?
當初寫完代碼的截屏:
三、實戰
首先,希望你已經具備手機APP抓包分析的能力
1、帶水印視頻下載
先說說帶水印的視頻如何抓去吧。在定好爬取目標的時候,我們應該知道自己需要那些步驟完成這項任務。比如本文中提到的任務:抖音APP固定用戶的視頻批量下載。
思考過程:
- 想要批量下載視頻首先要獲得這些視頻的鏈接;
- 想要獲得這些視頻鏈接可以通過用戶的主頁進行查看,想進用戶主頁,我得知道用戶主頁鏈接;
- 用戶主頁鏈接可以通過抖音APP的搜索功能獲取,那么搜索功能接口如何獲取?當然是抓包看看嘍!
瞧,這樣思考下來,問題是不是梳理的很清楚?
搜索接口:
那么接下來就是抓包分析了,抓包過程請自行嘗試。步驟是這樣的:
- 配置好Fiddler,即確定Fiddler可以對手機APP進行抓包;
- 在手機APP搜索框中輸入用戶信息,點擊搜索;
- 在Fiddler找到搜索接口;
- 分析這個接口傳遞參數規則;
- 寫代碼生成相應查詢接口。
通過分析你會發現,我們通過搜索接口返回的JSON數據可以找到用戶主頁信息,接下里用同樣的方法抓取主頁用戶信息再分析一波,這時候就遇到問題了,你會發現用戶主頁鏈接使用了as和cp參數進行了加密,這該如何是好?比如鏈接如下:
上述鏈接省略號部分是一些手機信息,這部分不是必須參數,可以省略。user_id是用戶id可以通過上個搜索接口獲取,count是用戶視頻數量,同樣可以通過上個搜索接口獲取。那最后的as和cp參數怎么辦?
我沒有逆向抖音APP,就是小小測試了一下,看看能不能繞過這個加密接口?抖音APP自帶視頻分享功能,分享鏈接格式如下:
https://www.douyin.com/share/video/6511132370416962829/?region=CN...share_iid=28037626243
中間參數都不重要,在此省略。www.douyin.com域名下存放的是分享的視頻,那么這個用戶主頁信息是否可以通過這個域名進行訪問呢?小小測試一下你會發現,完全沒有問題!
https://www.douyin.com/aweme/v1/aweme/post/?user_id=63386731255&max_cursor=0&count=20
這就是沒有加密的接口,驚不驚喜,意不意外?根據這個用戶主頁接口,我們就可以輕松獲取用戶主頁所有的視頻鏈接了。
2、無水印視頻下載
方法一:
無水印視頻下載很簡單,有一個通用的方法,就是使用去水印平臺即可。
我使用的去水印平臺是:http://douyin.iiilab.com/
在輸入框中輸入視頻鏈接點擊視頻解析,就可以獲得無水印視頻鏈接。
這個網站當初我寫代碼的時候是好使的,當初用這個網站下了一些無水印視頻,不過寫這篇文章的時候發現這個取水印平臺無法正常解析了,等它修復好了再用這個功能吧。
這個平臺不僅包括抖音視頻去水印,還支持火山、快手、陌陌、美拍等無水印視頻。所以做一個這個網站的接口還是很合適的。
簡單測試了一下,這個網站的API是需要付費解析的,如果通過模擬請求的方式有些困難,因此決定上瀏覽器模擬器Splinter。
Splinter是個好東西,跟Selenium使用類似
這里使用方法就不累述,不過有一點可以說的是,我們可以配置headless參數,來將Splinter配置為無頭瀏覽器,啥事無頭瀏覽器呢?就是運行Splinter不調出瀏覽器界面,直接在后臺模擬各種請求,很是方便。
這部分的代碼很簡單,無非就是填充元素,確定解析按鈕位置,點擊按鈕,獲取視頻下載鏈接即可。這點小問題,就自行分析吧。
整體代碼:
方法二:
這個方法是通過網友@羽葵的反饋得知的,對下載鏈接直接修改即可得到無水印下載鏈接。
download_url = video_html['video']['play_addr']['url_list'][0].replace('playwm','play')
方法簡單粗暴,很好用。好處就是處理速度飛快,缺點是這種方法通用性不強,不同視頻發布平臺的打碼方法可能有不同,需要自行分析。
四、總結
玩爬蟲的日子還是很有意思的,好久沒有那種舒爽感了。還有,找工作也是蠻心累的事。