Apa yang harus terjadi sebelum sebuah halaman web memberimu filenya
Kamu bisa melihat videonya. Sedang diputar, di sana, di browser web. Jadi kenapa tidak ada cara untuk menyimpannya? Jawabannya adalah halaman web jarang menyerahkan sebuah file — ia menyerahkan instruksi, dan file yang disusun browser darinya mungkin sama sekali tidak ada sebagai satu hal yang utuh.
FoxDL Empat cara sebuah halaman menyajikan video, hanya satu yang berupa file
Yang paling tua dan paling sederhana adalah file langsung: halaman menunjuk ke sebuah alamat yang berakhiran .mp4 dan browser mengambilnya. Kalau kamu bisa menemukan alamat itu, kamu punya filenya. Ini masih cara kerja kebanyakan situs kecil, forum, media berita, dan host file.
Yang kedua adalah adaptive streaming — HLS atau DASH. Halaman memuat sebuah playlist yang mendaftar ratusan segmen pendek pada beberapa level kualitas, dan pemutar menyatukannya sambil berjalan, berpindah kualitas saat koneksimu berubah. Tidak ada satu file tunggal untuk ditemukan. Menyimpannya berarti mengambil setiap segmen dan membangun ulang sebuah file darinya.
Yang ketiga adalah blob URL. Halaman sudah mengambil datanya dengan JavaScript dan menyerahkan pemutar sebuah referensi ke sesuatu yang hidup di memori browser itu sendiri. Alamat yang bisa kamu lihat (blob:https://…) tidak berarti apa-apa di luar halaman dan sesi itu — tidak bisa dibuka, dibagikan, atau diunduh, dan ini yang membuat kebanyakan "pencari video" yang naif tersandung.
Yang keempat adalah konten yang dilindungi: segmen terenkripsi yang diputar lewat sistem DRM, di mana kunci dekripsi diberikan ke browser dengan syarat yang secara eksplisit melarang menyimpan salinannya. Ini bukan hambatan yang bisa dikelabui; ini mekanisme tempat sebuah perjanjian lisensi dibangun, dan tidak ada alat legitim yang mengalahkannya.
Bagaimana browser web menyadari ada sesuatu yang bisa disimpan
Browser web dalam aplikasi yang menawarkan menyimpan apa yang ditemukannya sedang mengerjakan beberapa pekerjaan sekaligus. Masing-masing menangkap kasus yang terlewat oleh yang lain.
- Membaca elemen media di halaman
- Menelusuri dokumen untuk tag
<video>,<audio>, dan<source>lalu membaca alamatnya. Menangkap kasus file langsung dengan segera, melewatkan apa pun yang dibangun oleh JavaScript setelah halaman dimuat. - Melihat ke dalam shadow DOM
- Pemutar modern adalah elemen kustom yang bagian dalamnya sengaja disegel dari halaman. Pencarian yang berhenti di dokumen biasa melihat kotak kosong tempat video seharusnya berada.
- Mengamati apa yang sebenarnya diminta halaman
- Browser tahu setiap sumber daya yang diambil sebuah halaman. File media yang dimuat — tidak peduli skrip mana yang memintanya, atau kapan — muncul di sini bahkan kalau tidak ada apa pun di halaman yang terlihat menunjuk padanya.
- Mengendus tipe respons
- URL yang berakhiran
.phpbisa mengembalikan video, dan URL yang berakhiran.mp4bisa mengembalikan halaman error.Content-Typeyang benar-benar dikirim server adalah yang memberitahumu mana yang mana — ekstensi hanyalah tebakan.
Seperti apa proses menyimpan dari sebuah halaman saat berhasil
Urutannya penting. Kebanyakan kegagalan berasal dari melewatkan langkah kedua dan langsung memulai transfer empat gigabyte dari sebuah halaman login.
-
Putar medianya sebentar dulu
Banyak halaman tidak memuat apa pun sampai pemutaran dimulai. Dua detik pemutaran sering kali menjadi beda antara daftar kandidat yang kosong dan yang lengkap.
-
Periksa apa sebenarnya kandidat itu
Sebelum berkomitmen, lihat ukuran dan tipe yang dilaporkan. "Film" berukuran 14 KB adalah halaman HTML. Tipe
text/htmlpadahal kamu mengharapkanvideo/mp4berarti kamu punya tautan yang salah. -
Pilih kualitas yang kamu inginkan
Sebuah stream biasanya menawarkan beberapa pilihan. Yang tertinggi tidak selalu jawaban yang tepat di ponsel, di mana perbedaannya tidak terlihat tapi penyimpanannya tetap terpakai.
-
Biarkan sesi ikut terbawa
Tautan yang dilindungi memeriksa siapa yang meminta: cookie dari sesi kamu yang sudah login, halaman yang mengantarkanmu, kadang identitas browser yang cocok. Unduhan yang dimulai tanpa itu mendapat error 403 meski halamannya diputar dengan baik.
-
Verifikasi apa yang mendarat
Buka filenya. File yang diputar dua detik lalu berhenti berarti terpotong — biasanya tautan yang kedaluwarsa — dan layak diulang daripada disimpan.
Apa yang harus dilakukan dengan benar oleh browser web dalam aplikasi
Selain menemukan medianya, ini hal-hal yang menentukan apakah unduhannya benar-benar selesai.
- Bawa sesi sampai ke unduhan
Cookie, referer, dan user agent harus ikut bersama permintaan. Tanpa itu, tautan yang dilindungi berhasil di halaman tapi gagal di pengunduh.
- Jauhkan kredensial itu dari penyimpanan
Cookie sesi sama berharganya dengan password selama sesi berlangsung. Tempatnya di memori selama transfer berlangsung dan tidak di tempat lain mana pun — bukan di database, bukan di log.
- Menolak menyerahkan tautan ke aplikasi lain
iOS dengan senang hati akan membuka tautan yang diketuk di aplikasi lain kalau aplikasi itu mengklaim domain tersebut. Browser web yang dimaksudkan untuk menyimpan media harus membatalkan dan mengeluarkan ulang navigasinya sendiri, atau halaman yang kamu inginkan menghilang ke dalam aplikasi milik orang lain.
- Pangkas halaman sebelum ditampilkan
Pemblokir konten di sini bukan sekadar soal iklan — lebih sedikit pelacak dan overlay berarti lebih sedikit kandidat palsu dalam daftar media.
- Tangani dokumen selain video
PDF, ZIP, dan file Office adalah separuh lain dari apa yang disimpan orang dari web, dan seharusnya mendarat di pustaka yang sama dengan yang lainnya.
Yang sering ditanyakan orang
Kenapa Safari tidak bisa melakukan ini sendiri?
Safari memang mengunduh file — sudah sejak iOS 13. Yang tidak dilakukannya adalah memeriksa sebuah halaman untuk media yang sedang di-stream alih-alih ditautkan, atau membangun ulang stream tersegmentasi menjadi sebuah file. Ia adalah browser web, dan pekerjaan itu adalah milik pengelola unduhan.
Apa itu blob URL dan kenapa saya tidak bisa mengunduhnya?
Ia adalah pegangan (handle) ke data yang sudah dipegang halaman itu di memori. Ia tidak ada di luar tab itu, jadi menempelkannya di mana pun tidak menghasilkan apa-apa. Media yang mendasarinya diambil dari suatu tempat yang nyata, dan alamat itu — bukan blob-nya — yang layak ditemukan.
Halamannya diputar dengan baik tapi unduhannya mendapat error 403. Kenapa?
Permintaan unduhan tiba tanpa hal-hal yang dimiliki halaman itu: cookie sesimu, halaman yang mengantarkanmu, kadang identitas browser yang cocok. Server memakai kombinasi itu justru untuk membedakan seorang penonton dari sebuah scraper.
Apakah semuanya bisa disimpan?
Tidak, dan itu memang disengaja. Konten yang dilindungi DRM dienkripsi dengan kunci yang diberikan berdasarkan lisensi yang melarang menyimpannya. Beberapa situs juga menandatangani setiap segmen secara individual dengan token berumur pendek. Keduanya bekerja sesuai rencana.
Browser web di dalam FoxDL
Ini browser web bertab biasa yang tugasnya memasukkan sesuatu ke pustakamu, bukan menjadi browser sehari-harimu.
- Enam jalur deteksi, termasuk shadow DOM dan catatan apa yang benar-benar diminta halaman, jadi pemutar yang seluruhnya dibangun dalam JavaScript tetap terlihat.
- Tipe sebenarnya diendus dari respons alih-alih ditebak dari ekstensi, dan kandidat
blob:yang tidak bisa diambil disaring alih-alih ditawarkan lalu gagal. - Cookie, referer, dan user agent ikut terbawa ke unduhan supaya tautan yang dilindungi berhasil — dan tidak satu pun dari itu pernah ditulis ke disk.
- Pemblokir konten memangkas halaman sebelum ditampilkan.
- PDF, ZIP, dan dokumen tersimpan ke pustaka yang sama dengan media, dalam satu ketukan.
- Tab, bookmark, dan halaman awal berisi pintasanmu sendiri.
FoxDL tidak menyediakan konten miliknya sendiri. Apa yang kamu simpan adalah apa yang kamu bawa sendiri, dan kamu bertanggung jawab atas hak untuk menyimpannya.
Pertanyaan umum
- Bagaimana cara mengunduh file dari halaman web?
- Bisakah FoxDL mengunduh stream HLS (m3u8)?
- Apakah unduhan tetap berjalan saat saya keluar dari aplikasi?
- Apakah FoxDL menyediakan channel IPTV, film, atau stream?
Baca terus
Apa yang dilakukan pengelola unduhan yang tidak dilakukan browser web
Kenapa transfer berhenti saat kamu berpindah aplikasi, apa yang sebenarnya dibutuhkan untuk melanjutkan, dan bagaimana stream berubah menjadi file.
Apa yang bisa dilihat aplikasi media di ponselmu, dan apa yang tidak boleh pernah dikirimnya
Apa yang bisa dilihat aplikasi media, cara membaca label privasi, dan kenapa kunci bukan enkripsi.
Di mana sebenarnya file kamu tersimpan di iPhone, dan siapa yang bisa melihatnya
Sandbox, ke mana sebenarnya unduhan pergi, dan kenapa mengganti nama file bisa merusak begitu banyak aplikasi.
Koleksimu, akhirnya ada di satu tempat.
Unduh gratis. Tanpa akun, tanpa daftar — semua fitur ada di versi gratis.