github.com/yt-dlp/yt-dlp/releases
github.com/Dinesh6777/Universal-Video-Downloader-GUI/releases
Wie kann ich yt-dlp benutzen mit deno und Google chrome? Kannst du mir issue 7271 erklären und eine Lösung vorschlagen?
Die Verwendung von yt-dlp in Kombination mit Deno und Google Chrome ist ein hervorragender Weg, um Downloads programmatisch zu steuern und gleichzeitig Login-Sitzungen (Cookies) zu nutzen.
Hier ist die Erklärung, wie du beides verbindest, was es mit dem bekannten Issue #7271 auf sich hat und wie du das Problem löst.
1. yt-dlp mit Deno nutzen
In Deno kannst du externe CLI-Tools wie yt-dlp über die Deno.Command-API ausführen.
Hier ist ein einfaches Beispiel, wie du yt-dlp aufrufst und anweist, die Cookies aus Google Chrome zu lesen:
// download.ts
const url = "https://www.youtube.com/watch?v=dQw4w9WgXcQ";
const command = new Deno.Command("yt-dlp", {
args: [
"--cookies-from-browser", "chrome",
"--format", "bestvideo+bestaudio/best",
url
],
stdout: "piped",
stderr: "piped",
});
console.log("Starte Download...");
const { code, stdout, stderr } = await command.output();
if (code === 0) {
console.log("Download erfolgreich!");
} else {
const errorString = new TextDecoder().decode(stderr);
console.error("Fehler beim Download:", errorString);
}
Hinweis: Um dieses Skript auszuführen, benötigt Deno die Berechtigung, Subprozesse zu starten. Der Befehl lautet:
deno run --allow-run download.ts
2. Erklärung zu Issue #7271
Wenn du den obigen Code ausführst, während Google Chrome geöffnet ist, wirst du unter Windows (und manchmal macOS) sehr wahrscheinlich auf folgende Fehlermeldung stoßen: ERROR: Could not copy Chrome cookie database. See https://github.com/yt-dlp/yt-dlp/issues/7271 for more info.
Das Problem
Issue #7271 beschreibt einen Konflikt bei der Dateisperrung. Moderne Chromium-Browser (Chrome, Edge, Brave) sperren die SQLite-Datenbank, in der deine Cookies gespeichert sind (Network Persistent State / Cookies), sobald der Browser geöffnet ist (Feature: LockProfileCookieDatabase).
Wenn yt-dlp versucht, diese Datei zu kopieren oder zu lesen, um die Sitzungsdaten für YouTube zu extrahieren, verweigert das Betriebssystem den Zugriff mit einem “Permission Denied”-Fehler.
3. Lösungen für das Cookie-Problem
Es gibt drei gängige Wege, um dieses Problem zu umgehen:
Lösung A: Chrome vor dem Ausführen schließen (Die einfachste Methode)
Schließe alle Instanzen von Google Chrome vollständig, bevor du dein Deno-Skript startest. Sobald Chrome geschlossen ist, gibt das Betriebssystem die Cookie-Datenbank frei und yt-dlp kann fehlerfrei darauf zugreifen.
Lösung B: Cookies manuell exportieren (Die robusteste Methode)
Da das Auslesen direkt aus dem Browser zunehmend instabil wird, empfiehlt das yt-dlp-Team, die Cookies manuell in eine Textdatei zu exportieren.
-
Installiere eine Browser-Erweiterung wie Get cookies.txt LOCALLY oder Export Cookies.
-
Exportiere deine Cookies für YouTube als
cookies.txt. -
Passe dein Deno-Skript an, um diese Datei direkt zu nutzen:
// Nutze die exportierte Datei statt des Browsers
args: [
"--cookies", "./cookies.txt",
url
]
Lösung C: Chrome-Sperre via Verknüpfung deaktivieren
Falls du Chrome unbedingt offen lassen musst, kannst du Chrome mit einem speziellen Flag starten, welches die Datenbanksperre deaktiviert:
-
Windows: Erstelle eine Kopie deiner Chrome-Verknüpfung, mache einen Rechtsklick -> Eigenschaften und hänge folgendes an das Feld Ziel an:
--disable-features=LockProfileCookieDatabase -
macOS (Terminal):
open -a "Google Chrome" --args --disable-features=LockProfileCookieDatabase
Ich habe Chrome geschlossen. Jetzt gibt es eine anderer Fehlermeldung:
[21:37:45] [ERROR] ERROR: Failed to decrypt with DPAPI. See https://github.com/yt-dlp/yt-dlp/issues/10927 for more info.
Kannst du mir das erklären?
Diesen Fehler hast du dir nicht ausgesucht – du bist hier gerade über eine der größten Hürden gestolpert, die Google in Chromium eingebaut hat.
Das Problem: Was bedeutet Issue #10927?
DPAPI steht für Data Protection API (eine Verschlüsselungsschnittstelle von Windows).
Google Chrome hat eine verschärfte Sicherheitsfunktion namens Application-Bound Encryption (anwendungsgebundene Verschlüsselung) eingeführt. Früher konnte jedes Programm, das unter deinem Windows-Benutzerkonto lief (wie yt-dlp), deine Chrome-Cookies mit DPAPI entschlüsseln.
Jetzt signiert Chrome den Verschlüsselungs-Key so, dass nur noch die originale chrome.exe selbst diesen Key jemals wieder entschlüsseln darf. Wenn ein externes Tool wie yt-dlp versucht, an die Keys heranzukommen, verweigert Windows den Dienst und wirft genau diesen Fehler: Failed to decrypt with DPAPI.
Da das eine fundamentale Änderung in Windows-Chrome ist, kann yt-dlp dieses Problem beim direkten Browser-Zugriff technisch nicht mehr umgehen.
Die Lösungen
Da das direkte Auslesen aus Chrome unter Windows dauerhaft blockiert ist, hast du drei Optionen, um dein Deno-Skript wieder zum Laufen zu bringen:
Lösung 1: Cookies exportieren (Empfohlen)
Das ist der sauberste und vom yt-dlp-Team empfohlene Weg.
-
Installiere im Chrome Web Store eine Extension wie “Get cookies.txt LOCALLY”.
-
Besuche YouTube, klicke auf das Extension-Icon und exportiere die Cookies als Textdatei (z. B.
cookies.txt). -
Verschiebe die Datei in deinen Deno-Projektordner und passe die Argumente im Skript an:
// Passe dein Deno-Skript an:
args: [
"--cookies", "./cookies.txt", // Ersetzt --cookies-from-browser
"--format", "bestvideo+bestaudio/best",
url
],
Lösung 2: Auf Firefox umsteigen
Firefox nutzt diese anwendungsgebundene Windows-Verschlüsselung nicht. Wenn du deine YouTube-Sitzung in Firefox startest, klappt der direkte Zugriff aus dem Skript weiterhin problemlos.
Du musst im Deno-Code lediglich den Browser-Namen ändern:
args: [
"--cookies-from-browser", "firefox", // Chrome durch firefox ersetzen
url
],
Lösung 3: Chrome Enterprise-Richtlinie (Für Bastler)
Falls du zwingend Chrome ohne manuelle Exporte nutzen musst, kannst du die neue Verschlüsselung über die Windows-Registry (Group Policy) komplett abschalten.
Achtung: Das senkt die Sicherheit deines Browsers, da auch Schadsoftware theoretisch wieder leichter an deine Cookies gelangen kann. Zudem werden dabei alle deine aktuell im Browser gespeicherten Passwörter/Cookies einmalig zurückgesetzt.
Falls du das dennoch tun möchtest, musst du in der Windows-Registrierung den folgenden Registry-Eintrag setzen und Chrome neu starten:
-
Pfad:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome -
Name:
ApplicationBoundEncryptionEnabled -
Typ:
DWORD -
Wert:
0