![[筆記]如何使用 youtube-dl 下載 YouTube 會員限定的影片](https://img.alexleo.click/AlexLeo-youtube-dl_authentication/feature_thumb.jpg)
[筆記]如何使用 youtube-dl 下載 YouTube 會員限定的影片
先說好,你還是要有會員資格才行
首先聲明,這篇筆記基本上是我照著 Dave Parrish’s Blog 上的一篇文章操作的紀錄而已,詳細的解說還是建議各位到他的網站閱讀一下
Dave Parrish – How to download private videos from YouTube with youtube-dl
前置準備,先安裝 youtube-dl
過程並不複雜,這邊大概條列一下:
sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
或者不想用 sudo
:
# 設定自己的 bin 資料夾並加入路徑(記得把 export 加進 .bashrc)
mkdir ~/bin
export PATH=/home/$(whoami)/bin:$PATH
# 下載
wget https://yt-dl.org/downloads/latest/youtube-dl -O ~/bin/youtube-dl
chmod u+x /usr/local/bin/youtube-dl
為什麼不用 --username
選項?
根據小獅自己的經驗,YT 在非公開影片的方面其實相當敏感,youtube-dl
很容易會被判定成機器人(畢竟它就是)
而且比起 session cookie,直接把密碼 pass 給第三方程式對我來說有點…怪怪的
注:我認為 youtube-dl
過去並沒有不良紀錄的這點,說明了它相當值得信任,但原則就是原則(聳肩)
從 Firefox 取出 cookie
因為小獅我使用的是 Firefox 瀏覽器,所以跟 Dave Parrish 不一樣,使用的 Cookie Quick Manager 做示範,不過做的事情是一樣的
直接安裝就好了
▲ 開啟 Cookie Quick Manager 的選單,並點選 Manage all Cookies
▲ 點選 open the dashboard,開啟設定
▲ 找到 Export 選項,選擇 Netscape 為輸出格式
▲ 回到剛才的 cookies 列表,複製以下幾個 Domain 的 cookie 到文字檔
.youtube.com
accounts.google.com
.google.com
.google.com.tw
(如果有的話)
▲ 大概像這樣,這邊的範例存成 cookie.txt
curl -b cookie.txt --cookie-jar cookiejar.txt 'https://youtube.com'
▲ 接下來使用 curl
指令取得 Set-Cookie
訊息,並存至 cookiejar.txt
使用 --cookies
選項進行使用者驗證
加上 --cookies=cookiejar路徑
就可以使用剛才的 cookie 進行使用者驗證了!
youtube-dl \
--format bestvideo+bestaudio \
--write-thumbnail \
-o '[%(upload_date)s]%(title)s-%(id)s.%(ext)s' \
--cookies=cookiejar.txt \
--limit-rate 2M \
https://www.youtube.com/watch\?v\=影片ID
不過我習慣再多加幾個選項
--format
選擇最佳畫面 + 音質(大概會需要安裝ffmpeg
)--write-thumbnail
順便下載封面圖片(請參考之前的:如何幫影片檔設定封面圖片 – 使用 MKV 容器)-o
設定輸出檔名為:[日期]標題-網址.副檔名
--limit-rate
限制下載速度為 2MB/s,避免被 YT 討厭
還是出錯了怎麼辦
像是我在下載 某一部 影片的時候,出現了 403: Forbidden
訊息,通常稍候一下,正常瀏覽一些影片之後,再複製 cookie 試一次就能恢復正常:
~ » youtube-dl --format bestvideo+bestaudio --write-thumbnail -o '[%(upload_date)s]%(title)s-%(id)s.%(ext)s' \
--cookies=cookiejar.txt https://www.youtube.com/watch\?v\=影片ID
影片ID: Downloading webpage
影片ID: Downloading thumbnail ...
影片ID: Writing thumbnail to: ??????.jpg
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
[download] Destination: ??????.f137.mp4
[download] 100% of 2.77GiB in 04:50
ERROR: unable to download video data: HTTP Error 403: Forbidden
又或者,根據上面的訊息,畫面的部份(??????.f137.mp4
)已經下載完成([download] 100%
),所以我們可以用 --format bestaudio
選項,僅下載聲音的部份,之後再使用 MKVToolNix
合成一個檔案就 OK 了!(小獅之前寫過相關的文章)
~ » youtube-dl --format bestaudio -o '[%(upload_date)s]%(title)s-%(id)s.%(ext)s' \
--cookies=cookiejar.txt https://www.youtube.com/watch\?v\=影片ID
影片ID: Downloading webpage
[download] Destination: ??????.webm
[download] 100% of 121.99MiB in 00:12
BTW,使用 --list-formats
可以出這部影片所有可供下載的格式之後,搭配 --format
選項指定
~ » youtube-dl --cookies=cookiejar.txt https://www.youtube.com/watch\?v\=影片ID --list-formats
影片ID: Downloading webpage
[info] Available formats for 影片ID:
format code extension resolution note
249 webm audio only tiny 63k , opus @ 50k (48000Hz), 47.32MiB
250 webm audio only tiny 82k , opus @ 70k (48000Hz), 62.89MiB
140 m4a audio only tiny 137k , m4a_dash container, mp4a.40.2@128k (44100Hz), 121.52MiB
251 webm audio only tiny 157k , opus @160k (48000Hz), 121.99MiB
278 webm 256x144 144p 110k , webm container, vp9, 30fps, video only, 87.74MiB
160 mp4 256x144 144p 137k , avc1.4d400c, 30fps, video only, 99.03MiB
242 webm 426x240 240p 232k , vp9, 30fps, video only, 178.63MiB
133 mp4 426x240 240p 306k , avc1.4d4015, 30fps, video only, 214.13MiB
243 webm 640x360 360p 419k , vp9, 30fps, video only, 326.60MiB
134 mp4 640x360 360p 629k , avc1.4d401e, 30fps, video only, 411.13MiB
244 webm 854x480 480p 773k , vp9, 30fps, video only, 576.20MiB
135 mp4 854x480 480p 1142k , avc1.4d401f, 30fps, video only, 699.80MiB
247 webm 1280x720 720p 1568k , vp9, 30fps, video only, 1.11GiB
136 mp4 1280x720 720p 2300k , avc1.4d401f, 30fps, video only, 1.41GiB
248 webm 1920x1080 1080p 2672k , vp9, 30fps, video only, 2.01GiB
137 mp4 1920x1080 1080p 4613k , avc1.640028, 30fps, video only, 2.77GiB
18 mp4 640x360 360p 606k , avc1.42001E, 30fps, mp4a.40.2@ 96k (44100Hz), 569.40MiB
22 mp4 1280x720 720p 1667k , avc1.64001F, 30fps, mp4a.40.2@192k (44100Hz) (best)
後記
五月已經快過去了呢,不知道 信姫様 回到 戦国時代 的這個月過得怎麼樣呢?
這應該是小獅這個感傷系列的最後一篇了(雖然也才第二篇),如果有不習慣的觀眾請容我在這裡跟大家道歉…
不過,可以自己決定任性,自己承擔結果,不就是個人部落格的最大好處嗎?(笑
您好我對您的文章非常有興趣,但我自己卡在文字檔跟curl的部分,本人年紀不大有些東西不是很懂,希望得到指點
請問你是卡在哪個步驟呢?
Ps. 最近 youtube-dl 正遭受 RIAA(美國唱片業協會)的 DCMA Takedown,可能會比較難更新一點
不好意思,我卡在
curl: (1) Protocol “‘https” not supported or disabled in libcurl
請問該怎麼解決呢?
根據這個提問:
https://stackoverflow.com/questions/6884669/curl-1-protocol-https-not-supported-or-disabled-in-libcurl
若是在 Windows 上,請嘗試使用 雙括號
"
我使用curl -V指令,確定Protocols有列出支援https協議,但仍然跳出上述的問題
您好
請問一下,我依照您的教學步驟操作下來,在”使用 cookie -jar 選項完成認證”,出現了錯誤。
ERROR: This video is available to this channel’s members on level: XXX (or any higher level). Join this channel to get access to members-only content and other exclusive perks.
我有加入頻道的會員。請問是我的操作步驟錯誤了嗎?謝謝
有的時候 youtube-dl 會被 YouTube 擋住,請問更新之後問題仍然持續嗎?
https://github.com/ytdl-org/youtube-dl/releases
執行Youtube 結果出現下面這個
/usr/bin/env: ‘python’: No such file or directory
因為
youtube-dl
需要用到 Python,請先安裝python-dev
或python3-dev
(這邊寫的是 Ubuntu 的套件名稱,如果是別的 OS 還請再提問)請問前面的sudo是下載youtube-dl用的嗎
前面cookie的部分還了解,但從curl -b cookie.txt –cookie-jar cookiejar.txt ‘https://youtube.com’這裡開始就不太懂了
這些東西要在哪裡輸入呢?
wget
指令加上sudo
是為了寫入到/usr/local/bin
目錄(權限:root:root)curl -b cookie.txt --cookie-jar cookiejar.txt 'https://youtube.com'
是在終端機輸入喔!假設上一步的
cookie.txt
是存在/home/ubuntu/
底下,請先cd /home/ubuntu
跳過去請問window10要怎樣執行curl -b cookie.txt –cookie-jar cookiejar.txt ‘https://youtube.com’
不好意思我是小白不太懂
請試試在 PowerShwll 中執行,
curl
指令在 1709 更新之後應該就有了幫大忙了!!非常感謝!!!
可以下載playlist嗎
可以喔!
以 YouTube 來說的話:
https://www.youtube.com/watch?v=XXXXXXXXXXX <– 這是影片
https://www.youtube.com/playlist?list=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX <– 這是播放清單
只要把連結替換過去的話也可以下載正個清單,但是要注意若是清單太長的話,YouTube 很可能會在下載完成之前把連線切掉,請調低下載速度之後再試一次即可
想問一下有辦法設定下載的封面圖尺寸嗎
用 youtube-dl –merge-output-format mp4 –playlist-reverse –max-downloads 10 -o “%(autonumber)s-[%(upload_date)s]%(title)s-%(id)s.%(ext)s” –write-thumbnail
結果下載的封面是336188
下載另一個清單每一部都正常是1280720
上面下載2個封面圖都那大小就先停止了
封面尺寸要看 YT 有什麼可以載,youtube-dl 預設會載最大的
如果是舊的影片,很常是沒有 1280*720 可以選
非常开心看到你的贴子,请问有办法可以下载天狗卫视的会员区视频吗?有两个片子无法观看,万分感谢。盼回复
若是
youtube-dl
沒有辦法的話,我也不確定有哪些工具可以用了感謝你的回覆
萬分感謝大大分享此方法….我要再找時間透徹研究怎麼用這個方法載可可會長的會限影片
可以的話希望也能請大大為小弟解答一些疑惑點
原來也是桐生會的嗎(握手)
有哪個步驟遇到問題了呢?
您好, 請問我依照教學, 在”使用 cookie -jar 選項完成認證”,顯示
ERROR: Join this channel to get access to members-only content like this video, and other exclusive perks.
已經加入頻道的會員, 最新版本 etc.請問要如何更正?
有的時候會遇到這樣的情況,通常隔天重新做一次 cookie jar 就能夠成功(我也不知道為什麼)
另外也請檢查一下版本(目前是 2021.06.06)
youtube-dl --version
用以下指令更新
youtube-dl --update
你好 , 我也是相同情況確定是最新版, 且也為會員, 但試了好久都是相同的警語, 是否這個方法已經無法下載會限影片了呢, 有其他替代方案嗎
curl:(6) could not resolve host 有辨法解决嗎?
通常是 DNS 有問題
請問你是用哪個 DNS 呢?
或者改用以下指令,直接指定 curl 使用的 DNS 試試
curl --dns-servers 1.1.1.1 -b cookie.txt --cookie-jar cookiejar.txt 'https://youtube.com'
請問一下,輸入下載指令後出現 不是內部或外部命令、可執行的程式或批次檔。 然後無法下載,請問該怎麼辦?
你指的是
curl
指令嗎?如果你使用 Windows,可能需要先安裝 Cygwin
您好
請問cookie是acounts.google.com
還是accounts.google.com呢?
我在Cookie Quick Manager 裡只有看到accounts.google.com
acounts.google.com是空白的是正常的嗎?
啊… 應該是我的疏忽,
accounts.google.com
才是正確的感謝提醒 TAT
不好意思請問一下,我在cookiejar.txt這步遇到困難,我已經複製好相關cookie並存成cookie.txt,但在輸入curl -b cookie.txt –cookie-jar cookiejar.txt ‘https://youtube.com’後cmd沒有任何反應,也沒有找到cookiejar.txt的檔案,是那一步出錯了?
請問
curl
指令的那一段是直接複製貼上的嗎?可以再幫我試一次嗎?沒有錯誤訊息的話我也不知道該怎麼辦 Orz
我碰到过,我的情况是将“cookie.txt”换成 “C:\Users\xx\Downloads\cookie.txt”(就是文件所在的位置)就可以了
curl -b “C:\Users\xx\Downloads\cookie.txt” –cookie-jar cookiejar.txt ”https://youtube.com“
原來會限也可以抓, 照步驟已測試成功. 明天IRyS會限刪檔歌回就靠你這篇文了.
您好按照步驟在dl 下載後也設定環境變數了, 但在指令中打youtube-dl確認後出現 “不是內部或外部命令、可執行的程式或批次檔。” 的訊息 , 還有cookiejar.txt這步遇到困難,複製好相關cookie並存成cookie.txt,但在輸入curl -b cookie.txt –cookie-jar cookiejar.txt ”https://youtube.com“
出現”curl: (6) Could not resolve host: cookiejar.txt”這個訊息 , 完全不知道哪裡出錯了
按照樓上將“cookie.txt”换成 “C:\Users\xx\Downloads\cookie.txt”(就是文件所在的位置)的方式還是出現一樣的訊息 , 不知道您有沒有discord 能否教學一下 我願意付費學習
已經搞了一個下午了還是完全不行
你好 請問輸入完這串youtube-dl \ –format bestvideo+bestaudio \ –write-thumbnail \ -o ‘[%(upload_date)s]%(title)s-%(id)s.%(ext)s’ \ –cookies=cookiejar.txt \ –limit-rate 5M \ https://www.youtube.com/watch?v=該影片ID
但是會跑出ERROR: ‘\’ is not a valid URL. Set –default-search “ytsearch” (or run youtube-dl “ytsearch:\” ) to search YouTube
要怎麼解決
根據錯誤訊息,我猜測是接續符號
\
的關係,在範例中為了讓大家比較方便閱讀,我把指令切成多行。如果你偏好使用單行指令,請將
\
去掉即可!ERROR: This video is available to this channel’s members on level: (or any higher level). Join this channel to get access to members-only content and other exclusive perks.
‘ab_channel’
剛剛看了一下 希望明天重抓cookie後能解決QQ
你好, 請問dl下載會員限定影片是不是被youtube擋了, 打了指令後出現Join this channel to get access to members-only content like this video, and other exclusive perks. 我已經是會員了,還是無法下載, 卻頂版本是最新的2021 6/6 , 試了兩天還是不行
全程按照你的步驟,cookiejar.txt也有出現,到最後一步要下載影片時出現
[youtube] (影片id): Downloading webpage
ERROR: Join this channel to get access to members-only content like this video, and other exclusive perks.
確定有頻道會員,youtube dl也是最新版,請問是遇到什麼問題呢?
最近 youtube-dl 終於有更新了(2021.12.17),或許會有用,有空我再來試試
我後來是使用 yt-dlp(https://github.com/yt-dlp/yt-dlp)來下載
贡献一个我的情况, 我是用youtube-dl会出现下载速度在70K左右的情况,在reddit查了下,这是因为youtube对youtube-dl进行了限制导致的,目前youtube-dl并没有针对这个进行更新,但是另外一个fork版本yt-dlp对这个进行了修复,想要使用yt-dlp很简单,在下载步骤中使用
sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
sudo chmod a+rx /usr/local/bin/yt-dlp
命令,然后再后面的下载视频步骤中把
youtube-dl \
–format bestvideo+bestaudio \
–write-thumbnail \
-o ‘[%(upload_date)s]%(title)s-%(id)s.%(ext)s’ \
–cookies=cookiejar.txt \
–limit-rate 2M \
https://www.youtube.com/watch\?v\=影片ID
改成
yt-dlp \
–format bestvideo+bestaudio \
–write-thumbnail \
-o ‘[%(upload_date)s]%(title)s-%(id)s.%(ext)s’ \
–cookies=cookiejar.txt \
–limit-rate 2M \
https://www.youtube.com/watch\?v\=影片ID
即可(没有markdown真的好讨厌XD
下载速度受限的同学可以使用yt-dlp 只需下载部分改一下就好了,参数和youtube-dl一样。
同意,目前 yt-dlp 更新比較快,如果以 youtube 為主,推薦改用這個!
你好,在輸入步驟中curl指令後,cmd彈出”curl: (3) URL using bad/illegal format or missing URL”並無法進入下一步,應如何解決?謝謝
可以告訴我你用的環境嗎? Windows+Cygwin? 還是 Linux/MacOS?
或者你也可以先改用雙引號試試:
curl -b cookie.txt --cookie-jar cookiejar.txt "https://youtube.com"
curl -b cookie.txt –cookie-jar cookiejar.txt ‘https://youtube.com’
這邊顯示 找不到接受引數 cookiejar.txt的位置參數
請幫幫我
我在 入步驟中curl指令後 出現這個,請問我可以如何除錯呢? (0x80092012) – 撤銷功能無法檢查憑證的撤銷。
請問youtube-dl 還能用嗎?
感覺都安裝正確但~輸入後
youtube-dl –cookies=cookiejar.txt
–limit-rate 2M https://www.youtube.com/watch\?v\=影片ID
什麼訊息都沒顯示