摘要:我們知道,在抖音中下載到的視頻是有水印的,這就催生出了很多抖音短視頻去水印的解析網站,小程序等。禁止重定向,設置運行結果,是一個標簽,便是重定向后的地址。
我們知道,在抖音APP中下載到的視頻是有水印的,這就催生出了很多抖音短視頻去水印的解析網站,小程序等。所以說,抖音短視頻去水印這個東西并不是什么新鮮玩意兒,甚至你可以很輕松的在網上搜到抖音去水印的程序源代碼。
本文主要是從爬蟲程序的角度,講解遇到這樣的問題我們應該如何分析,如何抓包,如何一步步寫出自己的爬蟲,讓大家明白去水印的接口是怎么找到的,網上的代碼是怎么寫出來的。
我會盡量講解細致一些,爭取讓初學者也能看懂。
話不多說,我們開始。
首先,從分享鏈接入手,在抖音APP中分享視頻,點擊復制鏈接,即可得到如下所示的分享文字。
1.25 GiC:/ 我把自己拍尷尬了 https://v.douyin.com/RCxwDgH/ 復制此鏈接,打幵Dou音搜索,直接觀看視頻!
其中關鍵的部分 https://v.douyin.com/RCxwDgH/
復制到瀏覽器中打開后,會跳轉到一個網頁
網址是: https://www.douyin.com/video/6858559656789314823?previous_page=app_code_link
我們會發現,網頁中的這個視頻,是沒有水印的!!!
也就是說,我們只需要把網頁中的這個視頻下載下來就可以了。
如果你想手動下載的話,其實很簡單。
打開瀏覽器的開發者工具,切換到 Network,過濾器選擇 Media,然后刷新網頁,這時候就會發現抓到一個請求包。
復制 URL 打開,鼠標右鍵,視頻另存為就可以下載了。
無水印視頻鏈接:https://v26-web.douyinvod.com/f86f203fbba3d04f481c7af6acc511fa/61975068/video/tos/cn/tos-cn-ve-15/c4e41d807c5c4f94952663c2309fa3fa/?a=6383&br=1481&bt=1481&cd=0%7C0%7C0&ch=26&cr=3&cs=0&cv=1&dr=0&ds=6&er=&ft=VgcwUVIIL7ThWHVQJoAGZ&l=021637302857724fdbddc0200ff2f010a9f221d00000033acdf08&lr=all&mime_type=video_mp4&net=0&pl=0&qs=0&rc=anB0Mzo8Ojs6djMzOmkzM0ApPGY3NWg0NGQ0NzQ7aDU1O2c2ajZfLzNuc2tfLS0yLTBzczAzNjIzXmIvLzEvYS80YGM6Yw%3D%3D&vl=&vr=
如果大家臨時有視頻去水印的需求,又不想寫代碼時,可以試試這個方法。
手動抓包確實簡單有效,但是我們目標還是想用代碼的方式,來實現一鍵解析和視頻下載。這樣純手動下載顯然達不到我們的要求。
我們重新回過頭來捋一捋。
首先,我們訪問 https://v.douyin.com/RCxwDgH/ 網址時,會重定向跳轉到一個別的網址。
這個重定向的過程在瀏覽器中是一瞬間完成的,這個過程中發生了什么我們并不清楚,不過我們可以通過 Python 來發起請求。
import requestsheaders = { "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",}url = "https://v.douyin.com/RCxwDgH/"# 禁止重定向,設置 allow_redirects=Falser = requests.get(url, headers=headers, allow_redirects=False)print(r.text)
運行結果,是一個 a
標簽,href
便是重定向后的地址。
不過,關于重定向的情況,一般我們獲取它的 r.headers
在其中查找 location
的值。
獲取到重定向后的地址之后,我們訪問該地址。
https://www.iesdouyin.com/share/video/6858559656789314823/?region=CN&mid=6854453604732930830&u_code=g7cdm25h&did=MS4wLjABAAAAJpp7hV0jI_UmBK5e8bohlVWuTbp5g5YP9t7IyMG2Skw&iid=MS4wLjABAAAA7B2f-zA3mnMTjsIabum2jA5-w3x1-8wwtcAhpEGVySs&with_sec_did=1&titleType=title&utm_source=copy&utm_campaign=client_share&utm_medium=android&app=aweme
注:這里有個小坑,如果你用 PC 瀏覽器直接訪問這個地址的話,它又會跳轉到另一個網址 https://www.douyin.com/video/6858559656789314823?previous_page=app_code_link
;而用手機瀏覽器訪問的話,地址則維持不變(在開發者工具中,點擊圖中箭頭所指的位置,可以切換成手機瀏覽器模式)。
而我們破解無水印短視頻的關鍵接口,在手機瀏覽器模式下訪問才能抓到。
視頻信息接口:https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=6858559656789314823
只有一個參數 item_ids
,而它的值在前面重定向的鏈接中可以獲取到。
無水印視頻鏈接就在 item_list[0]
-> video
-> play_addr
-> url_list[0]
。
無水印視頻鏈接:https://v6-z.douyinvod.com/21880dfba8d9ab45fff8993ca2c35176/619741c7/video/tos/cn/tos-cn-ve-15/c4e41d807c5c4f94952663c2309fa3fa/?a=1128&br=1481&bt=1481&cd=0%7C0%7C0&ch=96&cr=0&cs=0&cv=1&dr=0&ds=6&er=&ft=5f4rKJmmnPNJ2Xh7ThWwkXAGfdH.Co5TpBZc&l=202111191318320102121980270E038AAF&lr=all&mime_type=video_mp4&net=0&pl=0&qs=0&rc=anB0Mzo8Ojs6djMzOmkzM0ApPGY3NWg0NGQ0NzQ7aDU1O2cpaHV2fWVuZDFwekA2ajZfLzNuc2tfLS0yLTBzczAzNjIzXmIvLzEvYS80YGM6Y29zYlxmK2BtYmJeYA%3D%3D&vl=&vr=
上述我們通過兩種方法,手動抓包和代碼的方式獲取到了抖音去水印的視頻鏈接。
接下來我們編寫代碼,完成我們的爬蟲程序。
首先是一些準備工作,導入需要的庫
import requestsimport json
根據 短分享鏈接
獲取重定向后的 長分享鏈接
的函數
def get_share_url(url): 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", } try: r = requests.get(url, headers=headers, allow_redirects=False) return r.headers["location"] except Exception as e: print("解析失敗") print(e)
根據 長分享鏈接
獲取 無水印視頻下載鏈接
的函數
def get_video_url(url): try: 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", } vid = url.split("/?")[0].split("video/")[1] xhr_url = f"https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids={vid}" r = requests.get(xhr_url, headers=headers).json() video_url = r["item_list"][0]["video"]["play_addr"]["url_list"][0] return video_url except Exception as e: print("解析失敗") print(e)
下載視頻的函數
def download_video(url): 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", } try: r = requests.get(url, headers=headers) with open("video.mp4", "wb") as f: f.write(r.content) except Exception as e: print("下載失敗") print(e)
以及主函數
if __name__ == "__main__": # 抖音APP分享的短鏈接 url = "https://v.douyin.com/RCxwDgH/" share_url = get_share_url(url) video_url = get_video_url(share_url) download_video(video_url) print("下載完成")
整理一下代碼,完整代碼如下:
import requestsimport jsonheaders = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3904.108 Safari/537.36",}def get_share_url(url): try: r = requests.get(url, headers=headers, allow_redirects=False) return r.headers["location"] except Exception as e: print("解析失敗") print(e) def get_video_url(url): if not url: return try: vid = url.split("/?")[0].split("video/")[1] xhr_url = f"https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids={vid}" r = requests.get(xhr_url, headers=headers).json() video_url = r["item_list"][0]["video"]["play_addr"]["url_list"][0] return video_url except Exception as e: print("解析失敗") print(e) def download_video(url, name): if not url: return try: r = requests.get(url, headers=headers) with open(name + ".mp4", "wb") as f: f.write(r.content) print("下載完成") except Exception as e: print("下載失敗") print(e) if __name__ == "__main__": # 抖音APP分享的短鏈接 url = "https://v.douyin.com/RCxwDgH/" name = "video2" share_url = get_share_url(url) video_url = get_video_url(share_url) download_video(video_url, name) print("Finished")
運行代碼,可以成功解析并下載到無水印視頻。
在這個爬蟲的研究過程中,讓我有幾點收獲,跟大家分享一下
網址重定向問題,可以在 requests.get
函數中,設置參數 allow_redirects=False
來禁止重定向,這樣我們可以細致的了解到 url 請求的整個過程。
headers
中的 user-agent
不同,獲取到的數據可能也不同,本文的爬蟲即是這樣,使用 PC瀏覽器和手機瀏覽器的 UA
,會跳轉至不同的頁面。
如果文章中有哪里沒有講明白,或者講解有誤的地方,歡迎在評論區批評指正,或者掃描下面的二維碼,加我微信,大家一起學習交流,共同進步。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/124099.html
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
摘要:比如分鐘破譯朋友圈測試小游戲文章里用的方法但有些根本就沒有提供網頁端,比如今年火得不行的抖音。所以常用的方式就是通過在電腦上裝一些抓包軟件,將手機上的網絡請求全部顯示出來。總結下,重點是的抓取,關鍵是配置代理證書,難點是對請求的分析。 爬蟲的案例我們已講得太多。不過幾乎都是 網頁爬蟲 。即使有些手機才能訪問的網站,我們也可以通過 Chrome 開發者工具 的 手機模擬 功能來訪問,以便...
摘要:所以我們就要通過抓包工具來獲取到請求與響應的信息。關于抓包工具有等。中的可以根據自己要爬取的用戶更改,可以通過把用戶分享到微信,然后在瀏覽器中打開鏈接,在打開的中可以看到用戶的。運行后就可以得到視頻列表有任何疑問,歡迎加我微信交流。 APP抓包 前面我們了解了一些關于 Python 爬蟲的知識,不過都是基于 PC 端瀏覽器網頁中的內容進行爬取。現在手機 App 用的越來越多,而且很多也...
摘要:仿抖音短視頻小程序開發一項目的簡介仿抖音短視頻小程序開發二項目功能分析與具體實現源代碼仿抖音短視頻小程序開發全棧式實戰項目短視頻后臺管理系統小程序的后臺管理系統涉及的技術棧框架一用戶列表的獲取與分頁前端代碼用戶列表展示的表格底部 SpringBoot 仿抖音短視頻小程序開發(一):項目的簡介(https://segmentfault.com/a/11...SpringBoot 仿抖音短...
摘要:我發現抖音上很多小姐姐就拍個跳舞的視頻就火了,大家是沖著舞蹈水平去的嗎,都是沖著顏值身材去的,能刷到這篇文章的都是了,我就跟大家不一樣了,一個個刷太麻煩了,我直接爬下來看個夠,先隨意展示兩個。 我發現抖音上很多小姐姐就拍個跳舞的視頻就火了,大家是沖著舞蹈水平去的嗎,都是沖著顏值身材去的,能刷...
閱讀 3020·2023-04-25 18:00
閱讀 2221·2021-11-23 10:07
閱讀 4060·2021-11-22 09:34
閱讀 1248·2021-10-08 10:05
閱讀 1571·2019-08-30 15:55
閱讀 3434·2019-08-30 11:21
閱讀 3338·2019-08-29 13:01
閱讀 1378·2019-08-26 18:26