Table of Contents
Open Table of Contents
🚨 注意事項
Youtube 官方有明訂 服務條款,請務必遵守相關規定,並尊重影片製作者的版權。
不得進行以下事項,存取、重製、下載、發布、傳輸、播送、顯示、出售、授權、修改、變更或以任何其他方式使用本「服務」的任何部分或任何「內容」,除非您 (a) 取得本「服務」的明確授權;或是 (b) 取得 YouTube 和相關著作權人 (如適用) 的事先書面許可。
🪧 以下指令皆為 研究 與 學術 用途,並未推廣任何 “下載” 與 “分享” 影片致違反 著作權法 與 版權 等行為,若有個人行為造成侵權,請自行負責。
簡介
yt-dlp 是一個非常熱門的影片下載開源工具,如果你也有一點前端工程的基礎,有能力從頁面找出影片的網址,那麼 yt-dlp 絕對是幫你實現 「看得到就抓得到」 的好幫手。
這篇會紀錄面對不同類型的情境,你可以如何調整指令與參數內容等,可以順利抓取影片。
安裝
可以直接到 yt-dlp 下載執行檔,或是透過 Homebrew 安裝:
brew install yt-dlp
影片類型與指令指南
1. Youtube 公開影片或播放清單
將帶有 https://www.youtube.com/watch?v=...
的網址,直接帶入 yt-dlp 指令
# 預設是帶 `-f bestvideo*+bestaudio/best` 參數,自動下載最佳畫質與音質。
yt-dlp "https://www.youtube.com/watch?v=PldGjHwhdtE"
# 列出可下載的格式
yt-dlp --list-formats "https://www.youtube.com/watch?v=PldGjHwhdtE"
# 下載指定格式(可用參考格式請參考 `--list-formats`)
# yt-dlp -f #{format id} "https://www.youtube.com/watch?v=PldGjHwhdtE"
yt-dlp -f 22 "https://www.youtube.com/watch?v=PldGjHwhdtE"
2. Youtube 私人影片或登入後才能觀看的影片
請先在對應的瀏覽器登入 Youtube 帳號,並取得 cookie,再執行下列指令。
# 填寫你已登入的瀏覽器名稱,可以是 brave, chrome, chromium, edge, firefox, opera, safari, vivaldi, whale
yt-dlp --cookies-from-browser chrome "https://www.youtube.com/watch?v=9Kz5vf_uNfs"
3. HLS 串流影片
找到 video source
的網址,直接帶入 yt-dlp 指令
通常會是 .m3u8
或是 m3u
的檔案網址,另外要注意的是這類的影片可能會有加密的問題。
📌 如果影片有加密,會需要先在檔案中補上對應的解密資訊,再執行以下指令,
例如: video.m3u8
檔案內容如下
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:12
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
👇 若影片有加密,請先確定有這行資訊的存在
#EXT-X-KEY:METHOD=AES-128,URI="data:application/octet-stream;base64,dGVzdA==",IV=0x5ee252b312f057d3deab6f98b5e48407
👆 從 devtool 及 network 追 code 可以找到對應的 key URI 與 IV 值
#EXTINF:12.000000,
https://example.com/video.ts
# 不是會員系統的公開影片網址
yt-dlp "https://example.com/video.m3u8"
# 需要會員系統登入後才能觀看的影片網址
yt-dlp --cookies-from-browser chrome "https://example.com/video.m3u8"