Video & субтитри · YouTube Thumbnail Downloader & Metadata Viewer
Як браузер зберігає перехресне зображення: fetch, Blob URL і завантажити
· Як працює
Опубліковано ToolAcre · Редакція журналу
веб-сайт Завантажити плагін труси

Збереження зображення з іншого домену важче, ніж посилання з атрибутом завантаження. Цей запис пояснює, чому атрибут ігнорується для перехресних URL-адрес, як fetch і Blob URL-адреси вирішують його і що CORS має робити з ним.
Атрибут завантаження відкриває зображення замість збереження його — крос-рігінний лов
Анкер вказується на іншому походження може навігуватися на зображення замість на честь бажаного імені файлу. Відмінний завантажувач вимагає зчитування байтів при перехресних правилах браузера, не просто атрибут завантаження на пульті дистанційного керування URL. видимий тест прямоперед: збереження перевіреного JPEG створювати ToolAcre ім'я файлу без додавання іншого i.ytimg.com запит.
ToolAcre вже смажити JPEG кандидат визначити, чи це реально. Зберігаючи успішний Blob означає, що пізніше завантаження може використовувати ці ж байти замість видачі другого мережевого запиту. Цей повторний використання зберігає збережений файл, ідентичний зображенням, розмірами якого та статусом затримувача.
Чому веб-переглядачі ігнорують завантаження іншого походження — рішення про безпеку та наслідки
Браузери, які вимагають перехресного завантаження, тому що сторінка не повинна мовчати перейменування і зберегти довільні віддалені ресурси. Поведінка залежить від віддаленого реагування і відносин походження, тому просте посилання не є універсальним файлообміном API. У `download` атрибут не може гарантувати, що зображення віддаленого YouTube буде збережено під запитаним локальним іменем.
Дизайн сейфа: запит розголошується публічне зображення, перевірте відповідь та сконструювати об'єкт браузера URL лише за дані сторінки, допущених до читання. Якщо CORS доступу блоків, JavaScript не має Blob для перевірки або збереження, хоча навігація безпосередньо на адресу зображення може відображати його в вкладці.
Маршрут fetch-and-Blob — захоплення байтів зображень, загортання їх в Блоб і створення одно-рігінного блаба: URL
Для JPEG, probeThumbnail виконує анонімне CORS GET, перетворює успішну відповідь на розмір Blob і decodes. Вимкнений Blob зберігається на результат, при цьому власники розміщуються так, щоб вони не могли маскарад, як завантаження. Кнопка завантаження, отже, є перевірені байти в пам'яті, не впевненість, що посилюється з імені файлу або HTTP 200 наодинці.
Об'єкт URL може представляти, що в пам'яті Blob для місцевого збереження дії. Це не робить оригінальний fetch локальним; Google поставив байти безпосередньо до браузера після Fetch. Про нас `blob:` адреса - це тимчасова обробна ручка для того, щоб відповідати тіло, не дзеркало, розміщене дзеркалом ToolAcre або новостворене право на джерело зображення.
CORS Можливість JPEG fetch-and-Blob завантажити; WebP посилання
Наміти CORS був одним загальними воротами, але відвантажена поведінка є специфікацією форматів. JPEG fetch-and-Blob завантажити роботи; /vi_webp/ шлях подається без необхідного крос-рігіна, тому ToolAcre Послуги WebP тільки посилання. Рецензент повинен перевірити дві стежки сімей окремо замість узагальнення JPEG Відповідні заголовки до кожного великого формату.
Що обмеження не ремонтуються змінами JavaScript або перезрада через ToolAcre, бо немає ToolAcre проксі існує. Блокувальник, автономне підключення або корпоративна проксі також може зупинити або віддалений ресурс. Посилання WebP доступ точно відображає те, що віддалений сервер дозволяє зробити сторінку: точку в файлі, але не читати його байти для перепакування.
Наміння збереженого файлу — чому завантажувач повинен назвати його за допомогою ідентифікатора відео та розміру, щоб файли залишилися незмінними
Завантажити JPEG Використання імен youtube-VIDEO_ID-VARIANT.jpg. Обидва ідентифікатора і варіант надходять з валідованих алфавітів, запобігаючи роз'яснюванню шляхових сепараторів або довільних контрольних символів з введення запропонованого імені файлу. Збереження `maxresdefault` і `hq2` від одного вигляду, отже, виготовляти чіткі імена, які можуть бути підібрані назад до рядків їх результату.
Розшифрований файл, що зберігає прованс, коли кілька розмірів сидять в одній папці. Крім того, уникає претендування назв метаданих є безпечне ім'я файлової системи, оскільки назви можуть містити пунктуацію та змінюватися самостійно. Імітований ідентифікатор ідентифікує відеодовідник, в той час як варіант suffix пояснює, що опублікований кандидат зображень подано байти.
Створений приклад: збереження двох розмірів ескізів для одного відео — послідовність запитів і файлів, які результат
Захопити одне публічне відео і вибрати два доступні JPEG варіанти. Кожен був запитаний один раз під час пробування, декодовано довести розміри і зберігатися як Blob; натискання зберегти слід повторно використовувати результат і виробляти два чітко названих файлів. З DevTools відкрито, відсутність другого запиту зображення підтверджує, що збереження прийшла з збереженої відповіді, а не свіжу віддалену завантаження.
Якщо один кандидат повертає HTTP 200 як 120×90 не завантажується Blob. Р 404, інша помилка або нездатна відповідь, як відомо, а не збережена. Відключення дії збереження за цими рядами запобігає поширенню застави або перезавантаження помилок з моменту введення в папку активу під назвою оповіщення.
Що це не кришка — пакетні завантаження по багатьох відео, а також хостів, які блокують кросорігінні читання
Не існує пакетного режиму по багатьох відео і не обійтися для хостів, які забороняють перехресне читання. Продукт керує відео одночасно і обмежує себе двома розголошуваними службами Google. Кожна збережена Blob належить до встановленого поточного результату, тому її не слід розглядати як міцний кеш для пізніх відео або майбутніх версій того ж великого пальця.
Ви також не отримуєте відео або аудіо, а також приватні, видалені або вікові записи залишаються недоступними. Неможливо розширити права доступу або виготовити несуттий палець. Створення Блоба починається тільки після того, як читаються зображення байти прибувають, тому він не пропонує маршруту про відмову від відповіді або неопублікований варіант.
JPEG fetch, Blob reuse і завантажити WebP зберігати посилання
До Fetch, URL це місцеве. Після цього, кожен JPEG зонд і канонічний випромінюваний запит йде прямо з браузера з обліковими записами, не вдається, немає реферера, ніякого магазину і після перенаправлення; Google бачить заголовок походження. Дата важливі завантаження самостійно, тому що ні об'єкт URL ані передбачуваний вихідний шлях зберігає доопрацювання ескізів.
Результат навмисно асиметричний: перевірений JPEG байти можуть стати Blob завантаження, а п'ять WebP URL-адреси плакатів залишаються зовнішніми посиланнями, тому що їх відповіді відсутні CORS дозвіл. Інтерфейс повинен зберегти цю чесну межу. Користувачі можуть відкрити або копіювати WebP адреса, але ToolAcre не може обіцяти перейменованого локального WebP файл з байтів браузер забороняє його читати.