Здравствуйте.
Сегодня утром начал допиливать программу и обнаружил, что при попытке скачать страницу с видео на ютубе, выдаётся вышеуказанная ошибка. При этом, API ютуба работает
youtubedl
и curl
выдают ту же ошибку, но в curl
там еще что-то про капчу написано.
А на другом компе (в том же городе, но на другом адресе) моя программа работает Страницы качаются.
Комп перезагружал, роутер перезагружал. Не помогает. Чё опять началось-то?
Так написано ж, слишком много запросов ) Видимо слишком много обращений было, ютуб пометил этот IP и наверно как минимум требует решить капчу.
Не хочет ютуб видео отдавать не показав рекламу и т.д. , вдруг кто-то создаст альтернативный клиент/сайт без рекламы с видео ютуба
youtube-dl вроде бы советует взять куки из браузера.
https://github.com/ytdl-org/youtube-dl#http-error-429-too-many-requests-or-402-payment-required
если набрать в консоли
C:\Users\RAIN\Desktop>curl https://www.youtube.com/get_video_inf
<html lang="ru-RU" dir="ltr"><head><title>404 Not Found</title><style nonce="kVxPEH68W/7WpaXJRJly7g">*{margin:0;padding:0;border:0}html,body{height:100%;}</style><link rel="shortcut icon" href="https://www.youtube.com/img/favicon.ico" type="image/x-icon"><link rel="icon" href="https://www.youtube.com/img/favicon_32.png" sizes="32x32"><link rel="icon" href="https://www.youtube.com/img/favicon_48.png" sizes="48x48"><link rel="icon" href="https://www.youtube.com/img/favicon_96.png" sizes="96x96"><link rel="icon" href="https://www.youtube.com/img/favicon_144.png" sizes="144x144"></head><body><iframe style="display:block;border:0;" src="/error?src=404&ifr=1&error=" width="100%" height="100%" frameborder="\" scrolling="no"></iframe></body></html>
C:\Users\RAIN\Desktop>curl https://www.youtube.com/get_video_info
<не выдаёт ничего>
C:\Users\RAIN\Desktop>
а на рабочем компе:
H:\Other programs\curl\bin>curl https://www.youtube.com/get_video_info
status=fail&errorcode=2&reason=Invalid+parameters.
H:\Other programs\curl\bin>curl https://www.youtube.com/get_video_inf
<html lang="ru-RU" dir="ltr"><head><title>404 Not Found</title><style nonce="0DRQF1vm8RAQ24pVMBbhoQ">*{margin:0;padding:0;border:0}html,body{height:100%;}</style><link rel="shortcut icon" href="https://www.youtube.com/img/favicon.ico" type="image/x-icon"><link rel="icon" href="https://www.youtube.com/img/favicon_32.png" sizes="32x32"><link rel="icon" href="https://www.youtube.com/img/favicon_48.png" sizes="48x48"><link rel="icon" href="https://www.youtube.com/img/favicon_96.png" sizes="96x96"><link rel="icon" href="https://www.youtube.com/img/favicon_144.png" sizes="144x144"></head><body><iframe style="display:block;border:0;" src="/error?src=404&ifr=1&error=" width="100%" height="100%" frameborder="\" scrolling="no"></iframe></body></html>
H:\Other programs\curl\bin>
То есть, всё нормально.
я вижу. Но сейчас ведь никаких запросов не идёт. И ночью не шло.
Я тоже так сначала подумал. Но из браузера все те же запросы прекрасно проходят.
Я подключал к компу мобилу и делал ее модемом. IP-адрес, по-идее, должен был измениться. Ведь должен же был? Однако, программы всё-равно не работали. Почему?
много это сколько, например?
Ну тогда может и капчи не надо, просто куки взять.
Еще может быть просто юзерагент поменять на человеческий.
на усмотрение ютуба и его алгоритмов.
Ошибочка вышла. В мобиле был включен wi-fi от роутера. Выключил wi-fi, IP сменилось и всё заработало.
Выходит, меня на ютубе забанили Это, что, навсегда теперь?
а как их взять?
youtube-dl предлагает это делать с помощью каких-то расширений браузеров, ну и потом указать файл в параметрах youtube-dl.
мне надо в своей программе
Ну так тогда не
а передать его нужным способом своей программе, и добавлять заголовок Cookie
с содержимым файла.
что за способ?
Ну диалог выбора файла, или в какую-то определенную папку кинуть, или консольный параметр, как угодно.
вот запрос:
C:\Users\RAIN\Desktop>curl https://www.youtube.com/watch
<!DOCTYPE html><html><head><title>YouTube</title><script src="https://www.google.com/recaptcha/api.js?trustedtypes=true&hl=ru" async defer nonce="Y97RG117+O2R3ttr1p79nQ"></script><style nonce="Y97RG117+O2R3ttr1p79nQ">html{height:100%;margin:0;padding:0;border:0;font-size:100%;background:transparent}body{margin:0;padding:0;border:0;font:12px "YouTube Noto",Roboto,arial,sans-serif;background:#f1f1f1;height:100%}#captcha-page{text-align:center;height:100%;white-space:nowrap;word-break:normal}.g-recaptcha{display:inline-block}#captcha-page-content{vertical-align:middle;display:inline-block}#captcha-page-vertical-align{height:100%;display:inline-block;vertical-align:middle}p{margin:auto;color:#333;font-size:16px;white-space:normal;text-shadow:0 0 0 transparent,0 1px 1px #fff}</style><link rel="shortcut icon" href="https://www.youtube.com/img/favicon.ico" type="image/x-icon"><link rel="icon" href="https://www.youtube.com/img/favicon_32.png" sizes="32x32"><link rel="icon" href="https://www.youtube.com/img/favicon_48.png" sizes="48x48"><link rel="icon" href="https://www.youtube.com/img/favicon_96.png" sizes="96x96"><link rel="icon" href="https://www.youtube.com/img/favicon_144.png" sizes="144x144"></head><body><div id="captcha-page"><div id="captcha-page-content"><p>╨Ш╨╖ ╨▓╨░╤И╨╡╨╣ ╤Б╨╡╤В╨╕ ╨╛╤В╨┐╤А╨░╨▓╨╗╨╡╨╜╨╛ ╨╛╤З╨╡╨╜╤М ╨╝╨╜╨╛╨│╨╛ ╨╖╨░╨┐╤А╨╛╤Б╨╛╨▓.</p><p>╨з╤В╨╛╨▒╤Л ╨▓╨╡╤А╨╜╤Г╤В╤М╤Б╤П ╨╜╨░ YouTube, ╨▓╨▓╨╡╨┤╨╕╤В╨╡ ╤Г╨║╨░╨╖╨░╨╜╨╜╤Л╨╣ ╨╜╨╕╨╢╨╡ ╨║╨╛╨┤ ╨┐╨╛╨┤╤В╨▓╨╡╤А╨╢╨┤╨╡╨╜╨╕╤П.</p><form action="/das_captcha?fw=1" method="POST"><div class="g-recaptcha" data-sitekey="6Lf39AMTAAAAALPbLZdcrWDa8Ygmgk_fmGmrlRog"></div><br/><input type="hidden" name="action_recaptcha_verify2" value="1"><input type="hidden" name="next" value="/watch"><input type="submit" value="Submit"></form><style nonce="Y97RG117+O2R3ttr1p79nQ">#yt-masthead{margin:15px auto;width:440px;margin-top:25px}#logo-container{margin-right:5px;float:left;cursor:pointer;text-decoration:none}.logo{background:no-repeat url("//www.gstatic.com/youtube/img/branding/youtubelogo/1x/youtubelogo_30.png");width:125px;height:30px;cursor:pointer;display:inline-block}#masthead-search{display:flex;margin-top:3px;max-width:650px;overflow:hidden;padding:0;position:relative}.search-button{border-left:0;-moz-border-radius-topleft:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;float:right;height:29px;padding:0;border:solid 1px transparent;border-color:#d3d3d3;background:#f8f8f8;color:#333;cursor:pointer}.search-button:hover{border-color:#c6c6c6;background:#f0f0f0;box-shadow:0 1px 0 rgba(0,0,0,0.10)}.search-button-content{border:none;display:block;opacity:.6;padding:0;text-indent:-10000px;background:no-repeat url(//www.gstatic.com/youtube/src/web/htdocs/img/search.png);background-size:auto;width:15px;height:15px;box-shadow:none;margin:0 25px}#masthead-search-terms-border{flex:1 1 auto;border:1px solid #ccc;box-shadow:inset 0 1px 2px #eee;background-color:#fff;font-size:14px;height:29px;line-height:30px;margin:0 0 2px;overflow:hidden;position:relative;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color .2s ease;transition:border-color .2s ease}#masthead-search-terms{background:transparent;border:0;font-size:16px;height:100%;left:0;margin:0;outline:none;padding:2px 6px;position:absolute;width:100%;-moz-box-sizing:border-box;box-sizing:border-box}</style><div id="yt-masthead"><a id="logo-container" href="https://www.youtube.com/" title="╨У╨╗╨░╨▓╨╜╨░╤П ╤Б╤В╤А╨░╨╜╨╕╤Ж╨░ YouTube"><span class="logo" title="╨У╨╗╨░╨▓╨╜╨░╤П ╤Б╤В╤А╨░╨╜╨╕╤Ж╨░ YouTube"></span><span class="content-region">RU</span></a><form id="masthead-search" class="search-form" action="https://www.youtube.com/results" onsubmit="if (document.getElementById('masthead-search-terms').value == '') return false;"><div id="masthead-search-terms-border" dir="ltr"><input id="masthead-search-terms" autocomplete="off" onkeydown="if (!this.value && (event.keyCode == 40 || event.keyCode == 32 || event.keyCode == 34)) {this.onkeydown = null; this.blur();}" name="search_query" value="" type="text" placeholder="╨Я╨╛╨╕╤Б╨║" title="╨Я╨╛╨╕╤Б╨║" aria-label="╨Я╨╛╨╕╤Б╨║"></div><button class="search-button" type="submit" onclick="if (document.getElementById('masthead-search-terms').value == '') return false; document.getElementById('masthead-search').submit(); return false;" dir="ltr"><span class="search-button-content">╨Я╨╛╨╕╤Б╨║</span></button></form></div></div><span id="captcha-page-vertical-align"></span></div></body></html>
Если сохранить ответ в *.html файл и открыть в браузере, то
но капча не работает.
может можно что-нибудь сделать?
Можно наверно, сервисы типа анти-капчи как-то делают когда дают капчу разгадывателям капч с колотибабло )
а как попасть на страницу ввода капчи ютуба “легальным” способом? Должна же быть какая-то ссылка
Так эта страница предназначена для открывания в браузере в пределах домена ютуба. Поэтому вполне нормально, что при открытии как просто файл скрипт не работает, никто не собирался поддерживать таких клиентов, даже скорее специально решили им запретить (чтоб усложнить жизнь анти-капче и т.п.), раз есть проверка домена.
Зачем ссылка? Просто при отдаче любой страницы ютуб определяет нужно ли дать капчу.
Если просто в браузере ютуб не дает капчу, то может при открытии приватной вкладки даст. Но толку от этого, скорее всего достаточно взять куки любой сессии, где сейчас не выдает капчу.
а если куки сдохнут?
Повторить их экспорт )
не, я не понял, а почему в браузере не просит капчу? Что будет, если удалить куки браузера?
Видимо пока считает ту сессию нормальным юзером.
Наверно попросит при открытии в другом чистом браузере/приватной вкладке.
и что будет?
В смысле что? Капчу ввести попросит в этой новой сессии )
Или не попросит.
На всё воля
Теоретически если захочет может и какой-нибудь более сложный алгоритм отсеивания не-браузеров придумать, запрашивать что-нибудь скриптом и т.д. (например, сгенерировать и сохранить что-нибудь скриптом, потом отправлять серверу, если не получил — дату капчу. Сразу куча доп. геморроя создателям программ)
Или менять не оф. API хоть каждый день.
Если бы я делал что-то связанное со скачиванием видео с ютуба, то я бы наверно делал обертку над youtube-dl. Наверняка его создатели за 10 лет разработки уже понаступали на кучу граблей и решили кучу не очевидных сложностей.