Featured image of post yt-dlp 登入並下載影片

yt-dlp 登入並下載影片

↩️回總教學文

帳號密碼登入

某些內容會指定必須要認證身分\(登入\)後,才能觀看
這種情況下, yt-dlp 有提供輸入簡單的帳號密碼的參數

  • -u, --username USERNAME 輸入帳號
  • -p, --password PASSWORD 輸入密碼

範例

>_ terminal
1
yt-dlp --username "[email protected]" --password "P@ssw0rd" "https://www.youtube.com/watch?v=dQw4w9WgXcQ"

目前只剩部分網站可以用這種方法登入。
Google 有更新過 youtube 帳號的取用安全性,只能用下面的 Cookie 方式登入。

yt-dlp 可以使用 Netscape 格式的 cookie 檔案,讓伺服器端認定為已登入帳號的瀏覽器

我們可以用 EditThisCookie 幫我們匯出 Cookie

EditThisCookie Chrome擴充商店

安裝完後,進入 EditThisCookie 的設定

將輸出格式選擇 Netscape 格式

接著建立 cookie.txt 文字檔

建立完後我們到 https://youtube.com
用 EditThisCookie 插件的匯出功能複製所有 cookie

將複製到的文字貼到 cookie.txt

貼完後照前面的步驟,抓出 https://accounts.google.com 的 cookie

都完成後 cookie.txt 大概會長這個樣子

</> txt
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by Cookie Editor
.youtube.com	TRUE	/	TRUE	1712544730	__Secure-1PAPISID	XXXXX
.youtube.com	TRUE	/	TRUE	1712544730	__Secure-1PSID	XXXXX
.youtube.com	TRUE	/	TRUE	1712544730	__Secure-3PAPISID	XXXXX
.youtube.com	TRUE	/	TRUE	1712544730	__Secure-3PSID	XXXXX
.youtube.com	TRUE	/	TRUE	1681127908	__Secure-3PSIDCC	XXXXX
.youtube.com	TRUE	/	FALSE	1687764170	_ga	XXXXX
.youtube.com	TRUE	/	FALSE	1654529554	_gcl_au	XXXXX
.youtube.com	TRUE	/	FALSE	1712544730	APISID	XXXXX
.youtube.com	TRUE	/	FALSE	1712544730	HSID	XXXXX
.youtube.com	TRUE	/	TRUE	1664713150	LOGIN_INFO	XXXXX
.youtube.com	TRUE	/	TRUE	1712663916	PREF	XXXXX
.youtube.com	TRUE	/	TRUE	1712544730	SAPISID	XXXXX
.youtube.com	TRUE	/	FALSE	1712544730	SID	XXXXX.
.youtube.com	TRUE	/	FALSE	1681127908	SIDCC	XXXXX
.youtube.com	TRUE	/	TRUE	1712544730	SSID	XXXXX
.youtube.com	TRUE	/	TRUE	1665142416	VISITOR_INFO1_LIVE	XXXXX
.youtube.com	TRUE	/	FALSE	0	wide	0
.youtube.com	TRUE	/	TRUE	0	YSC	XXXXX

# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by Cookie Editor
.google.com	TRUE	/	TRUE	1712494597	__Secure-1PAPISID	XXXXX
.google.com	TRUE	/	TRUE	1712494597	__Secure-1PSID	XXXXX
.google.com	TRUE	/	TRUE	1712494597	__Secure-3PAPISID	XXXXX
.google.com	TRUE	/	TRUE	1712494597	__Secure-3PSID	XXXXX
.google.com	TRUE	/	TRUE	1681128005	__Secure-3PSIDCC	XXXXX
.google.com	TRUE	/	TRUE	1652183330	1P_JAR	XXXXX
.google.com	TRUE	/	TRUE	1663206405	AEC	XXXXX
.google.com	TRUE	/	FALSE	1712494597	APISID	XXXXX
.google.com	TRUE	/	FALSE	1712494597	HSID	XXXXX
.google.com	TRUE	/	TRUE	1665402835	NID	XXXXX
.google.com	TRUE	/	FALSE	1651150185	OGP	XXXXX
.google.com	TRUE	/	FALSE	1651150184	OGPC	XXXXX
.google.com	TRUE	/	TRUE	1712494597	SAPISID	XXXXX
.google.com	TRUE	/	FALSE	1712494597	SID	XXXXX
.google.com	TRUE	/	FALSE	1681128005	SIDCC	XXXXX
.google.com	TRUE	/	TRUE	1712494597	SSID	XXXXX
myaccount.google.com	FALSE	/	TRUE	1712544729	__Secure-OSID	XXXXX
myaccount.google.com	FALSE	/	TRUE	1712544729	OSID	XXXXX
myaccount.google.com	FALSE	/	TRUE	1652064730	OTZ	XXXXX

重整格式

接著我們將剛剛的 cookie.txt 用 curl 重新整理格式

>_ terminal
1
curl -b cookie.txt --cookie-jar ytcookie.txt 'https://youtube.com'

若是 Windows 的用戶,可以使用 Windows subsystem linux (WSL) 跑 Linux 的程式

執行完後 cookie.txt 就可以刪了,我們只要 ytcookie.txt 這個檔案

ytcookie.txt 要取甚麼名字都可以

--cookie 設定我們剛剛做好的 ytcookie.txt 就可以了

>_ terminal
1
yt-dlp --cookie ./ytcookie.txt "https://www.youtube.com/watch?v=dQw4w9WgXcQ"

接下來只要你沒在瀏覽器內登出帳號,ytcookie.txt 理論上就能一直使用

當然,網站那邊可能也會紀錄是這個帳號在下載影片…

↩️回總教學文

使用 Hugo 建立
主題 StackJimmy 設計