Ada pengunduh baris perintah open source yang sangat populer yang disebut youtube-dl
, yang melakukan hal itu. Ini mengambil tautan file video dan audio yang sebenarnya dari tautan YouTube yang diberikan - atau situs video web populer lainnya seperti Vimeo, Yahoo! Video, uStream, dll.
Untuk melihat bagaimana itu dilakukan, lihat ke ekstraktor YouTube . Terlalu banyak untuk ditampilkan di sini. Ekstraktor lain ada untuk situs yang lebih sederhana . Steven Penny juga memiliki pengunduh JavaScript sederhana untuk YouTube, yang sedikit lebih mudah.
Tetapi pada dasarnya, untuk pemutar video Flash, itu harus diinisialisasi dan dikonfigurasi melalui beberapa JavaScript. Secara sederhana, pemutar objek Flash akan menerima URL aliran video untuk dimuat.
Untuk menemukan aliran video, Anda harus mem-parsing kode HTML dan JS dari halaman video untuk menemukan kode inisialisasi yang relevan, dan kemudian dari sana mencoba menemukan tautan ke file MP4 yang sebenarnya. Mungkin ada di sana dalam plaintext, tetapi bisa juga dibuat dengan cepat dengan beberapa token unduhan tertentu. Seringkali, JavaScript dikaburkan untuk membuatnya lebih sulit untuk merekayasa ulang itu. Atau informasi video mungkin terkandung dalam file XML yang dimuat secara asinkron oleh JS.
Untuk video unduhan progresif HTML5, file sumber yang sebenarnya biasanya disebutkan secara langsung di source
anak video
tag, jadi jika Anda ingin mencari halaman mp4
atau serupa. Misalnya di acara berita Jerman Tagesschau 100 , Anda akan menemukan:
<source src="http://media.tagesschau.de/video/2014/0626/TV-20140626-1649-5801.webl.h264.mp4" type="video/mp4">
Untuk teknologi pemutaran yang lebih maju seperti MPEG DASH atau HTTP Live Streaming (HLS) Apple, Anda harus mengurai file meta-informasi untuk mendapatkan aliran video yang sebenarnya. File meta ( .mpd
misalnya dalam DASH, dan .m3u8
untuk HLS) akan berisi tautan ke segmen video dan audio, yang nantinya harus Anda gabungkan untuk mendapatkan file yang dapat diputar.
Tidak ada solusi umum untuk ini. Ini membutuhkan inspeksi dan debugging yang cermat dari situs target.
Bookmarklet YouTube
Ini adalah bagaimana saya melakukannya dengan JavaScript
Mulai dengan
ytplayer.config.args
objek. Ini berisi semua URL untuk video. Itu dipecah menjadiMasing-masing adalah array yang dipisahkan koma dari apa yang saya sebut "objek streaming". Setiap "aliran objek" akan berisi nilai-nilai seperti ini
Setiap URL akan disandikan sehingga Anda harus mendekodekannya. Sekarang bagian yang sulit.
YouTube memiliki setidaknya 3 tingkat keamanan untuk video mereka
Video RTMPE biasanya digunakan pada film panjang penuh resmi, dan dilindungi dengan SWF Verification Type 2. Ini sudah ada sejak 2011 dan belum direkayasa balik.
Jenis "s" video adalah yang paling sulit yang sebenarnya dapat diunduh. Anda biasanya akan melihat ini di video VEVO dan sejenisnya. Mereka mulai dengan tanda tangan seperti
Kemudian tanda tangan diacak dengan fungsi seperti ini
Fungsi ini dinamis, biasanya berubah setiap hari. Untuk membuatnya lebih sulit, fungsi dihosting di URL seperti
ini memperkenalkan masalah kebijakan asal yang sama . Pada dasarnya, Anda tidak dapat mengunduh file ini
www.youtube.com
karena mereka adalah domain yang berbeda. Solusi dari masalah ini adalah CORS . Dengan CORS,s.ytimg.com
bisa menambahkan tajuk inidan itu akan memungkinkan JavaScript untuk mengunduh
www.youtube.com
. Tentu saja mereka tidak melakukan ini. Solusi untuk solusi ini adalah dengan menggunakan proxy CORS. Ini adalah proksi yang merespons dengan tajuk berikut untuk semua permintaanJadi, sekarang Anda telah memproksi file JS Anda, dan menggunakan fungsi untuk mengacak tanda tangan, Anda dapat menggunakannya dalam querystring untuk mengunduh video.
sumber
s
videoRTMPE
jenis dan jenis video?Jawaban saya: mulai 22 Januari 2019, menggunakan metode ini dapat ditangkap jika Anda mencoba memotong tanpa menghubungkan informasi pengguna Anda juga.
Mengapa? karena saya pengguna baru untuk platform ini, saya tidak bisa berkomentar untuk aturan yang ditentukan oleh @ Daniel-B . Menurut ToS baru (dalam bahasa Jerman seperti saya di Jerman; tolong terjemahkan) untuk YouTube di bawah $ 6,1 G $:
Sekarang mereka dapat mengetahui durasi waktu untuk setiap permintaan dan dapat melacak jika Anda melanggar. Bagaimana mungkin sekarang, mengingat skenario ini dan alamat IP eksternal Anda akan diketahui bahkan jika Anda menggunakan VPN untuk melindungi diri sendiri tanpa menghubungkan detail pengguna ke layanan apa pun.
sumber