Bahasa Melayu

Video & sari kata · Pemuat Lakaran kecil YouTube & Pemapar Metadata

Cara pelayar menyimpan imej silang asal: ambil, URL Blob dan muat turun

· Bagaimana ia berfungsi

youtube javascript kor

JPEG jauh menjadi Blob pelayar dan muat turun setempat
Ilustrasi vektor ToolAcre asal

Menyimpan imej daripada domain lain adalah lebih sukar daripada pautan dengan atribut muat turun. Siaran ini menerangkan sebab atribut diabaikan untuk URL silang asal, cara pengambilan dan URL Blob menyelesaikannya dan apa kaitan CORS dengannya.

Atribut muat turun membuka imej dan bukannya menyimpannya — tangkapan silang asal

Sauh yang dituding pada asal yang berbeza mungkin menavigasi ke imej dan bukannya menghormati nama fail yang dikehendaki. Pemuat turun yang boleh dipercayai memerlukan bait yang boleh dibaca di bawah peraturan silang asal pelayar, bukan sekadar atribut muat turun pada URL jauh. Ujian yang boleh dilihat adalah mudah: menyimpan JPEG yang disahkan harus mencipta nama fail ToolAcre tanpa menambah permintaan i.ytimg.com yang lain.

ToolAcre sudah mengambil setiap JPEG calon untuk menentukan sama ada ia benar. Mengekalkan Blob yang berjaya bermakna muat turun kemudian boleh menggunakan bait yang sama dan bukannya mengeluarkan permintaan rangkaian kedua. Penggunaan semula itu memastikan fail yang disimpan sama dengan imej yang dimensi dan status pemegang tempatnya telah diperiksa beberapa saat lebih awal.

Mengapa pelayar mengabaikan muat turun untuk asal-usul lain — keputusan keselamatan dan akibatnya

Pelayar mengekang muat turun silang asal kerana halaman tidak seharusnya menamakan semula secara senyap dan menyimpan sumber jauh sewenang-wenangnya. Gelagat bergantung pada tindak balas jauh dan perhubungan asal, jadi pautan ringkas bukanlah penjimatan fail universal API. Atribut `download` sahaja tidak dapat menjamin bahawa imej YouTube jauh akan disimpan di bawah nama tempatan yang diminta.

Reka bentuk yang lebih selamat adalah eksplisit: minta imej awam yang didedahkan, sahkan respons dan bina objek yang diuruskan oleh pelayar URL sahaja untuk data halaman yang dibenarkan untuk dibaca. Jika CORS menyekat akses, JavaScript tidak mempunyai Blob untuk mengesahkan atau menyimpan, walaupun menavigasi terus ke alamat imej mungkin masih memaparkannya dalam tab.

Laluan pengambilan dan Blob — mengambil bait imej, membungkusnya dalam Blob dan mencipta gumpalan asal yang sama: URL

Untuk JPEG, probeThumbnail melakukan CORS GET tanpa nama, menukar respons yang berjaya kepada Blob dan menyahkod dimensi. Blob yang boleh digunakan dikekalkan pada hasilnya, manakala pemegang tempat dibuang supaya ia tidak boleh menyamar sebagai muat turun. Oleh itu, butang muat turun mewakili bait yang disahkan dalam ingatan, bukan keyakinan yang disimpulkan daripada nama fail atau HTTP 200 sahaja.

Objek URL kemudiannya boleh mewakili Blob dalam memori itu untuk tindakan simpan setempat. Ini tidak menjadikan pengambilan asal setempat; Google membekalkan bait terus ke pelayar selepas Ambil. Alamat `blob:` ialah pemegang pelayar sementara untuk badan respons itu, bukan cermin yang dihoskan oleh ToolAcre atau hak yang baru diberikan kepada imej sumber.

CORS membenarkan JPEG muat turun ambil-dan-Blob; WebP kekal sebagai pautan sahaja

Garis besar yang tersirat CORS ialah satu pintu generik, tetapi gelagat yang dihantar adalah format khusus. JPEG muat turun pengambilan dan Blob berfungsi; laluan /vi_webp/ disajikan tanpa pengepala silang asal yang diperlukan, jadi ToolAcre menyediakan WebP sebagai pautan sahaja. Penyemak harus menguji dua keluarga laluan secara berasingan dan bukannya menyamaratakan pengepala respons JPEG kepada setiap format lakaran kecil.

Had itu tidak dibaiki dengan menukar JavaScript atau mencuba semula melalui ToolAcre, kerana tiada proksi ToolAcre wujud. Penyekat, sambungan luar talian atau proksi korporat juga boleh menghentikan sama ada sumber jauh. Akses WebP pautan sahaja menggambarkan dengan tepat perkara yang dibenarkan oleh pelayan jauh untuk halaman lakukan: tuding pada fail, tetapi tidak membaca baitnya untuk pembungkusan semula.

Menamakan fail yang disimpan — mengapa pemuat turun harus menamakannya mengikut ID dan saiz video supaya fail kekal dikenal pasti

JPEG nama yang dimuat turun menggunakan youtube-VIDEO_ID-VARIANT.jpg. Kedua-dua pengecam dan varian datang daripada abjad yang disahkan, menghalang pemisah laluan atau aksara kawalan sewenang-wenang daripada memasuki nama fail yang dicadangkan. Menyimpan `maxresdefault` dan `hq2` daripada satu carian seharusnya menghasilkan nama yang berbeza dan boleh diramal yang boleh dipadankan kembali ke baris hasil carian mereka.

Nama fail deskriptif mengekalkan asal apabila beberapa saiz berada dalam satu folder. Ia juga mengelakkan berpura-pura tajuk metadata adalah nama sistem fail yang selamat, kerana tajuk boleh mengandungi tanda baca dan boleh berubah secara bebas. ID tidak boleh ubah mengenal pasti rujukan video, manakala akhiran varian menerangkan calon imej yang diterbitkan yang membekalkan bait.

Contoh yang berjaya: menyimpan dua saiz lakaran kecil untuk satu video — urutan permintaan dan fail yang terhasil

Ambil satu video awam dan pilih dua varian JPEG yang tersedia. Setiap satu diminta sekali semasa menyelidik, dinyahkod untuk membuktikan dimensi dan dikekalkan sebagai Blob; mengklik simpan harus menggunakan semula hasil itu dan menghasilkan dua fail bernama jelas. Dengan DevTools dibuka, ketiadaan permintaan imej kedua mengesahkan bahawa simpanan datang daripada respons yang dikekalkan dan bukannya muat turun jauh yang baharu.

Jika seorang calon mengembalikan HTTP 200 sebagai pemegang tempat 120×90, alat itu menandakan ia tiada dan tidak menyimpan Blob yang boleh dimuat turun. A 404, ralat lain atau respons tidak boleh dikodkan juga dilaporkan dan bukannya disimpan. Melumpuhkan tindakan simpan untuk baris ini menghalang pemegang tempat generik atau muatan ralat daripada memasuki folder aset di bawah nama varian yang meyakinkan.

Perkara ini tidak meliputi — muat turun kelompok merentas banyak video dan hos yang menyekat bacaan silang asal

Tiada mod kelompok merentas banyak video dan tiada pintasan untuk hos yang melarang bacaan silang asal. Produk ini mengendalikan satu video pada satu masa dan mengehadkan dirinya kepada dua perkhidmatan Google yang didedahkan. Setiap Blob yang dikekalkan tergolong dalam set hasil semasa, jadi ia tidak boleh dianggap sebagai cache tahan lama untuk video kemudian atau versi masa hadapan lakaran kecil yang sama.

Ia juga tidak mendapatkan semula video atau audio, dan rekod peribadi, dipadamkan atau sekatan umur kekal tidak tersedia. Mekanisme penjimatan fail awam tidak boleh mengembangkan hak akses atau menghasilkan lakaran kecil yang tiada. Penciptaan gumpalan bermula sahaja selepas bait imej yang boleh dibaca tiba, jadi ia tidak menawarkan laluan di sekitar respons yang dinafikan atau varian yang tidak diterbitkan.

JPEG ambil, Guna semula Blob dan muat turun—dengan WebP disimpan sebagai pautan

Sebelum Ambil, penghuraian URL adalah setempat. Selepas itu, setiap siasatan JPEG dan permintaan oEmbed berkanun pergi terus dari pelayar dengan bukti kelayakan ditinggalkan, tiada perujuk, tiada kedai dan ubah hala yang diikuti; Google melihat pengepala Asal. Tarikh muat turun penting secara bebas, kerana objek URL mahupun laluan sumber yang boleh diramal tidak mengekalkan semakan lakaran kecil yang lebih awal.

Hasilnya sengaja tidak simetri: JPEG bait yang disahkan boleh menjadi muat turun Blob, manakala lima WebP URL poster kekal sebagai pautan luaran kerana responsnya tidak mempunyai kebenaran CORS. Antara muka harus mengekalkan sempadan yang jujur ​​itu. Pengguna boleh membuka atau menyalin alamat WebP, tetapi ToolAcre tidak boleh menjanjikan fail WebP tempatan yang dinamakan semula daripada bait pelayar melarangnya membaca.