스토리

Как скачать видео по прямому URL видео

Что такое прямой URL видео, как сохранить файл MP4 или WebM в браузере и почему CORS, HLS или DASH могут заблокировать скачивание файла.

Иметь URL видео — не то же самое, что иметь видеофайл. Одни адреса указывают на ресурс MP4 или WebM. Другие открывают HTML-страницу, которая только содержит плеер. Третьи загружают потоковый плейлист из множества мелких сегментов.

Поэтому одна ссылка сохраняется быстро, а другая отказывается скачиваться, хотя видео воспроизводится. Дальше в статье — как отличить эти случаи и сохранять файл только тогда, когда URL действительно является видеоресурсом.

Что такое прямой URL видео?

Прямой URL видео — это адрес, HTTP-ответ которого является медиаресурсом, а не веб-страницей вокруг него. Простейший пример выглядит так:

https://example.com/video.mp4

Когда браузер запрашивает этот URL, сервер может вернуть байты видеофайла, часто с Content-Type вроде video/mp4 или video/webm. HTML-документа посередине нет. URL и есть файл.

Расширение файла — подсказка, а не правило. Ссылка всё равно может быть видеоресурсом без .mp4 в пути:

https://example.com/media?id=123

Если сервер отвечает Content-Type: video/mp4 (или другим видеотипом) и телом, которое действительно является медиаданными, это по-прежнему прямой URL видео. Путь, оканчивающийся на .mp4, всё ещё может быть перенаправлением или HTML-страницей ошибки. Источник истины — HTTP-ответ, а не буквы в конце адреса.

Прямой URL видео и веб-страница с видео

Сравните эти два:

  • Прямой файл: https://example.com/files/movie.mp4
  • Веб-страница: https://example.com/watch/movie

Первый может быть одним видеообъектом. Второй обычно — HTML-документ. Эта страница может встроить элемент <video>, загрузить скрипт плеера и затем запросить медиа с другого URL, который никогда не появляется в адресной строке.

Вставка адреса страницы в инструмент скачивания не извлекает файл со страницы. Браузер запросил бы HTML. Инструменту, который работает с прямыми общедоступными URL видео, нужен сам адрес медиа.

Загрузчик веб-видео NEXNARA рассчитан на этот публичный URL файла, а не на страницу просмотра. Он не извлекает видео с сайтов, не входит в аккаунты и не собирает потоки из плеера.

Как скачать видео по прямому URL

Когда у вас уже есть кандидатная ссылка:

  1. Получите прямой URL. Используйте URL файла, объекта или медиа — не страницу просмотра.
  2. Проверьте, что это видеоресурс. Новая вкладка должна показать встроенное воспроизведение браузера (или запрос на скачивание), а не страницу с плеером в вёрстке.
  3. Сначала попробуйте браузер. Многие браузеры позволяют сохранить из контекстного меню видео или начинают скачивание, если сервер отправляет disposition файла.
  4. Используйте инструмент в браузере, если сначала нужен предпросмотр. Вставьте тот же URL на страницу, которая может показать формат, длительность или размер до сохранения.

Загрузчик веб-видео — это последний шаг. Вы вставляете прямой URL видео. Браузер запрашивает этот хост. Если ресурс — воспроизводимый файл, появляется предпросмотр. Когда видеосервер разрешает чтение с другого источника, можно скачать; когда нет — URL всё ещё можно открыть, если предпросмотр работает. NEXNARA не загружает файл на свои серверы.

Какие форматы видео можно скачать?

В браузере «могу ли я это скачать?» близко к «может ли этот браузер декодировать этот файл?». Типичные контейнеры для URL одного файла:

  • MP4 — часто H.264 или HEVC в контейнере ISO BMFF
  • WebM — обычно VP8, VP9 или AV1
  • Ogg Video — реже; поддержка кодека зависит от браузера

Контейнер и кодек — не одно и то же. Файл .mp4 не гарантированно воспроизводится в каждом браузере на каждом устройстве. Поддержка HEVC и AV1 зависит от ОС, оборудования и сборки браузера. Инструмент, который использует элемент HTML5 video, показывает предпросмотр того, что этот браузер может декодировать. Он не конвертирует и не делает remux файла.

Если браузер сообщает о неподдерживаемом формате, файл всё ещё может воспроизводиться в другом месте — или это неверно помеченный объект либо плейлист, а не один файл.

Почему видео воспроизводится, но его нельзя скачать?

Воспроизведение и сохранение используют разные API браузера.

Элемент <video> может запросить ресурс (часто с HTTP range-запросами) и отрисовать кадры. Это может удаться, даже когда JavaScript на другом источнике не может прочитать байты и превратить их в файл, который пользователь сохранит.

Типичные причины, почему предпросмотр работает, а Скачать не удаётся:

  • CORS. Видеохост не дал этому сайту разрешение читать ответ из скрипта. См. следующий раздел.
  • Учётные данные между источниками. Cookie, которые работают на исходном сайте, не отправляются в простом межсайтовом fetch, если обе стороны явно не согласятся.
  • Content-Disposition. attachment или имя файла влияют на то, как сохраняет навигация верхнего уровня, а не на то, может ли скрипт другого источника прочитать тело.
  • Конфигурация сервера. Отсутствующие заголовки CORS или заблокированные комбинации HEAD/GET могут остановить инструмент, который сначала проверяет ресурс.
  • Аутентификация. URL, который работает, пока вы вошли на хосте, может вернуть 401/403 с другого сайта.
  • Истекающие или подписанные URL. Объектное хранилище часто выдаёт строку запроса с ограничением по времени. После истечения та же ссылка не работает.

Ничто из этого не значит, что файл «не видео». Это значит, что данный контекст браузера не имеет права его скопировать.

Что такое CORS?

CORS (Cross-Origin Resource Sharing) — правило браузера о том, когда JavaScript на одном источнике может читать ответ с другого источника. Это не специальный продукт «против скачивания». Оно существует, чтобы https://a.example не мог незаметно читать вашу почту или файлы с https://b.example, пока b.example это не разрешит.

Тег video всё ещё может показывать файл с другого источника. То, что CORS часто блокирует, — это fetch() с другого сайта, которому нужны сырые байты как Blob для диалога сохранения. Если видеосервер не отправляет значение Access-Control-Allow-Origin, включающее источник инструмента (или * для простого публичного файла), это чтение отклоняется.

Воспроизведение — не разрешение скрипту другого сайта сохранить копию. NEXNARA не проксирует файл, чтобы обойти эту проверку. Если скачивание заблокировано, запасной вариант — открыть URL на видеохосте, и только если у вас есть право сохранить его.

А HLS и DASH?

Многие плееры не загружают один MP4. Они загружают манифест, затем множество сегментов.

  • HLS часто использует URL, оканчивающийся на .m3u8. Этот файл — плейлист (текст), а не полный фильм в одном объекте.
  • DASH часто использует .mpd, XML-манифест, указывающий на представления и сегменты.

Прямой URL MP4/WebM и плейлист HLS/DASH — разные ресурсы. Сохранение «того .m3u8» даёт небольшой текстовый файл, а не фильм. Собрать один файл из сегментов нужно разбором плейлиста, скачиванием сегментов и обычно remux. Загрузчик веб-видео не собирает потоки HLS или DASH. Если инструмент сообщает о потоковом плейлисте, это ожидаемо.

Видео с защитой DRM

Коммерческие плееры могут оборачивать медиа в DRM, например Widevine, FairPlay или PlayReady. Эти системы шифруют сэмплы и требуют лицензию. Это не публичный объект video/mp4, который можно запросить и сохранить. NEXNARA не расшифровывает и не обходит DRM.

Как распознать прямой URL видео

Практические проверки, в порядке того, сколько они доказывают:

  • Путь оканчивается на .mp4, .webm, .ogv или похожее медиарасширение. Полезно, не окончательно.
  • Открытие URL в новой вкладке показывает одно видео (или скачивание), а не весь интерфейс сайта.
  • Издатель задокументировал это как ссылку на файл или объект (CDN, бакет хранилища, «прямое скачивание»).
  • Заголовки ответа содержат Content-Type: video/* (например video/mp4).

Инструменты разработчика браузера могут показать в панели Сеть тип и Content-Type запроса, который вы уже сделали как обычный пользователь страницы. Это помогает понять, что было запрошено. Это не руководство по извлечению скрытых потоков или обходу входа. Если сайт не даёт публичный URL файла, этот сценарий не применяется.

Расширение и тип содержимого могут врать. URL .mp4 может перенаправить на HTML. Тип video/mp4 всё ещё может быть крошечным телом ошибки. Воспроизведение во вкладке — практическое подтверждение.

Частые проблемы

URL открывает веб-страницу.
Это не прямой URL видео. Нужен адрес медиаресурса, а не страница просмотра.

Видео воспроизводится, но Скачать ничего полезного не делает.
Хост, скорее всего, запрещает чтение с другого источника (CORS) или файл слишком велик для сохранения в браузере. Используйте Открыть, если предпросмотр работает, или сохраните с видеохоста во вкладке верхнего уровня, когда у вас есть разрешение.

Ссылка работала, а теперь не работает.
Подписанные или истекающие URL умирают по таймеру. Запросите новую ссылку там же, откуда получили первую.

URL оканчивается на .m3u8 или .mpd.
Это потоковый плейлист, а не один файл MP4/WebM. Этот загрузчик не сшивает эти сегменты.

Браузер сообщает, что формат не поддерживается.
Контейнер или кодек может быть недоступен в этом браузере/ОС. Попробуйте другой браузер или подтвердите, что файл действительно видеообъект.

Браузер не может открыть URL.
Проверьте https://, соединение и то, что хост разрешает публичный доступ. HTTP-файл на HTTPS-странице инструмента также может не сработать как смешанное содержимое.

Конфиденциальность

NEXNARA не загружает видеофайл на серверы NEXNARA для этого инструмента. Это не то же самое, что утверждение «URL никогда не покидает ваш браузер».

Когда вы вставляете адрес, ваш браузер напрямую запрашивает этот внешний видеохост. Хост может видеть обычный медиазапрос от вас. NEXNARA не хранит файл посередине. Оператор видео по-прежнему получает трафик, потому что байты приходят с его URL.

Ответственное использование

Скачивайте только видео, которыми вы владеете или на скачивание которых у вас есть разрешение. Публичный URL — не лицензия на копирование.

FAQ

Что такое прямой URL видео?

Ссылка, ответ которой — сам видеоресурс (например объект MP4 или WebM), а не HTML-страница просмотра со встроенным плеером.

Можно ли скачать MP4 по URL?

Да, когда URL — публичный файл MP4 (или подобный) и браузер может его декодировать. Если адрес — веб-страница или плейлист, сохранение этого адреса не даст файл фильма.

Почему видео воспроизводится, но его нельзя скачать?

Плеер может показать медиа, не позволяя JavaScript другого сайта читать байты. CORS, аутентификация и политика сервера — обычные причины.

Можно ли скачать URL m3u8?

Не как одно готовое видео этим инструментом. Файл .m3u8 — плейлист HLS. NEXNARA не собирает потоки HLS или DASH.

Загружает ли NEXNARA моё видео?

Нет. Файл не загружается на NEXNARA. Браузер обращается к введённому вами URL видео, поэтому внешний хост всё равно видит этот запрос.

Почему истекла ссылка на видео?

Многие хосты прикрепляют подпись и время истечения к URL объектов. После этого момента та же строка больше не авторизована. Запросите свежую ссылку; правка старой её не продлит.