Facebook умеет показывать видео, умеет его воспроизводить, умеет отправлять его на CDN, но иногда почему-то считает, что кнопка «Скачать» пользователю не положена. Особенно весело становится, когда обычные способы не работают.
В моём случае yt-dlp сначала оказался бесполезен: Facebook выдавал ошибку Cannot parse data. При этом авторизация в Chromium определялась нормально — yt-dlp успешно находил cookies. Рабочий вариант оказался намного проще. Что понадобится
Mac с Chromium и установленный через Homebrew yt-dlp: brew install yt-dlp
Закрываем Chromium, чтобы yt-dlp мог прочитать cookies браузера, и выполняем:
yt-dlp —cookies-from-browser «chromium:Default» -o «$HOME/Downloads/facebook-video.%(ext)s» «https://www.facebook.com/watch/?v=VIDEO_ID»
Например:
yt-dlp —cookies-from-browser «chromium:Default» -o «$HOME/Downloads/facebook-video.%(ext)s» «https://www.facebook.com/watch/?v=2952425005042063» В нашем случае команда получила: Extracted 227 cookies from chromium после чего Facebook отдал доступный формат видео, а файл был сохранён непосредственно в: ~/Downloads/facebook-video.mp4
А если yt-dlp пишет Cannot parse data?
Вот тут начинается самое интересное. Открываем видео в Chromium и: ⌥⌘I → Network → Media Перезагружаем страницу и запускаем видео. В списке запросов ищем файл с окончанием: .mp4 Обычно это URL вида: https://scontent….fbcdn.net/…mp4?… Это уже не страница Facebook, а непосредственно видеофайл на Facebook CDN. Правой кнопкой по запросу: Copy → Copy as cURL Полученную команду целиком вставляем в Terminal и запускаем. Видео скачивается напрямую с CDN.
Что важно
CDN-ссылка содержит временные параметры авторизации (oh, oe и другие), поэтому её не стоит сохранять как постоянную ссылку. Нашёл — сразу скачал. И ещё один полезный момент: если Facebook-видео доступно только авторизованному пользователю, просто получить URL страницы недостаточно. Именно поэтому cookies-from-browser оказался важен.
Кратко
Если Facebook решил тебя послать:
Facebook
↓
Chromium
↓
yt-dlp + cookies
↓
если не получилось
↓
DevTools → Network → Media → .mp4
↓
Copy as cURL
↓
Terminal
↓
🎥 MP4
Вывод: Facebook может спрятать кнопку скачивания, но если браузер уже способен воспроизвести видео, сам видеопоток всё равно должен быть доставлен браузеру. Главное — найти именно этот запрос, а не пытаться скачать HTML-страницу. И да — после того как видео скачали, yt-dlp можно удалить:
brew uninstall yt-dlp
brew cleanup
Проверка:
yt-dlp —version
Если получаем:
zsh: command not found: yt-dlp
— всё, больше эта хуйня на Mac не живёт. 😁
😎 Будь героем текста!
Увидел косяк? 🚬 Орфографический монстр 👻 подкрался незаметно?
✂️ Выделяйте ошибку и нажимайте Ctrl + W
Мы примем удар на себя 👨💻 и всё исправим 🛠️
Спасибо за бдительность!