Как уже упоминалось в других сообщениях, вы можете посмотреть наш код в
youtube-dl (или в коде расширения Firefox, называемом
FlashVideoReplacer ).
В частном случае youtube-dl "настоящая работа" выполняется в
подклассы InformationExtractor
и трудно дать «стабильный» ответ,
так как макет таких сайтов постоянно меняется.
Есть некоторые фрагменты информации, которые не являются динамическими, например, для
Например, загрузчик видео, заголовок, дата загрузки, и,
самое главное, идентификатор видео (строка из 11 символов).
Что касается динамических частей, то о таких инструментах можно сказать следующее:
по сути, URL, генерируемые такими видео, генерируются динамически и
вам нужно выполнить некоторое обратное общение с сервером.
Важно иметь в виду, что такие сайты могут (и делают) принимать
рассмотрение зависит от ряда параметров, в том числе: куки, которые
вы уже получили --- как в случае с видео HTML5, ваш
геолокация --- для регионального контроля, ваш возраст - для "сильного" материала, ваш
язык / локаль --- для показа контента, созданного специально для вас и т. д.
youtube-dl использует регулярное выражение для извлечения идентификатора видео из URL
что вы даете, а затем использует «нормализованный», типичный URL, как используется из
Соединенные Штаты, из которых следует исходить.
Некоторые динамических данных, которые нужно собрать, включают в себя:
- некоторая отметка времени (
expire
и fexp
части окончательного URL)
- куки, отправленные в браузер
- формат, в котором мы хотим загрузить видео (
itag
часть окончательного URL)
- информация о регулировании (
algorithm
, burst
, factor
)
- некоторые хэши / токены, используемые ими внутри (например,
signature
часть окончательного URL)
Некоторая информация, перечисленная выше, когда-то не требовалась, но теперь они
являются (в частности, куки, которые они вам отправляют). Это означает, что
приведенная выше информация, скорее всего, устареет, так как контроль
стать более строгим.
Вы можете увидеть некоторые работы (в отношении файлов cookie), которые я делал в
В связи с этим при реализации внешнего бэкэнда использовать внешний
загрузчик («ускоритель загрузки») с тем, что извлекает youtube-dl.
Discloser: я внес некоторые изменения в хранилище, и я поддерживаю
пакет youtube-dl
в Debian (и, как побочный эффект, в Ubuntu).