- YouTube'un video indirme hız kısıtlamasını aşma yöntemine dair bir yazı
- YouTube, reklam izlenmelerinden gelir elde ediyor ve resmi olmayan istemcilerde video izlenmesini veya indirilmesini engellemek için kısıtlayıcı önlemler uyguluyor
- Hız kısıtlamasını aşmanın ilk adımı, YouTube API'siyle iletişim kurarak video dosyasını içeren gerçek URL'yi bulmak
- YouTube, çoğu dosya URL'sinde
n adlı belirli bir parametre kullanıyor; bu parametre, base.js dosyasında bulunan bir JavaScript algoritmasıyla dönüştürülmeli. Bu parametre, indirmenin "resmi" bir istemciden başlatılıp başlatılmadığını doğrulayan bir meydan okuma görevi görüyor
- JavaScript algoritması obfuscate edilmiş ve sık sık değiştirildiği için bunu anlamak amacıyla tersine mühendislik yapmaya çalışmak pratik değil. Çözüm, JavaScript dosyasını indirip algoritma kodunu çıkarmak ve
n parametresini vererek çalıştırmak
- YouTube, yine de videonun boyutuna ve süresine dayalı değişken indirme hızı kısıtlama kuralları uyguluyor. Bu kısıtlamayı aşmak için indirme işlemi, HTTP Range başlığı kullanılarak birden fazla küçük parçaya bölünebilir
- YouTube, video ve ses kanallarını iki ayrı dosya olarak dağıtıyor. Son adım, bu iki kanalı tek bir dosyada birleştirmek ve bu işlem
ffmpeg ile yapılabiliyor
- Şu anda birçok proje, YouTube video indirmesini engellemek için konulan kısıtlamaları aşmak amacıyla bu teknikleri kullanıyor. En popüler olanı, Python ile yazılmış
yt-dlp (youtube-dl çatalı), ancak bu araç n parametresini dönüştürmek için kendi özel JavaScript yorumlayıcısını da içeriyor
- Yazı, süreci açıklıyor ve kod parçacıkları sunarak konuyu başlangıç seviyesindeki yazılım mühendisleri için erişilebilir hale getiriyor
1 yorum
Hacker News görüşü
youtube-dl'nin Python tabanlı bir fork'u olup, parametreleri dönüştürmek için özelleştirilmiş bir JavaScript yorumlayıcısı içeriyor