懶人包
Could not copy Chrome cookie database的原因是 Windows 上的 Chrome/Edge 開著時會鎖住 cookie 資料庫,yt-dlp 複製不出來,底層是PermissionError: [Errno 13]。- 我在 Chrome 156.0.8078.76 實測:issue 裡流傳的
--disable-features=LockProfileCookieDatabase已經沒用,加了照樣被鎖。- 把那個 Chrome 完全關掉,同一個 profile 馬上讀得到 cookie(
Extracted 1 cookies from chrome)。- 不想關瀏覽器,就匯出 Netscape 格式的
cookies.txt用--cookies帶入;我用--print-traffic確認 cookie 真的有送出去。- 新版 Chrome 的 cookie 加密(yt-dlp issue #10927,到 2026-11-03 還 open)可能讓「關掉再讀」也失敗,
cookies.txt是最不受瀏覽器版本影響的路線。
這篇的起點是一支 Facebook Reel。我要拿 yt-dlp 抓下來轉逐字稿,但 Reel 要登入才看得到,不帶 cookie 的 yt-dlp 只回 ERROR: [facebook] 1849843922697876: Cannot parse data。照 yt-dlp 的標準做法加上 --cookies-from-browser chrome,換成另一個錯誤:
ERROR: Could not copy Chrome cookie database. See https://github.com/yt-dlp/yt-dlp/issues/7271 for more info
我在 Windows 11 上把四種做法各跑一次,用 httpbin.org/cookies 當測試目標,看 cookie 到底有沒有被讀到、有沒有被送出。
為什麼會出現 Could not copy Chrome cookie database?
yt-dlp 讀 Chromium 系瀏覽器的 cookie 時,會先把 profile 裡的 Network\Cookies(一個 SQLite 檔)複製到暫存資料夾再打開。Windows 版 Chrome 執行中會鎖住這個檔,複製就失敗。加 -v 可以看到完整的錯誤:
[debug] Extracting cookies from: "C:\Users\user\AppData\Local\Google\Chrome\User Data\Profile 1\Network\Cookies"
ERROR: Could not copy Chrome cookie database. See https://github.com/yt-dlp/yt-dlp/issues/7271 for more info
File "...\yt_dlp\cookies.py", line 1115, in _open_database_copy
PermissionError: [Errno 13] Permission denied: '...\Profile 1\Network\Cookies'
Edge 也一樣。我同時開著 Chrome 和 Edge,--cookies-from-browser edge 回的是同一句 Could not copy Chrome cookie database,因為 yt-dlp 用同一段程式處理所有 Chromium 系瀏覽器。issue #7271 的維護者說明也是這樣:這個問題影響 Windows 版 Chrome 和 Edge 等 Chromium 系瀏覽器。
我的測試環境
| 項目 | 版本 |
|---|---|
| 作業系統 | Windows 11(10.0.26300) |
| Chrome | 156.0.8078.76 |
| Edge | 156.0.4314.58 |
| yt-dlp | 2026.03.17(pip 安裝) |
--user-data-dir 指到測試資料夾(下面指令用 C:\temp\chrome-test-profile 代表),先打開 https://httpbin.org/cookies/set?yc_test=hello123 寫一個測試 cookie。
四種做法實測結果
| 做法 | 結果 | 代價 |
|---|---|---|
Chrome 開著直接 --cookies-from-browser chrome | 失敗,Errno 13 | 無 |
Chrome 加 --disable-features=LockProfileCookieDatabase 啟動 | 失敗,同一個錯誤 | 要改捷徑、重開瀏覽器 |
| 把 Chrome 完全關掉再讀 | 成功,讀到 1 個 cookie | 下載期間不能開瀏覽器 |
匯出 cookies.txt 用 --cookies 帶入 | 成功,請求帶著 cookie 送出 | 要裝匯出擴充功能,cookie 過期要重匯 |
LockProfileCookieDatabase 旗標在 Chrome 156 還有用嗎?
沒有。issue #7271 裡的暫時解法是用這個旗標啟動 Chrome:
& "C:\Program Files\Google\Chrome\Application\chrome.exe" --user-data-dir="C:\temp\chrome-test-profile" --disable-features=LockProfileCookieDatabase "https://httpbin.org/cookies/set?yc_test=hello123"
Chrome 開著的時候跑 yt-dlp:
yt-dlp -v --cookies-from-browser "chrome:C:\temp\chrome-test-profile\Default" --skip-download "https://httpbin.org/cookies"
結果還是 PermissionError: [Errno 13]。在 Chrome 156 上這個旗標沒有解開鎖。
profile 路徑格式錯誤:could not find chrome cookies database
chrome: 後面的 profile 路徑要用 Windows 格式(C:\...)。我第一次在 Git Bash 裡寫成 /c/Users/...,yt-dlp 回 could not find chrome cookies database,那是路徑格式錯,不是 cookie 的問題。
關掉瀏覽器再讀
把那個測試用的 Chrome 所有程序都關掉,同一行指令再跑一次:
Extracting cookies from chrome
Extracted 1 cookies from chrome
[debug] cookie version breakdown: {'v10': 1, 'other': 0, 'unencrypted': 0}
加上 --print-traffic 可以看到 yt-dlp 送出的請求真的帶著那個 cookie:
send: b'GET /cookies HTTP/1.1\r\nHost: httpbin.org\r\nCookie: yc_test=hello123\r\n...'
注意「關掉」要關乾淨。Chrome 關掉視窗後可能還有背景程序,工作管理員裡的 chrome.exe 全部消失才算。日常用的瀏覽器通常開著幾十個分頁,這條路的實際代價就是下載期間不能用它。
用 cookies.txt 帶入
不讀瀏覽器,改讀檔案。yt-dlp FAQ 的要求是 Mozilla/Netscape 格式,第一行必須是 # HTTP Cookie File 或 # Netscape HTTP Cookie File。我手寫一個測試檔:
# Netscape HTTP Cookie File
.httpbin.org TRUE / TRUE 1893456000 yc_file fromfile456
欄位之間是 tab,依序是網域、是否含子網域、路徑、是否限 HTTPS、到期時間(Unix 秒)、名稱、值。
yt-dlp --print-traffic --cookies cookies.txt --skip-download "https://httpbin.org/cookies"
送出的請求帶著 Cookie: yc_file=fromfile456。FAQ 建議 Windows 上把換行轉成 CRLF,我這個檔是 LF 換行,yt-dlp 2026.03.17 也讀得到。
實際要用時不會手寫,而是用擴充功能從已登入的瀏覽器匯出。FAQ 推薦 Chrome 用「Get cookies.txt LOCALLY」、Firefox 用「cookies.txt」,並且警告舊的「Get cookies.txt」(沒有 LOCALLY)被回報是惡意軟體。
關掉瀏覽器一定讀得到嗎?
不一定,這是我這次沒辦法驗證的部分。
yt-dlp issue #10927 回報的是另一個錯誤:Chrome 改了 Windows 上的 cookie 加密方式之後,--cookies-from-browser chrome 解密失敗。貢獻者 seproDev 在討論裡判斷這是 Chrome 的改動,全面上線後這條路在 Windows 可能會永久失效;他列的替代方案是改用 Firefox、Linux,或用擴充功能匯出 cookie 再用 --cookies 帶入。這個 issue 在 2026-11-03 還是 open。
我用 --user-data-dir 開的測試 profile 讀到的 cookie 是 v10,解密成功。日常用的主 profile 因為瀏覽器開著被鎖,我讀不到,所以不知道它是不是同樣的格式。換句話說:「關掉再讀」在測試 profile 上成功,用在你的主 profile 上仍可能撞到 #10927。
該選哪一條?
| 你的情況 | 建議 |
|---|---|
| 偶爾抓一次、可以先關瀏覽器 | 關掉 Chrome 再用 --cookies-from-browser,失敗就改 cookies.txt |
| 瀏覽器要一直開著,或要排程自動抓 | 匯出 cookies.txt 用 --cookies |
| 已經有安裝 Firefox 並在上面登入 | 試 --cookies-from-browser firefox,這是 #10927 列出的替代路線,我這次沒有實測 |
cookies.txt 裡是你的登入 session,拿到檔案的人等於登入你的帳號。它不要放進 git repo、不要傳到別人的機器,用完可以刪掉,下次再匯出。
回到那支 Facebook Reel
這次我讀不到 Chrome cookie,所以那支 Reel 最後沒有抓到。yt-dlp 不帶 cookie 回 Cannot parse data;Facebook 的官方嵌入播放器也回「此影片可能已不存在,或是你沒有瀏覽權限」。我的判斷是這支影片沒有公開,帶上 cookie 也只有在那個帳號本來就看得到時才有用。下一步是用「Get cookies.txt LOCALLY」從已登入 Facebook 的瀏覽器匯出 cookies.txt 再試一次。
延伸資源
- yt-dlp issue #7271:Could not copy Chrome cookie database 的原始討論與各種暫時解法。
- yt-dlp issue #10927:Chrome 改 cookie 加密後的解密失敗,還沒有正式解法。
- yt-dlp FAQ:How do I pass cookies to yt-dlp?:
cookies.txt格式要求與推薦的匯出擴充功能。
常見問題
Edge 也會出現 Could not copy Chrome cookie database 嗎?
會。我 Edge 156 開著時跑 --cookies-from-browser edge,錯誤訊息一字不差,訊息裡寫的也是「Chrome」,因為 yt-dlp 對 Chromium 系瀏覽器共用同一段讀取程式。
用系統管理員身分執行 yt-dlp 有用嗎?
issue #7271 有人提到在某些情況要用系統管理員身分執行,我這次沒有測,沒辦法告訴你有沒有用。我實測可行的是關掉瀏覽器或改用 cookies.txt。
為什麼指定 profile 後出現 could not find chrome cookies database?
通常是路徑格式。我在 Git Bash 把 profile 寫成 /c/Users/...,yt-dlp 就回這個錯誤;改成 C:\Users\... 的 Windows 格式就找到 Network\Cookies 了。
cookies.txt 多久要重新匯出?
看網站的 session 什麼時候過期。檔案第五欄是每個 cookie 的到期時間;網站在伺服器端讓 session 失效時,檔案裡的 cookie 就沒用了,要重新匯出。