Почему не удается войти в систему с помощью yt-dlp на Windows, используя имя пользователя и пароль, и не удается войти с использованием файлов cookie?

Вопрос или проблема

Похоже, YouTube недавно внес изменения в свою систему, которые, очевидно, ломают многие вещи.

Я изучил десятки статей и веб-сайтов, но не могу найти ответ на эту проблему или пример полной командной строки, которая действительно работает на Windows.

После множества попыток и ошибок я, наконец, смог получить файлы cookie из своего браузера Firefox, что, по мнению других статей, является необходимым. Однако я пробовал только файлы cookie, только имя пользователя и пароль, и оба вместе, и ничего не работает. Это браузер, в котором сохранены мои имя пользователя и пароль на YouTube.

(Я скрыл свое имя пользователя и пароль по очевидным причинам, но я использовал пакетную процедуру для тестов с использованием учетных данных, скопированных из сохраненных значений в браузере, и трижды проверил их — они верны.)

Если я пытаюсь войти только с именем пользователя и паролем, это не работает: мне говорят, что вход по имени пользователя и паролю не разрешен. Это не то, что я видел во многих статьях о том, как войти в YouTube.

F:\Downloads>yt-dlp -v  --username  "MYNAME"  --password "MYPASSWORD"  --write-auto-sub -f "bv*[height<=1080]+ba/b"   "https://www.youtube.com/watch?v=6oD0TONcmm0"
[debug] Command-line config: ['-v', '--username', 'PRIVATE', '--password', 'PRIVATE', '--write-auto-sub', '-f', 'bv*[height<=1080]+ba/b', 'https://www.youtube.com/watch?v=6oD0TONcmm0']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version [email protected] from yt-dlp/yt-dlp [dade5e35c] (win_x86_exe)
[debug] Python 3.10.11 (CPython AMD64 32bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1t  7 Feb 2023)
[debug] exe versions: ffmpeg 4.4-full_build-www.gyan.dev (setts), ffprobe 5.0-full_build-www.gyan.dev, phantomjs 2.1.1
[debug] Optional libraries: Cryptodome-3.21.0, brotli-1.1.0, certifi-2024.12.14, mutagen-1.47.0, requests-2.32.3, sqlite3-3.40.1, urllib3-2.3.0, websockets-14.1
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets
[debug] Loaded 1837 extractors
WARNING: [youtube] Login with password is not supported for YouTube. Use --cookies-from-browser or --cookies for the authentication. See  https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp  for how to manually pass cookies. Also see  https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies  for tips on effectively exporting YouTube cookies
[youtube] Extracting URL: https://www.youtube.com/watch?v=6oD0TONcmm0
[youtube] 6oD0TONcmm0: Downloading webpage
[youtube] 6oD0TONcmm0: Downloading ios player API JSON
[youtube] 6oD0TONcmm0: This video is age-restricted; some formats may be missing without authentication. Use --cookies, --cookies-from-browser, --username and --password, --netrc-cmd, or --netrc (youtube) to provide account credentials. See  https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp  for how to manually pass cookies
[youtube] 6oD0TONcmm0: Downloading web embedded client config
[youtube] 6oD0TONcmm0: Downloading player 6e1dd460
[youtube] 6oD0TONcmm0: Downloading web embedded player API JSON
[youtube] 6oD0TONcmm0: Downloading tv player API JSON
ERROR: [youtube] 6oD0TONcmm0: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See  https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp  for how to manually pass cookies. Also see  https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies  for tips on effectively exporting YouTube cookies
  File "yt_dlp\extractor\common.py", line 742, in extract
  File "yt_dlp\extractor\youtube.py", line 4614, in _real_extract
  File "yt_dlp\extractor\common.py", line 1276, in raise_no_formats

Если я попробую войти с именем пользователя, паролем и файлами cookie, это тоже не работает. Мне говорят, что вход с паролем не поддерживается.

F:\Downloads>yt-dlp -v --cookies cookies.txt  --username  "MYNAME"  --password "MYPASSWORD"  --write-auto-sub -f "bv*[height<=1080]+ba/b"   "https://www.youtube.com/watch?v=6oD0TONcmm0"
[debug] Command-line config: ['-v', '--cookies', 'cookies.txt', '--username', 'PRIVATE', '--password', 'PRIVATE', '--write-auto-sub', '-f', 'bv*[height<=1080]+ba/b', 'https://www.youtube.com/watch?v=6oD0TONcmm0']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version [email protected] from yt-dlp/yt-dlp [dade5e35c] (win_x86_exe)
[debug] Python 3.10.11 (CPython AMD64 32bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1t  7 Feb 2023)
[debug] exe versions: ffmpeg 4.4-full_build-www.gyan.dev (setts), ffprobe 5.0-full_build-www.gyan.dev, phantomjs 2.1.1
[debug] Optional libraries: Cryptodome-3.21.0, brotli-1.1.0, certifi-2024.12.14, mutagen-1.47.0, requests-2.32.3, sqlite3-3.40.1, urllib3-2.3.0, websockets-14.1
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets
[debug] Loaded 1837 extractors
WARNING: [youtube] Login with password is not supported for YouTube. Use --cookies-from-browser or --cookies for the authentication. See  https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp  for how to manually pass cookies. Also see  https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies  for tips on effectively exporting YouTube cookies
[youtube] Extracting URL: https://www.youtube.com/watch?v=6oD0TONcmm0
[youtube] 6oD0TONcmm0: Downloading webpage
[youtube] 6oD0TONcmm0: Downloading ios player API JSON
[youtube] 6oD0TONcmm0: This video is age-restricted; some formats may be missing without authentication. Use --cookies, --cookies-from-browser, --username and --password, --netrc-cmd, or --netrc (youtube) to provide account credentials. See  https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp  for how to manually pass cookies
[youtube] 6oD0TONcmm0: Downloading web embedded client config
[youtube] 6oD0TONcmm0: Downloading player 6e1dd460
[youtube] 6oD0TONcmm0: Downloading web embedded player API JSON
[youtube] 6oD0TONcmm0: Downloading tv player API JSON
ERROR: [youtube] 6oD0TONcmm0: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See  https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp  for how to manually pass cookies. Also see  https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies  for tips on effectively exporting YouTube cookies
  File "yt_dlp\extractor\common.py", line 742, in extract
  File "yt_dlp\extractor\youtube.py", line 4614, in _real_extract
  File "yt_dlp\extractor\common.py", line 1276, in raise_no_formats

Если я попробую войти только с файлами cookie, это не работает.


F:\Downloads>yt-dlp -v --cookies cookies.txt   --write-auto-sub -f "bv*[height<=1080]+ba/b"   "https://www.youtube.com/watch?v=6oD0TONcmm0"
[debug] Command-line config: ['-v', '--cookies', 'cookies.txt', '--write-auto-sub', '-f', 'bv*[height<=1080]+ba/b', 'https://www.youtube.com/watch?v=6oD0TONcmm0']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version [email protected] from yt-dlp/yt-dlp [dade5e35c] (win_x86_exe)
[debug] Python 3.10.11 (CPython AMD64 32bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1t  7 Feb 2023)
[debug] exe versions: ffmpeg 4.4-full_build-www.gyan.dev (setts), ffprobe 5.0-full_build-www.gyan.dev, phantomjs 2.1.1
[debug] Optional libraries: Cryptodome-3.21.0, brotli-1.1.0, certifi-2024.12.14, mutagen-1.47.0, requests-2.32.3, sqlite3-3.40.1, urllib3-2.3.0, websockets-14.1
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets
[debug] Loaded 1837 extractors
[youtube] Extracting URL: https://www.youtube.com/watch?v=6oD0TONcmm0
[youtube] 6oD0TONcmm0: Downloading webpage
[youtube] 6oD0TONcmm0: Downloading ios player API JSON
[youtube] 6oD0TONcmm0: This video is age-restricted; some formats may be missing without authentication. Use --cookies, --cookies-from-browser, --username and --password, --netrc-cmd, or --netrc (youtube) to provide account credentials. See  https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp  for how to manually pass cookies
[youtube] 6oD0TONcmm0: Downloading web embedded client config
[youtube] 6oD0TONcmm0: Downloading player 6e1dd460
[youtube] 6oD0TONcmm0: Downloading web embedded player API JSON
[youtube] 6oD0TONcmm0: Downloading tv player API JSON
ERROR: [youtube] 6oD0TONcmm0: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See  https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp  for how to manually pass cookies. Also see  https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies  for tips on effectively exporting YouTube cookies
  File "yt_dlp\extractor\common.py", line 742, in extract
  File "yt_dlp\extractor\youtube.py", line 4614, in _real_extract
  File "yt_dlp\extractor\common.py", line 1276, in raise_no_formats

Что еще можно сделать?

Почему yt-dlp говорит мне войти с –cookies, когда подробный вывод ясно показывает, что я использовал файлы cookie, и это не сработало?

Почему yt-dlp говорит мне использовать –username и –password в качестве варианта входа, когда YouTube явно отклоняет вход, выполненный таким образом?

Что еще нужно сделать, чтобы yt-dlp вошел в YouTube? Разве у кого-то нет полных инструкций или полной командной строки Windows, которая работает и предоставит полезный пример для тех из нас, кто пытался, но не смог это заставить работать?

Я обнаружил ряд вещей, которые не работали или не были задокументированы. Возможно, мне следовало бы найти это раньше, но никто не идеален; и я считаю, что, по крайней мере, часть из этого не по моей вине.

Сейчас это может быть «очевидно», но для того, чтобы вход в систему работал с –cookies или –cookies-from-browser, он должен найти или извлечь cookie, содержащий информацию для входа. Я не видел, чтобы это явно где-то говорилось.

Я пытался извлечь cookies из двух версий Firefox, и он извлек несколько cookies в файл cookie.txt: но cookie с информацией для входа (и многое другое) не был извлечен. Во время этого процесса не было сообщений об ошибках от yt-dlp, и в документации нет предупреждений о необходимости проверить извлеченную информацию о cookies, чтобы убедиться, что там есть нечто, помеченное как LOGIN_INFO. Я использовал расширение Cookiebro для проверки, и в браузере Firefox определенно есть cookie LOGIN_INFO: я не имею понятия, почему yt-dlp не смог его найти и извлечь.

Я не буду устанавливать Google Chrome на свою систему, но у меня есть пара других браузеров, основанных на Chrome и которые должны работать: в частности, Thorium. К сожалению, yt-dlp даже не будет искать информацию о cookies из этого браузера, даже с явно указанным полным путем к браузеру: видимо, yt-dlp не может читать любой браузер на основе Chrome, кроме браузера Google. Мне пришлось установить расширение Cookie Editor (которое некоторые люди называют вредоносным ПО), которое затем позволило мне извлечь cookie с информацией для входа. Это расширение может экспортировать cookies в трех форматах: я выяснил, что формат «Netscape» совпадает с тем, что я вижу, когда использовал –cookies для извлечения cookies.

Теперь я могу успешно скачивать видео с возрастными ограничениями, используя извлеченный cookie.

Я считаю, что необходимо внести ряд исправлений и объяснений.

Документация по извлечению информации о cookies и ее использования для входа / загрузок должна явно заявлять, что должен быть cookie с информацией для входа, и вам следует проверить файл cookie.txt, чтобы удостовериться, что он там есть. Необходимо предоставить больше информации о том, как на самом деле получить необходимую информацию.

Если вы используете –cookie для загрузки видео и это не работает, сообщение об ошибке, в котором говорится, что не было входа с предложением попробовать –cookies, –username и –password и т.д., должно также включать предупреждение о проверке файла cookies на наличие cookie LOGIN_INFO.

Должно быть объяснение, почему вход с использованием –username и –password не работает. Если он должен работать, разработчики должны объяснить, почему в данный момент это не работает. Либо нужны исправления, либо есть другая информация о параметрах, которые также необходимо включить, но которые полностью отсутствуют в документации и файлах помощи. Если, однако, –username и –password фактически не должны работать с YouTube, должно быть четкое заявление, чтобы люди не тратили время и усилия на использование заведомо неработающего параметра.

Очевидно, необходимо провести гораздо больше работы над –cookies-from-browser. Они не работали у меня на двух версиях Firefox и не работали ни на одном из браузеров на основе Chrome, которые у меня есть.

Я не хочу, чтобы это воспринималось как критика в адрес yt-dlp. Я часто пользуюсь им и очень его люблю, и понимаю, что работа с YouTube может быть сложной. Но я чувствую себя обязанным указать на некоторые проблемы, требующие внимания: особенно документации.

.

Ответ или решение

Для того чтобы понять, почему использование yt-dlp для входа в YouTube с помощью имени пользователя и пароля на Windows не удаётся, а также почему не работают кукисы, необходимо рассмотреть ряд аспектов, касающихся работы с данным инструментом. yt-dlp — это форк более известного инструмента youtube-dl, который применяется для загрузки видео и аудио с различных платформ, включая YouTube.

Теория

Одной из причин, по которой возникают трудности, является то, что YouTube регулярно обновляет свою платформу, вводя новые методы защиты, чтобы предотвратить автоматизированный доступ к своему содержимому. Это усложняет использование инструментов для загрузки контента, особенно тех, которые пытаются обойти систему аутентификации.

Исторически, с некоторыми веб-сайтами можно было авторизироваться с помощью имени пользователя и пароля. Такие методы часто становились небезопасными или нефункциональными из-за изменений на стороне сервера или более жестких мер безопасности. В случае YouTube это привело к отказу от поддержки ввода паролей и переходу на аутентификацию основанную на кукисах.

Пример

Вы столкнулись с несколькими ошибками при попытке авторизации:

  1. Попытка входа через имя пользователя и пароль приводит к предупреждению, что "Вход с паролем не поддерживается для YouTube". Это указывает на то, что данный метод был либо устаревшим, либо небезопасным, и его заменили на другой способ аутентификации с использованием кукисов.

  2. Использование кукисов из браузера Firefox тоже не увенчалось успехом из-за отсутствия критически важного кукиса "LOGIN_INFO". Это указывает на сложности при сборе необходимых данных для авторизации, что в свою очередь может быть связано как с конфигурацией браузера, так и с ограничениями самого yt-dlp относительно извлечения данных из различных браузеров.

Применение

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

Для этого можно использовать следующие шаги:

  1. Извлечение кукисов: Используйте расширения для браузера, такие как Cookiebro или Cookie Editor, чтобы экспортировать кукисы в формате Netscape, который может распознавать yt-dlp.

  2. Проверка содержимого файла кукисов: Убедитесь, что среди извлеченных данных присутствует кукис LOGIN_INFO. Если его нет, проверьте расширение и браузер, а также версии приложения, из которого извлекаете кукисы.

  3. Использование параметра командной строки: Запустите yt-dlp с параметром --cookies cookies.txt, указав верно извлечённый файл. Убедитесь, что путь до файла правильный и что файлу доступны все необходимые приложения.

Советы по устранению неполадок

  1. Тщательно изучите документацию: Обратитесь к ведущим на GitHub инструкциям, следуя последним обновлениям и FAQ по использованию yt-dlp.

  2. Регулярно обновляйте yt-dlp и другие используемые инструменты, такие как браузеры и их расширения, так как изменения могут повлиять на возможности авторизации и извлечения данных.

  3. Подумайте о безопасности: Имейте в виду, что хранение и использование кукисов связано с риском безопасности, поэтому необходимо их защитить.

Заключение

Разработчики yt-dlp активно работают над улучшением инструмента, однако часто сталкиваются с проблемами из-за изменений на платформах, таких как YouTube. Важно подходить к решению задач с пониманием, что обстановка динамично меняется и требует регулярного обновления знаний и методологий. Непрерывное изучение документации и обмен опытом с сообществом пользователей yt-dlp помогают сохранять эффективность при использовании данного инструмента.

Оцените материал
Добавить комментарий

Капча загружается...