Comments 146
Я планирую, наоборот:
Сохранить.
Отложить в долгий ящик до Нового Года
Опробовать.
Разобрать на элементы.
Показать школьникам - благо они уже интересовались.
ПРОФИТ?
PS Если к Интернету совсем не придет ЧеБуратор после НГ....
PSS И, разумеется, спасибо Вам за Работу. Как раз хотел скачать ряд аудио дорожек с ютуба, чтобы не зависеть от замедляторов. Ваше решение кажется мне почти идеальным.
Очень полезная статья. Спасибо.
вызываем функцию fragemtn_data
Даже название функции фрагментировано!
Это тенденция такая, сейчас все так называют https://github.com/theo0x0/nodpi/blob/main/nodpi.py#L57
и потихоньку фиксится поставщиками ТСПУ (только сейчас понял, что "угрозы" в официальном названии этого устройства обозначает пользователей youtube. Т.е. угроза исходит от тех, кто смотрит видео )
статья отличная. но именно для школьников ,чтобы мышление развивалось. практическое использование его близко к нулю
Спасибо ! Полезная статья. Сам я сейчас смотрю через Tor Browser. Всё великолепно работает ! Ни платных VPN, ни каких-то левых расширений. Единственно что поначалу опечалило, пошли рекламные вставки от ютуба. Но поставил на тор addBlock, и это тоже исчезло. Сейчас смотрю как до блокировки. Москва, МГТС, GPON.
Географические ограничения тору тоже не помеха.
Братка а скорость какая? 360px?
Да нормальная скорость и нормальное качество. Как до начала блокировок.
Мне вот чисто познавательно интересно, тот кто поставил минус, сам пробовал через тор посмотреть ??? Или просто от большого ума ???
Скорее от малого. Но это точно не я)
Я по началу тоже пытался через TOR, даже на телек его поставил, но столкнулся с проблемой: периодически теряется соединение, приходится перезапускать браузер и устанавливать его заново - а устанавливается оно минут 20-30 - просто висит, как будто ничего не происходит, но потом, в фоне, подцепляется к мостам (мосты всегда актуальные использую). И конечно, после этого всегда приходится снова входить в аккаунт гугла на ютубе, проходить все многофакторки... что вкупе создаёт неприятный геморрой, когда нужно посмотреть какое-то видео желательно сейчас, а приходится ждать минут 30, поэтому пришлось перейти на proxy (который почему-то называют VPN-ом, но никакие сети он, конечно, не строит)
Тор остался на прозапас как запасной вариант
Ну я пробовал смотреть. 240-360px.
Вероятно те, у кого сайты в Торе еле шевелятся, когда вы YouTube в 4К смотрите
Тор вроде как не предназначен для тяжёлого трафика, типа торрентов или ютуба. Если сразу много пользователей смотреть начнут, ляжет.
Скорость свежего начисто поставленного Тора скорее рандомна и зависит от того к каким мостам он достучится, и как дальше пойдёт соединение. Понятное дело что это будет медленнее чем то что он способен из себя выжать в идеальных условиях как минимум в пару раз даже с поправкой на агрессивную среду российской федерации, но я вполне верю, что там если повезёт будет и 20 mb/s, а это уже фуллхд без прогрузок. Надо сравнить ибо у меня есть как специализированная сборка так и браузер.
А у вас Tor не блокируют? Я по осени брал ванильную сборку (т.е. не совершал какие-то доп. телодвижения), не работало. Как понял, тоже РКН что-то где-то блокировал. Какой-то внятной инструкции по этому поводу не нашёл. Точнее даже так: "Добавьте сервера". Где брать список серверов - не нашёл.
Телеграм
Мосты, @tor_briges
Это в тг бот, вставляем, выбираем obfs4
Такое имя не найдено, а если "мосты" написать правильно, то находится
как они интересно имя без суффикса _bot
получили?
лично Павел помог?
Адреса мостов не являются общедоступными, вам придется запрашивать их самостоятельно. У вас есть несколько вариантов
Посетите https://bridges.torproject.org/ и следуйте инструкциям, или
Отправьте письмо на bridges@torproject.org, используя Gmail или Riseup
Запрашивайте мосты из браузера Tor
Отправьте сообщение боту @GetBridgesBot в Telegram
obfs4 медленные... лучше потом на websocket. 1080 нормально летает
У меня есть такой список проименованных мостов на полторы сотни позиций работающих и даже неработающих на новейшем протоколе. В Тор не так давно прикрутили собственную реализацию влесса поэтому блокировать его никто не умеет совершенно, а старые протоколы не могут победить из-за их количества. Правда не так давно snowflake грохнули, люди делают свою работу.
Я с начала года пишу модифицированный Тор который можно поставить в любой браузер через расширение с автонастройкой по синхронизации к файлу у меня на Гитхаб. 4К 60 в принципе со скрипом тянет без подгрузок. Но прикол в том что это далеко не простой Тор а ядро от него, поэтому реализовано полное раздельное туннелирование.
Щас чекнул, Тор и в браузере, и в моей сборке которая на совсем иных принципах создания соединения построена, выжимает чуть выше 40 mb/s, а этого с головой.
Странно, тоже Москва, МГТС GPON, но Tor давно уже не подключается, только через VPN начинает работать
Это первое решение - на тор перейти, или уже пробовали gdpi/zapret? и они перестали работать?
Еще огорчает что нельзя (можно, но лучше не стоит) входить под свой аккаунт под тором
Пойду друзьям рассказывать, что смотрю ютуб через змею
Спасибо за скрипт, РТК, МТС не пробивает, а ТТК как раз пробивает)
Эх, сделал бы кто скрипт чтобы можно было на условный кинетик одной командой ставить (типа как outline). И обновлять автоматом список доменов.
Я бы даже задонатил.
Не ну в статье явно обман.
Поясняю: Когда используете магическую палочку, то вы используете далекие датацентры. А если в рф сервера ютуба деградировали, что бы ты не написал и как не извернулся, то ты же обращаешься к этим деградированным серверам.
Это вы немного не понимаете ситуации. Да, серверов GGC стало меньше в РФ (примерно в 2 раза). Да, это вызывает некоторое замедление из-за более частых обращений к холодным серверам YouTube. Но это очень незначительное замедление. Но зато это значительный внешний трафик через западных магистралов, за что надо платить провайдерам денежку.
Поэтому да, любой обход DPI вернет практически всю старую скорость YouTube, но при этом сделает наших провайдеров чуточку беднее.
...что лично у меня даже вызывает некоторое удовольствие.
Хотя да - и злорадство непродуктивно, и вина их косвенная - но...
Т.е. если задурить DPI трафик не пойдет на российские сервера (кэши)? А пойдет через границу?
Нет, при «запутывании» DPI - маршруты остаются такими же, как и без него. Но при перенаправлении трафика внутри зашифрованного туннеля - кэша от провайдера уже не будет и будет расходоваться дорогой внешний трафик
Ну вот я почему и спрашивал, что если "починить" интернет "правильной" расстановкой пакетов в запросе, как я думал, то он должен пойти в тоже место, что и при "исправном" интернете, пусть и на меньшее число оставшихся исправных GGC. Понятно что если будет туннель, то всё пойдет на удаленные сервера.
Думаю у меня IP cloudflare правильную локацию показывает и YT смотрю с российских GGC
Вам щас сколько за такие комментарии платят?
Вруша!
ништяк ребят, нормально вы читаете с юмором , пойду как обычно новый акк регать, хабру статистику новых акков поднимать.
Remote end closed connection
буквально недавно видео стало воспроизводиться ровно одну минуту и останавливаться.
У меня подозрение, что это в РКН сделано против скрипта GoodCheck - подборки параметров запуска goodbyeDPI. Для скрипта первая минута выглядит как удачный обход блокировки.
Мне кажется, что это уже на стороне ютуба - там по идее должна быть реклама, возможно как-то определяет, что не может её воспроизвести. На некоторых впнах нормально видео воспроизводится, а на некоторых на 59 секунде зависает.
С goodbyeDPI иногда приходится перезагружать страницу несколько раз, чтобы видео начало воспроизводиться, но проблем с первой минутой нет. Запускаю `1_russia_blacklist_YOUTUBE_ALT.cmd` с ключом -6 вместо 5.
С ходу -6 не повлиял как и предыдущие разы игры с параметрами. Пока отложил до выходных. Попробую в Wireshark наблюдать.
у меня с гудбаем давно все отвалилось, Goodcheck гонял, уже не помню сколько там максимум было SUCCESS'ов, но все они касались прочих сайтов из блоклиста, адреса ютуба были почти по нулям) В итоге воткнул себе вторым сервисом Zapret от FlowSeal - с ним все ок.
Почему не от bol-van?
FlowSeal намудрил в конфигах фиг пойми что, лучше использоать сборку YTDisBystro от KDS
спасибо, запишу себе как альтернативу) Мне кажется уже пора пост оформлять с перечнем "ускорителей кэшей ютуба"))
На данный момент лучшими ускорителями кэша ютюба являются Husi / NekoRay + 3X-UI + Vless-Xtls-Reality со Steal Oneself, AmneziaWG с WARP и Zapret (либо сборка от KDS, либо оригинал от bolvan). На роутерах вроде тоже свои ускорители есть, но у меня нет возможности их изучить (роутер простенький)
у меня 3X-UI (VLESS-xtls-vision) развернут. Но я его только на клиентах воткнул и не на постоянку. Я его включаю на короткое время, чтоб войти на ntc, в чатгпт или типа того, и потом отключаю.))
вот жду с али одновлатник nanopi r3s
думаю его перед роутером воткну и на нем уже запрет. И возможно еще и xray с нормальными роутами. Правда я еще не раскурил правильную настройку защиты от зондирования
Проблема с 59 секундой и другими радостями связаны с jnn-pa.googleapis.com
Его нужно добавить в проксирование (возможно достаточно будет добавить в ускоритель кэша, но я нне проверял)
По одной минуте отсекался также клиент NewPipe и Youtube Revanced, когда его обфускацию задетектили. Я тоже мнения, что это со стороны YT.
Это что-то со стороны ютуба. Началась такая же фигня, нормального решения пока не нашел, но нашлись обсуждения в инете с такой же проблемой. Такая фигня не только в РФ.
Хм, а я думал обходилка (zapret) что-то всё не может...
Попробуйте костыль с emded версией. Вместо адреса типа www.youtube.com/watch?v=xxxxx введите www.yout-ube.com/watch?v=xxxxx (youtube -> yout-ube) и посмотрите что получится. Еще вариант скачивать видео через yt-dlp. Если хочется еще костылей наберите в гугле "youtube 59 seconds", там будет куча обсуждений.
Юзаю Тор для Ютуба и такая проблема тоже стала появляться, именно на одной минуте останавливается. Заметил что на таких видео не показывается реклама вначале, нажимаю "создать новую цепочку для этого сайта" и если вначале видео есть реклама все ок.
Заметил подобную проблему несколько недель назад при просмотре Ютуба в браузере. Помогло разблокировать запросы к jnn-pa.googleapis.com
У меня такой трабл именно в Firefox. В Firefox у меня аддон "Enhancer for YouTube" - думал дело в нём, но нет и без него видео воспроизводится до 1 минуты. А вот в параллельно запущенном Chrome - никаких остановок видео.
Это как раз проблема ютуба. Если смотреть те же видео через embed - грузится нормально. Год назад такая же проблема была на мобильных клиентах, а теперь браузеры сломали.
Тонкая настройка и скачивание, например целого канала, вещь довольно геморройная
Совершенно не геморойная, писал генератор видео на основе скачанных с Ютуба - канал в параметрах и поехали 😀
можно ли использовать nodpi если ты уже "за" прокси?
хе, наверное именно та и работает одно приложение для Андроида.
Автор, не раскрыта тема подписанных ссылок И троттлинг ютуба, а это практически любой интересный контент на ютубе. Без расшифровки подписи будете получать 403, без антитроттлинга - будете качать со скоростью меньшей скорости просмотра видео. И эти механизмы (особенно троттлинг) обходить на питоне тяжелее чем на js. Сидя в браузере можно просто дотянуться до родного ютубовского кода и заставить его работать на себя (я в свое время занимался такой качалкой, пришлось погружаться в тему)
Как не странно , заработало , посвно с маленькими поправками😏
В основном не работает, в ошибке пишет:
Удаленный хост принудительно разорвал существующее подключение
Но бывает видео начинает воспроизводиться.
С чем может быть связано и как исправить?
Буквально вчера искал эту инфлюацию не нашел:( А тут на тебе... Спасибо.
Запустил на linux - работает!
Есть вопрос, на Windows работает по умолчанию алгоритм Нейгла, то есть мелкие пакеты опять склеит в большой. Отключается флагом при открытии сокета. Собственно вопрос asyncio.start_server() где-то внутрях отключает этот алгоритм? Иначе на винде бы не работало.
Интересный вопрос...
Отвечаю за свой же вопрос https://docs.python.org/3/library/asyncio-eventloop.html
Changed in version 3.6: The socket option socket.TCP_NODELAY is set by default for all TCP connections.
А как же алгоритм нейгла? По идее стек tcp\ip соберет из мелких пакетов большой опять?
TCP/IP там ни при чем, фрагментируется на уровне протокола TLS - https://habr.com/ru/articles/870110/comments/#comment_27724910
Способ не сработал (у меня:).
Конкретней по шагам:
print('Title:', yt.title) -> print('Title:', video.title);
Работаю на своем голландской серваке (убрать "Плохие CDN google" :);
Запускаю:
video = YouTube(url=url, on_progress_callback=on_progress)
Опа, ошибка:
"pytubefix.exceptions.BotDetection: WB_RnYcDdu0 This request was detected as a bot. Useuse_po_token=True
to view. See more details at https://github.com/JuanBindez/pytubefix/pull/209"После вкуривания мануала по ссылке, запускаю:
video = YouTube(url=url, on_progress_callback=on_progress, use_po_token=True)
Результат как в п.3:"This request was detected as a bot"
Дальнейшие мои попытки со сменой PO, IP результат давали как в п. 4
Но в общем, автору спасибо. Если 3-я либа дает одинаковый результат, то значит по простому ютуб не взять, походу надо эмулировать полноценного юзера :)
Впервые за много лет я сохранил статью на диск, а не просто ссылку от неё.
А у меня не запускается. В коде не определен некий объект 'yt'. И ничего не качает.
По моему опыту (и пониманию) есть два типа проблем с Youtube: блокировка и "деградация". Блокировка - это когда вы зашли на сайт youtube, он вам выдал ссылки на фрагменты видео с какого-то сервера за рубежом, ваш траффик туда заблокировали, и nodpi с какими-то параметрами его разблочит.
А вот второй вариант хуже - это когда провайдер Ростелеком (может, и у других бывает, но у него - точно). Тогда youtube выдаст ссылки на фрагменты видео с серверов ggc на площадках Ростелекома. А сервера эти "деградировали" (сложно, что-ли, "деградировать" сервер, к которому есть физический доступ?..), и видео не отдадут. Вообще. И тут noDPI не поможет ни в каком виде, потому что блокировки (и прохода траффика через границу) нет.
Когда вы пытаетесь получить доступ к заблокированному веб-сайту, DPI отправляет вам HTTP 302 Redirect, и делает это быстрее, чем веб-сайт к которому вы обращаетесь.
А как так получилось что DPI может читать и подменять содержимое TLS сессии? Вам не какжется что слова про ответ с 302 и редиректом немного надуманны?
Я думаю, это копипаста с какого-то старого описания. Когда-то оно именно так и работало, по крайней мере, для http, у того же Ростелекома, например. Было хорошо, заблокировал эти дополнительные пакеты у себя на шлюзе, и радуешься.
Возможно вы и правы, потому что это описание пассивного dpi, а сейчас обычно применяется активный dpi
скажите, а для телефона это работает?
Дополните пожалуйста, а то не понятно что делать с кодом типа
async def main(host, port): server = await asyncio.start_server(new_conn, host, port) await server.serve_forever()
async def pipe(reader, writer): while not reader.at_eof() and not writer.is_closing(): try: writer.write(await reader.read(1500)) await writer.drain() except: break writer.close()
Сперва создали один файл, потом второй nodpi.py
, а куда код сохранять? Если в файл nodpi.py
то при запуске не чего не происходит.
Надо python хоть немножко знать
Надо всю программу, убрав авторские комментарии, собрать последовательно в один файл nodpi.py, и запустить ее в фоновом режиме, для Termuxa в Андроиде это: python nodpi.py & .
А питон знать при этом необязательно, вам готовую программу дали.
скачивать целые плейлисты
yt-dlp https://www.youtube.com/playlist?list=плейлист
каналы
yt-dlp https://www.youtube.com/@имяканала
и даже субтитры
yt-dlp --write-subs --skip-download https://www.youtube.com/watch?v=видео
При этом yt-dlp самостоятельно выберет потоки видео и аудио максимального качества и смержит их в один файл при помощи ffmpeg.
Решительно не понимаю, в чем здесь геморрой.
А чтоб видео скачать: yt-dlp https://www.youtube.com/watch?v=видео ?
видео - это номер видео? Если так, то у меня ничего не получилось. (показывает на "https" - синтаксическая ошибка). Как правильно?
А, поняла, yt-dlp - это не просто команда, а целое специальное дополнение, которое надо полдня устанавливать, и полдня с ним разбираться. В общем, от Гугла толку больше, чем от этого вашего хабра.
Часа два поработало, потом перестало. Плюс время от времени соединение рвется
жаль, что я не программист и ничего не понимаю в машинных кодах((
так понял что это не для простого обывателя как в понятном интерфейсе типа запрет и гудбай.
Открываем YouTube и убеждаемся, что все работает или не работает :)
не работает.
А у меня заработало, ура. Правда пока только на планшете Самсунг, на планшете Хуавей даже среду для Питона не удается установить (пока), даже из apk, на хуавее также не вижу возможности открыть прокси.
Не подскажете ли теперь, где брать готовые списки доменов для других приложений?
А у флибусты заблокирован ip-адрес? В смысле что для неё данное решение не поможет?
Огромное спасибо автору, эта статья была у меня в ленте Хрома.
Дополняю: на планшете Самсунг работает и от вайфая с мобильного роутера, и от мобильного интернета с сим-карты на планшете (провайдеры разные), а на планшете Хуавей не заработало, уже после установки прокси на вайфае интернет исчезает, после запуска программы вроде как появляется, но все программы работают криво, ютуб не работает.
А кто-нибудь может подсказать: что именно делает код:
while data:
part_len = random.randint(1, len(data))
parts.append(bytes.fromhex("1603") + bytes([random.randint(0, 255)]) + int(part_len).to_bytes(2, byteorder='big') + data[0:part_len])
data = data[part_len:]
remote_writer.write(b''.join(parts))
await remote_writer.drain()
внутри fragemtn_data ?
Хочу на golang переписать с поддержкой HTTP (код python из статьи работает только с HTTPS) и в домашней сети такой прокси использовать. С python почти не знаком (((
Генерирует много рандома.и конвертирует его в байты, если очень обще говорить.
Он ищет (чуть выше приведенного фрагмента) TLS пакет, содержащий один из заблокированных доменов строкой (это будет ClientHello, скорее всего), затем разбивает его на несколько TLS пакетов-контейнеров, при этом вместо поля TLS Minor version вставляет мусор.
0x1603 - это протокол Handshake + TLS Major = 3
Почему вся эта адская параша вообще работает хоть иногда, мне неведомо. Ткните меня, знающие люди, в RFC. Ну или современные реализации TLS написаны весьма безалаберно, что это проглатывают.
Хороший вопрос. По RFC там фрагментация на record layer, так что сама разбивка понятная. А имплементации, видимо, игнорируют версию протокола, если она не в первой записи. С точки зрения DPI как раз понятно - если они не пересобирают поток как положено, а ориентируются на честное повторение имплементацией, оно и будет для них неведомым.
Я поэкспериментировал с этой функцией - там такая каша стала в браузере на странице ютуба отображаться... Тыкаешь на один ролик, воспроизводится другой)
Спасибо за отличную статью. Позвольте несколько комментариев:
1. Часто в имени ролика содержатся символы, которые непригодны для наименования файлов.Это рушит работу ffmpeg. Приходится писать костыль для исправления имен на этапе скачивания:
def sanitize_filename(filename): # Убираем недопустимые символы для Windows
filename = re.sub(r'[^\w\s.-]', '', filename) # Удаляем запрещенные символы
filename = re.sub(r'\s+', '_', filename) # Заменяем пробелы на подчеркивания
return filename
video_filename = sanitize_filename(video_stream.default_filename)
audio_filename = sanitize_filename(audio_stream.default_filename)
output_filename = sanitize_filename(f"{yt.title}.mp4")
video_stream.download(filename=video_filename)
audio_stream.download(filename=audio_filename)
combine(audio_filename, video_filename, output_filename)
2. Скорее всего потребуется добавить путь ffmpeg
в переменную PATH.
P.S. С частью роликов ffmpeg при объединении не справляется, хотя по отдельности webm и m4a прекрасно читаются. Обновлял ffmpeg, но не помогает. Сталкивались с таким?
В pytubefix есть встроенная функция для этого, надо доки посмотреть, точно не скажу
Нет, не сталкивался, ничего не могу сказать. Только если фильтровать так, чтобы было mp4, а не webm
Обновил все кодеки и объединенное видео стало открываться во всех плеерах. До этого только VLC справлялся, MPC рисовал крякозябры. Не думал, что ffmpeg настолько кардинально переписали.
у меня на linux mint (windows у меня лагает) выдает ошибку line 18, in combine
raise SystemError(code)
SystemError: 32512
как ffmpeg добавить в впапку со скриптом чтобы скрипт видел его? Скадите пожайлуста, как решить эту ошибку?
Лиса это хорошо. Но как указать соединение через прокси для хромиум?
Сразу же при при попытке скачать получаю 403
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden
А на микротике такое возможно реализовать?
Если я правильно понимаю блокируются не только перечисленные домены, а типа таких:
rr5---sn-gvnuxaxjvh-c356.googlevideo.com с которых собственно видео отдается, разве нет?
Интересная статья в плане обхода DPI, но остается вопрос все же почему не использовался yt-dlp? В начале статьи говорится, что он использоваться не будет, а будет свое решение, но в итоге используется стороннее решение в виде pytube.
Про своё решение я говорил в плане dpi.
А как же без библиотек? Зачем изобретать велосипед, если всё уже есть? Ну и yt-dlp хорош как консольная утилита, а с библиотекой у них не очень. Во всяком случае pytubefix удобнее и проще
у меня скрипт выдает ошибку: connection refused"
Обвиваем YouTube змеем, или как смотреть и скачивать видео с YouTube без VPN на чистом Python-е. Часть 1