Вовсе нет. Файл уже находится на их компьютере, и они вполне могут сохранить его, будь то изображение или даже видео, добавление в элемент HTML URL-адреса blob: // не предотвращает никаких действий «Сохранить как»:
fetch( "https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png" )
.then( resp => resp.blob() )
.then( blob => {
console.log( 'img loaded' );
const elem = document.querySelector( 'img' );
elem.src = URL.createObjectURL( blob );
} );
fetch( "https://upload.wikimedia.org/wikipedia/commons/a/a4/BBH_gravitational_lensing_of_gw150914.webm" )
.then( resp => resp.blob() )
.then( blob => {
console.log( 'video loaded' );
const elem = document.querySelector( 'video' );
elem.src = URL.createObjectURL( blob );
} );
Try to right click "save As..." these two media:
<img>
<video controls></video>
Отмена однажды загруженного URL-адреса blob: // может немного усложнить задачу, но даже в этом случае, если вы посмотрите на сетевую панель своих инструментов разработчика, вы увидите исходный запрос, на основе которого был сгенерирован Blob-объект и откуда ваши пользователи смогут очистить ваши данные.
YouTube не использует URL-адрес blob: // для предотвращения загрузок
Если бы они действительно хотели усложнить загрузку своих видео, они бы защищали их с помощью DRM и использовали бы EME API , но это не так. URL-адрес blob: //, который вы видите в видео YouTube, указывает не на Blob, а на объект MediaSource . Они действительно используют этот API, чтобы иметь возможность обслуживать адаптивное содержимое, т. Е. Иметь возможность отправлять более низкое качество одного и того же носителя на лету, когда качество соединения ухудшается. Это не имеет абсолютно никакого отношения к какой-либо защите, и быстрый поиск в Интернете покажет вам, что найти исходный файл довольно просто. s YT транслируется.