yt-dlp: "Sign in to confirm you're not a bot"
Эта ошибка yt-dlp означает, что YouTube счёл ваш запрос автоматическим. Разберём, что её вызывает, какие исправления работают и как избежать её совсем.
Что означает ошибка
YouTube решил, что запрос похож на бота, и теперь требует вошедшую, проверенную сессию, прежде чем отдать видео. yt-dlp показывает это как «Sign in to confirm you’re not a bot». Это серверная стена, а не баг yt-dlp.
Почему это происходит
- Ваш IP помечен — диапазоны дата-центров и VPS (и IPv6) срабатывают быстрее всего.
- Нет PO-токена: YouTube всё чаще хочет Proof-of-Origin токен, который yt-dlp не всегда может создать.
- Нет cookies: анонимный клиент больше похож на скрапер, чем на браузер.
- Объём: слишком много запросов с одного IP за короткое время.
Исправления, которые работают
Начните с передачи настоящих cookies браузера, чтобы запрос выглядел как вошедшая сессия:
yt-dlp --cookies-from-browser chrome "https://youtu.be/dQw4w9WgXcQ"Если не помогло: принудительно используйте IPv4 через --force-ipv4, установите JS-рантайм (Deno), чтобы yt-dlp мог создать PO-токен, идите через резидентный прокси вместо IP вашего VPS и обновитесь до последней ночной сборки — экстракторы часто меняются.
Постоянное решение: не воюйте со стеной
Cookies истекают, IP снова помечаются, PO-токены меняются. Хостинг-API держит свежие сессии, резидентные IP и PO-токены на сервере, поэтому ваш код просто просит ссылку и получает её:
curl "https://tunelio.dev/create?url=https://youtu.be/dQw4w9WgXcQ&quality=720p" \
-H "Authorization: Bearer tnl_your_api_key"Дальнейшие шаги
Новые аккаунты получают 100 бесплатных кредитов без карты. Если стена бота постоянно всплывает в продакшене — это сигнал вынести извлечение с вашего собственного IP.
Частые вопросы
Добавление cookies всегда решает проблему?
Часто, но не навсегда. Cookies истекают, а помеченный IP всё равно могут проверить, поэтому cookies — это заплатка, а не надёжное решение.
Что такое PO-токен?
Proof-of-Origin токен, которым YouTube проверяет клиента. Чтобы его создать, yt-dlp нужен JS-рантайм, и схема со временем меняется.
Хостинг-API упрётся в ту же стену?
Он берёт стену на себя — ротация резидентных IP, свежие сессии и PO-токены работают на сервере, так что ваше приложение не видит проверку.