Чиним ошибку yt-dlp «Signature extraction failed»

Что значит «Signature extraction failed»
Когда yt-dlp выводит Signature extraction failed: Some formats may be missing или Could not find JS function, это значит, что YouTube заменил JavaScript-файл плеера, который подписывает каждый URL потока. В каждом URL стрима YouTube есть signature-токен, расшифровываемый JS-функцией внутри этого player JS. Стоит YouTube изменить эту функцию (обычно раз в несколько недель), и более старые версии yt-dlp перестают находить её новое имя — извлечение падает с ошибкой.
Сама страница видео в браузере по-прежнему открывается — именно поэтому ошибка кажется неожиданной — но скачивание требует расшифрованного токена, а yt-dlp пока не выучил новый шаблон.
Как починить со стороны yt-dlp
Надёжный способ — обновить yt-dlp:
# установка через pip
pip install -U yt-dlp
# brew
brew upgrade yt-dlp
# pipx
pipx upgrade yt-dlp
# самостоятельный бинарник
yt-dlp -U
Если вы уже на самой свежей версии и ошибка остаётся:
- Загляните в issues yt-dlp на GitHub — обычно уже есть ветка, отслеживающая текущую смену подписи, и патч, влитый в
master. - Установите прямо из master:
pip install -U "yt-dlp[default] @ git+https://github.com/yt-dlp/yt-dlp@master" - Подождите 12–48 часов до тегированного релиза с исправлением.
Почему это повторяется
YouTube целенаправленно ротейтит схему подписи, чтобы усложнить скрейпинг. Сценарий всегда одинаковый: выкатывают новый player JS, функция расшифровки переименовывается и иначе минифицируется, каждому загрузчику приходится заново её определять и переписывать extractor. Мейнтейнеры yt-dlp следят за этими изменениями и выпускают апдейты, но всегда существует окно, когда последнее изменение YouTube быстрее последнего релиза yt-dlp.
Использовать вместо этого Any4K
Any4K сопровождает извлечение подписей на стороне сервера как часть штатной работы. Когда YouTube меняет player JS, наша инфраструктура обновляется, и скачивания продолжают работать — как правило, в течение часа, а не 48. С вашей стороны обновлять нечего: вставляете URL на any4k.com и скачиваете.
Преимущества Any4K во время смены подписи
- Не нужно обновлять yt-dlp: фикс выкатываем мы.
- Никаких nightly-установок: веб-инструмент всегда актуальный.
- Тот же сценарий вне зависимости от изменений YouTube: вставил, выбрал, сохранил.
- Мультиплатформа: YouTube, TikTok, Twitter, Instagram, Facebook, Reddit, Shorts.
Когда yt-dlp всё же остаётся правильным выбором
Для массовой архивации, извлечения встроенных субтитров, подписок на каналы и автоматизации скриптами yt-dlp по-прежнему самый глубокий инструмент. Просто примите, что ошибки подписи — это плановое обслуживание, и держите yt-dlp -U в cron.
Итог
«Signature extraction failed» — это YouTube меняет замки. yt-dlp регулярно выдаёт новые ключи; а в перерывах Any4K Video Downloader обрабатывает смену подписи на стороне сервера, чтобы ваши загрузки продолжали работать.