Перейти к содержимому

yt-dlp: «Sign in to confirm you're not a bot» — что это значит и как исправить

Автор Команда TunelioОпубликовано Обновлено

Это бот-стена YouTube, а не ошибка yt-dlp: YouTube решил, что запрос выглядит автоматизированным, и требует проверенную сессию. Быстрое решение: обновить yt-dlp, поставить JavaScript-рантайм (Deno), повторить по IPv4. Если не помогло — ниже cookies, PO-токены и репутация IP в том порядке, который реально работает, и ошибки, которые всё портят.

Решение за 60 секунд (сначала это)

Большинство случаев решают три вещи: устаревший yt-dlp, отсутствие JavaScript-рантайма или IPv6-адрес, которому YouTube не доверяет. Выполните это до любых манипуляций с cookies:

# 1. обновление (для pip: pip install -U yt-dlp)
yt-dlp -U

# 2. JS-рантайм для решения челленджей YouTube — рекомендуется Deno
curl -fsSL https://deno.land/install.sh | sh

# 3. повтор по IPv4 с чистым кешем
yt-dlp -4 --rm-cache-dir "https://youtu.be/dQw4w9WgXcQ"

Всё ещё блокирует? Читайте дальше. Порядок важен: каждый следующий шаг дороже и рискованнее предыдущего, а прыжок сразу к cookies — самый частый способ сделать проблему постоянной.

Что на самом деле означает ошибка

Когда yt-dlp запрашивает у YouTube данные плеера, YouTube оценивает запрос: IP-адрес и его историю, наличие валидного Proof-of-Origin (PO) токена, наличие сессионной cookie и количество недавних запросов с этого адреса. При плохой оценке вместо ответа плеера приходит стена входа, и yt-dlp печатает «Sign in to confirm you’re not a bot». Команда верная — YouTube просто не доверяет источнику.

Почему это происходит — четыре реальные причины

  • Репутация IP. Диапазоны дата-центров (любой VPS, облако, CI-раннер) оцениваются намного ниже домашних подключений. На нашем парке экстракторов в августе 2026 примерно каждый четвёртый свежий выходной IP упирался в бот-стену с первого запроса, а с IPv6 хуже: YouTube оценивает весь /64 как единое целое, и один шумный сосед помечает весь блок.
  • Нет PO-токена. С 2024 года YouTube ждёт Proof-of-Origin токен, который выдаёт его скрипт BotGuard. yt-dlp может получить его только через внешний JS-рантайм (Deno, Node, Bun) или плагин-провайдер; без него часть клиентов отклоняется сразу.
  • Нет сессии. Анонимный запрос с помеченного IP выглядит ровно как скрейпер. Cookies из настоящей браузерной сессии поднимают оценку — поэтому они «работают» и поэтому перестают работать, когда IP слишком плох.
  • Объём. Десятки запросов в минуту с одного адреса, особенно плейлисты и циклы повторов, срабатывают даже на чистом IP.

Исправляйте в этом порядке

1. Обновитесь до последнего релиза (или nightly)

YouTube меняет код плеера и подписей каждые несколько недель, yt-dlp выпускает исправления за дни. Сборка старше месяца ломается так, что это похоже на бот-проверку. Пакеты дистрибутивов сильно отстают — ставьте через pip или официальный бинарник и запускайте yt-dlp -U.

2. Установите JavaScript-рантайм

Актуальному yt-dlp нужен внешний JS-рантайм для решения челленджей YouTube и получения PO-токенов. Рекомендуется Deno; Node.js и Bun тоже подходят. Без него yt-dlp предупреждает об отсутствующих форматах и часто сразу упирается в стену. Проверьте через yt-dlp -v — строка про рантайм есть в отладочном заголовке.

3. Принудительно IPv4

yt-dlp -4 "https://youtu.be/dQw4w9WgXcQ"   # или: --force-ipv4

Если у сервера есть оба семейства адресов, yt-dlp может уйти по IPv6, где оценка YouTube жёстче (весь /64 судится как один адрес). Один этот флаг закрывает удивительно много случаев «на ноутбуке работает, на VPS нет» — ноутбуки обычно сидят на IPv4 за домашним роутером.

4. Cookies — из одноразовой сессии, никогда из основного аккаунта

Cookies говорят YouTube, что запрос принадлежит реальной сессии. Экспортируйте их из приватного окна браузера, где выполнен вход в запасной Google-аккаунт, и закройте окно, чтобы браузер не сменил сессию за вашей спиной. Не экспортируйте cookies своего повседневного аккаунта: автоматизированное использование с помеченного IP может привести к ограничению или блокировке аккаунта.

# экспортируйте cookies.txt расширением из приватного окна, затем:
yt-dlp --cookies cookies.txt -4 "https://youtu.be/dQw4w9WgXcQ"

# или читайте прямо из профиля браузера (для разового локального использования):
yt-dlp --cookies-from-browser chrome "https://youtu.be/dQw4w9WgXcQ"

Cookies — заплатка, а не лечение: они истекают, а когда помечен сам IP, сессия уже не помогает. Если cookies работают день-два и перестают, проблема в адресе, а не в файле cookies.

5. Добавьте провайдер PO-токенов

Если отладочный вывод говорит, что клиенту нужен PO-токен, который yt-dlp не смог получить, поставьте плагин-провайдер, например bgutil-ytdlp-pot-provider. Он запускает небольшой сервис BotGuard, который автоматически выдаёт токены для yt-dlp. Это самое надёжное из решений «остаться на своём IP» — и его чаще всего пропускают.

6. Попробуйте другой клиент плеера

yt-dlp --extractor-args "youtube:player_client=tv" "https://youtu.be/dQw4w9WgXcQ"
# также стоит попробовать: android, mweb, web_embedded (у каждого свой набор форматов)

YouTube оценивает каждый клиент по-своему, и список доверенных клиентов меняется каждые несколько недель — это обходной путь, а не решение. Некоторые клиенты не отдают 1080p+ или требуют собственных cookies.

7. Смените IP: резидентный прокси или другая сеть

Если чистый ноутбук на домашнем подключении скачивает то же видео без cookies, проблема в IP сервера, и никакой флаг её не решит. Пустите yt-dlp через резидентный или мобильный прокси (--proxy) или перенесите извлечение на машину с более чистым адресом. Ротация дешёвых дата-центровых прокси почти не помогает — их оценивают так же, как ваш VPS.

8. Сбавьте темп

yt-dlp --sleep-requests 2 --sleep-interval 5 --max-sleep-interval 15 --limit-rate 2M ...

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

Симптом → наиболее вероятная причина

  • На ноутбуке работает, на VPS нет → репутация IP (шаг 3, затем 7).
  • Ломается на всех видео после того, как вчера работало → YouTube что-то изменил; обновите (шаг 1) и проверьте JS-рантайм (шаг 2).
  • С cookies работает день, потом снова нет → IP помечен; cookies не спасут (шаг 7).
  • Падают только некоторые видео или форматы; -v упоминает PO token → провайдер PO-токенов (шаг 5) или другой клиент (шаг 6).
  • Падает только на массовых запусках или плейлистах → оценка по объёму (шаг 8).

Ошибки, которые всё ухудшают

  • Cookies личного Google-аккаунта на сервере — ограничить могут аккаунт, а не только IP.
  • Запуск yt-dlp от root с общим замусоренным кешем; используйте --rm-cache-dir и кеш на пользователя.
  • Смешивание файла cookies с клиентами, которые не должны использовать cookies (yt-dlp предупреждает об этом) — получаете худшее из обоих вариантов.
  • Повтор каждые несколько секунд после челленджа; ждите минуты, а не секунды, и меняйте что-то между попытками.

Когда заплатки перестают окупаться

Если yt-dlp стоит под ботом, приложением или пайплайном, а не разовой загрузкой, стена превращается в эксплуатационную работу: ротация cookies, сервисы PO-токенов, резидентные выходы, ночные обновления. Хостинговый API держит всё это на своей стороне и отдаёт вашему коду ссылку:

curl "https://tunelio.dev/create?url=https://youtu.be/dQw4w9WgXcQ&quality=720p" \
  -H "Authorization: Bearer tnl_your_api_key"
# → { "url": "https://…/tunnel?id=…&sig=…", "file_size_str": "28.52 MB", "status": "ok" }

Tunelio — наш сервис, учитывайте это. Честная версия: если вы качаете несколько видео в неделю с домашнего подключения, оставайтесь на yt-dlp — шагов 1–3 хватит. Если вы воюете со стеной каждую неделю на серверах, дешевле перестать владеть этой проблемой. Новые аккаунты получают 100 бесплатных кредитов, карта не нужна.

Источники

  • Wiki yt-dlp — «How do I pass cookies to yt-dlp?» и руководство по PO-токенам (github.com/yt-dlp/yt-dlp/wiki).
  • README yt-dlp — требование JavaScript-рантайма для YouTube (рекомендуется Deno).
  • bgutil-ytdlp-pot-provider — плагин-провайдер PO-токенов.
  • Наши измерения (парк экстракторов Tunelio, август 2026): доля свежих выходов, попадающих на бот-стену; поведение оценки IPv6 /64.

Частые вопросы

Cookies всегда помогают?

Часто, но ненадолго. Cookies повышают доверие к запросу, но истекают, а сильно помеченный IP всё равно получает проверку. Если cookies перестают работать через день-два, реальная проблема — IP.

Безопасно ли использовать cookies своего Google-аккаунта?

На сервере — нет. Автоматизированное использование с помеченного адреса может привести к ограничению или блокировке аккаунта. Возьмите запасной аккаунт в приватном окне, экспортируйте один раз и закройте окно.

Почему на ноутбуке работает, а на сервере нет?

Ноутбук сидит на домашнем IPv4 с хорошей репутацией; сервер — в диапазоне дата-центра (часто по IPv6), который YouTube считает вероятным ботом. Сначала принудительный IPv4, затем резидентный выход.

Что такое PO-токен и нужен ли он мне?

Proof-of-Origin токен, который выдаёт скрипт BotGuard YouTube, чтобы подтвердить, что клиент — настоящий браузер. Часть клиентов без него отклоняется. yt-dlp получает его через JS-рантайм или плагин-провайдер.

Хостинговый API упрётся в ту же стену?

Он упирается в неё за вас и решает на своей стороне — свежие сессии, PO-токены и резидентные IP, — так что ваш код видит только ссылку на скачивание.

Похожие руководства