YouTube Bookmarklet
JavaScript ile böyle yaptım
ytplayer.config.args
Nesne ile başla . Bu, video için tüm URL’leri içerir. Ayrıldı
url_encoded_fmt_stream_map // traditional: contains video and audio stream
adaptive_fmts // DASH: contains video or audio stream
Bunların her biri, "stream nesneleri" olarak adlandırdığım şeyin virgülle ayrılmış bir dizisidir. Her "stream nesnesi" bu gibi değerler içerecektir
url // direct HTTP link to a video
itag // code specifying the quality
s // signature, security measure to counter downloading
Her URL
kodlanmış olacak ve kodunu çözmeniz gerekecektir. Şimdi zor kısmı.
YouTube, videoları için en az 3 güvenlik seviyesine sahiptir
unsecured // as expected, you can download these with just the unencoded URL
s // see below
RTMPE // uses "rtmpe://" protocol, no known method for these
RTMPE videoları tipik olarak resmi tam uzunlukta filmlerde kullanılır ve SWF Doğrulama Tip 2 ile korunur. Bu, 2011'den bu yana olmuştur
ve henüz tersine çevrilmemiştir.
"S" türündeki videolar gerçekten indirilebilecek en zor olanlardır. Bunları VEVO videolarında ve benzerlerinde tipik olarak göreceksiniz. Gibi bir imza ile başlarlar
AA5D05FA7771AD4868BA4C977C3DEAAC620DE020E.0F421820F42978A1F8EAFCDAC4EF507DB5
Sonra imza böyle bir fonksiyonla karıştırılır
function mo(a) {
a = a.split("");
a = lo.rw(a, 1);
a = lo.rw(a, 32);
a = lo.IC(a, 1);
a = lo.wS(a, 77);
a = lo.IC(a, 3);
a = lo.wS(a, 77);
a = lo.IC(a, 3);
a = lo.wS(a, 44);
return a.join("")
}
Bu fonksiyon dinamiktir, genellikle her gün değişir. Daha zor hale getirmek için, işlev aşağıdaki gibi bir URL’de barındırılır:
http://s.ytimg.com/yts/jsbin/html5player-en_US-vflycBCEX.js
Bu aynı kökenli politika sorununu ortaya koymaktadır
. Temel olarak, bu dosyayı www.youtube.com
farklı alanlardan oldukları için indiremezsiniz . Bu sorunun geçici çözümü
CORS'tur . CORS ile
s.ytimg.com
bu başlığı ekleyebilir
Access-Control-Allow-Origin: http://www.youtube.com
ve JavaScript'in indirilmesini sağlar www.youtube.com
. Elbette bunu yapmazlar. Bu geçici çözüm için bir geçici çözüm, bir CORS proxy'si kullanmaktır. Bu, tüm isteklere aşağıdaki başlık ile cevap veren bir proxy'dir
Access-Control-Allow-Origin: *
Böylece, JS dosyanızı proxy'ye dönüştürdüğünüz ve imzayı karıştırmak için işlevi kullandığınız için, sorguyu video indirmek için kullanabilirsiniz.