- Ein Artikel über Methoden zur Umgehung der Beschränkung der Download-Geschwindigkeit von YouTube-Videos
- YouTube erzielt Einnahmen über Werbeaufrufe und setzt Beschränkungen ein, um das Ansehen oder Herunterladen von Videos über inoffizielle Clients zu verhindern
- Der erste Schritt zur Umgehung der Drosselung der Geschwindigkeit besteht darin, mit der YouTube-API zu kommunizieren, um die tatsächliche URL zu finden, die die Videodatei enthält
- YouTube verwendet bei den meisten Datei-URLs einen bestimmten Parameter namens
n, der mithilfe eines JavaScript-Algorithmus aus der Datei base.js umgewandelt werden muss. Dieser Parameter dient als Challenge, um zu prüfen, ob der Download von einem „offiziellen“ Client gestartet wurde
- Der JavaScript-Algorithmus ist obfuskiert und ändert sich häufig, daher ist der Versuch, ihn per Reverse Engineering zu verstehen, unpraktisch. Die Lösung besteht darin, die JavaScript-Datei herunterzuladen, den Algorithmus-Code zu extrahieren und ihn mit dem Parameter
n auszuführen
- YouTube wendet weiterhin variable Regeln zur Begrenzung der Download-Geschwindigkeit an, die auf Größe und Länge des Videos basieren. Um diese Begrenzung zu umgehen, kann der Download mit dem HTTP-
Range-Header in mehrere kleine Teile aufgeteilt werden
- YouTube verteilt Video- und Audiokanal in zwei getrennten Dateien. Der letzte Schritt besteht darin, diese beiden Kanäle zu einer Datei zusammenzuführen, was mit
ffmpeg möglich ist
- Derzeit verwenden viele Projekte diese Techniken, um die von YouTube gesetzten Beschränkungen zur Verhinderung von Video-Downloads zu umgehen. Am beliebtesten ist
yt-dlp, programmiert in Python (ein Fork von youtube-dl), das jedoch einen eigenen benutzerdefinierten JavaScript-Interpreter zur Umwandlung des Parameters n enthält
- Der Artikel erklärt den Prozess und liefert Code-Snippets, sodass er auch für Software Engineers mit wenig Erfahrung zugänglich ist
1 Kommentare
Hacker-News-Kommentare
yt-dlp: Ein Python-basierter Fork vonyoutube-dl, der einen benutzerdefinierten JavaScript-Interpreter zur Umwandlung von Parametern enthält