Практические инструменты

Прощайте, поддельные файлы на 2 КБ: Как точно захватывать и скачивать прямые ссылки на видео MP4 (с полными решениями для командной строки)

Вы видите ссылку, оканчивающуюся на `.mp4`, с радостью бросаете её в свой менеджер загрузок, и в итоге получаете файл веб-страницы размером всего 2...

21 апр. 2026 г.·5 мин чтения

Вы видите ссылку, оканчивающуюся на .mp4, с радостью бросаете её в свой менеджер загрузок, и в итоге получаете файл веб-страницы размером всего 2 КБ или экран, полный ошибок 403 Forbidden. Знакомо?

Меня тоже когда-то мучили эти «поддельные прямые ссылки» до такой степени, что я срывался, думая, что это проблема со скоростью сети. На самом деле всё дело было в том, что я не понимал уловок на стороне сервера: кнопка скачивания видео на веб-странице сообщает об ошибках кросс-доменных запросов, а скопированная ссылка имеет токен истечения срока действия… Сегодня мы полностью разрушим проклятие «можно воспроизвести, но нельзя скачать». Если вы освоите этот процесс точной идентификации, устранения неполадок с помощью захвата пакетов и принудительного скачивания в сочетании с мощными инструментами командной строки, вы сможете решить 99% проблем со скачиванием видео.

1. Не обманывайтесь расширением: Что такое настоящая «прямая ссылка»?

Запомните основной принцип: .mp4 в URL — это просто маскировка; настоящая прямая ссылка зависит от заголовков ответа сервера (Headers).

Если скачивание не удалось, высока вероятность того, что сервер тайно перенаправил вас на другую страницу с кодом 302 или вернул 401 (не авторизован) или 403 (блокировка хотлинкинга). Правильный ответ для прямой ссылки, которую можно скачать напрямую, должен выглядеть так:

HTTP/1.1 200 OK
Content-Type: video/mp4
Content-Length: 104857600
Content-Disposition: attachment; filename="sample.mp4"
Accept-Ranges: bytes

Как интерпретировать этот ответ?

  • video/mp4 доказывает, что это настоящее видео, а не замаскированный HTML.
  • Content-Length показывает истинный размер файла.
  • Content-Disposition: attachment — это явное указание сервера: «пожалуйста, скачайте это как файл».
  • Accept-Ranges: bytes означает, что поддерживается докачка (это очень важно!).

2. Золотой метод устранения неполадок: Сначала зондируйте, потом скачивайте

Столкнувшись со ссылкой неизвестного происхождения, самый надёжный подход — зондировать её шаг за шагом. Это намного быстрее, чем «сразу искать загрузчик и пробовать методом тыка».

Шаг 1: Вставьте прямо в адресную строку браузера Вставьте URL прямо в браузер. Если браузер открывает независимый интерфейс только для воспроизведения видео или сразу вызывает окно скачивания, поздравляю, просто щёлкните правой кнопкой мыши и выберите «Сохранить как».

Шаг 2: Используйте командную строку curl для «зондирования дна» Если браузер открывает обычную веб-страницу, это означает, что это не настоящая прямая ссылка на файл. Откройте терминал и используйте curl для лёгкого зондирования заголовков:

# Просматривайте только заголовки ответа и следуйте перенаправлениям (не скачивая сам файл)
curl -I -L "https://example.com/path/video.mp4"

Если он возвращает Content-Type: text/html или длинный список сегментов .ts, немедленно откажитесь от иллюзии скачать его как MP4.

3. Идеальный приём против блокировки хотлинкинга: Захват пакетов с помощью DevTools

Многие видеосайты проверяют Referer (исходную страницу) и Origin в заголовках запроса или даже требуют Cookie (статус входа). На этом этапе самый быстрый метод — прямо скопировать домашнее задание браузера:

  1. Откройте веб-страницу, на которой находится видео, и нажмите F12, чтобы войти в панель Network (Сеть).
  2. Установите флажок Preserve log (Сохранять журнал), и если кэш сильно загружен, также установите флажок Disable cache (Отключить кэш).
  3. Обновите страницу или нажмите, чтобы воспроизвести видео.
  4. В фильтре сначала найдите mp4 (если нет, то ищите m3u8 или ts).
  5. Найдите медиа-запрос, размер которого постоянно увеличивается или чей код состояния — 206/200. Нажмите, чтобы осмотреть его Headers, и подтвердите, включает ли он информацию о защите от хотлинкинга, такую как Referer или Cookie.
  6. Щёлкните запрос правой кнопкой мыши и выберите Copy -> Copy as cURL.

Получив этот код, вставьте его прямо в терминал и выполните. Это «непобедимая команда на скачивание» с полным набором пропусков!

4. Смертельное оружие командной строки: Расширенное использование curl и wget

После подтверждения прямой ссылки и выяснения заголовков запроса начинается хардкорная часть скачивания. Ниже приведены наиболее часто используемые и надёжные команды для curl и wget:

Основные приёмы curl

# Базовое скачивание: Скачать напрямую, имя файла определяется URL-адресом
curl -L -O "https://example.com/path/video.mp4"
 
# Скачивание с докачкой: Продолжить скачивание при отключении сети
curl -L -C - -o "video.mp4" "https://example.com/path/video.mp4"
 
# Обход блокировки хотлинкинга: Добавить Referer, User-Agent, Origin и Cookie
curl -L \
  -e "https://example.com/watch/123" \
  -A "Mozilla/5.0" \
  -H "Origin: https://example.com" \
  -b "sessionid=abc123" \
  -o "video.mp4" \
  "https://cdn.example.com/media/abc.mp4?token=..."

Основные приёмы wget (Лучше подходит для скачивания с докачкой)

# Базовое скачивание: Вывести заголовки ответа и сохранить с указанным именем файла
wget --server-response -O "video.mp4" "https://example.com/path/video.mp4"
 
# Обход блокировки хотлинкинга: Примонтировать полные пропуска и файл Cookie
wget \
  --referer="https://example.com/watch/123" \
  --user-agent="Mozilla/5.0" \
  --header="Origin: https://example.com" \
  --load-cookies cookies.txt \
  -O "video.mp4" \
  "https://cdn.example.com/media/abc.mp4?token=..."

5. Что делать, если вы захватили .m3u8?

Никогда не меняйте расширение .m3u8 на .mp4, чтобы обмануть себя! .m3u8 — это просто плейлист (похожий на меню), содержащий сотни или тысячи видеосегментов (.ts или fMP4).

Столкнувшись с этой ситуацией, немедленно переключитесь на мышление HLS, откажитесь от curl и достаньте ffmpeg или специализированный загрузчик:

Решение A: Использование ffmpeg для слияния в один клик

# Скачать все сегменты в списке M3U8 и объединить их без потерь в MP4
ffmpeg -i "https://example.com/master.m3u8" -c copy "output.mp4"
 
# Если сервер придирчив, добавьте параметры маскировки
ffmpeg \
  -user_agent "Mozilla/5.0" \
  -referer "https://example.com/watch/123" \
  -cookies "sessionid=abc123; path=/; domain=example.com;" \
  -i "https://cdn.example.com/master.m3u8?token=..." \
  -c copy "output.mp4"

Решение B: Использование N_m3u8DL-RE (Полуавтоматический артефакт)

Для сложных потоков HLS / DASH этот инструмент предлагает лучший опыт:

# Автоматически выбрать лучшую дорожку, прикрепить заголовки запросов и мультиплексировать в MP4 по завершении
N_m3u8DL-RE "https://example.com/master.m3u8" \
  -H "Referer: https://example.com/watch/123" \
  -H "Cookie: sessionid=abc123" \
  --auto-select \
  -M format=mp4 \
  --save-name "video"

6. Займите своё место: 4 распространённые ошибки и решения

Когда вы сталкиваетесь с ошибкой, смотрите прямо в эту таблицу, чтобы локализовать проблему за считанные минуты:

  • Ошибка 403 или «Можно смотреть в браузере, но не в командной строке»: Это определённо блокировка хотлинкинга. Зайдите в DevTools для захвата пакетов и добавьте Referer, Origin и Cookie.
  • Скачанный файл весит всего несколько КБ: Вы скачали не тот слой! То, что вы захватили, — это перенаправление (переход 302) или страница ошибки HTML. Используйте curl -L, чтобы принудительно следовать перенаправлениям.
  • Консоль сообщает об ошибке кросс-доменных запросов CORS: Ограничения кросс-доменных запросов применяются к скриптам внутри веб-страницы. Они не ограничивают вас от прямого копирования ссылки в адресную строку для скачивания! Не путайте кросс-доменные запросы с повреждением файла.
  • Ссылка через некоторое время становится недействительной с ошибкой 403: Это подписанная ссылка с токеном, срок действия которого истёк. Обновите страницу, чтобы захватить последний URL-адрес.
  • Скачивание с докачкой сообщает об ошибке 416 (Range Not Satisfiable): Это означает, что длина повреждённого файла, оставшегося локально, уже превысила прогресс на стороне сервера. Не заставляйте возобновлять; удалите повреждённый файл и скачайте снова.

7. Последнее напоминание о безопасности и соблюдении правил

После завершения скачивания, если это большой файл, рекомендуется выполнить проверку хэша, чтобы убедиться, что файл не повреждён:

# macOS / Linux
shasum -a 256 ./video.mp4
 
# Windows PowerShell
Get-FileHash .\video.mp4 -Algorithm SHA256

(Отказ от ответственности: Техническая возможность не означает юридическую правоту. Пожалуйста, убедитесь, что вы скачиваете контент, к которому у вас есть право доступа, и не используйте эту технологию для взлома потоков с защитой DRM или распространения пиратского контента.)


The Bottom Line
Суть скачивания видео заключается не в том, чтобы полагаться на удачу, а в обмене секретными кодами с сервером. В следующий раз, когда вы столкнётесь с видео, которое не скачивается, сначала нажмите F12, чтобы захватить пакеты и посмотреть заголовки ответа, а затем используйте cURL или wget с правильными заголовками запроса для точной атаки. Теперь откройте любое видео на веб-странице и попробуйте использовать Copy as cURL, чтобы захватить свою первую прямую ссылку!

Автор: Baiwei

Похожие статьи

Больше статей, подобранных для вас о потоковом вещании M3U8