B-Checker - авто-подбор и сохранение стратегий ByeDpi/ByeByeDpi (батник для windows)

О программе ByeDpi:

Локальный http/socks-прокси (по умолчанию адрес 0.0.0.0 и порт 1080, в данной сборке изменен на 127.0.0.1 и порт 18090. Это не впн/внешний прокси/, он никуда не перенаправляет сетевые запросы, лишь обрабатывает их). Кроме браузера этот прокси можно прописать в любой др. программе и на уровне системы

О батнике B-Checker.cmd:
Основные фичи:
  • Остановка, если нашлась стратегия (аналог режима quic в блокчеке из zapret; не нужно ждать перебора всех стратегий)
  • Сохранение успешной стратегии в батник (не нужно искать стратегию в логе)
  • Тест на “16КБ” блок включен по умолчанию (взят из блокчека, нужны ссылки > 34КБ в чеклисте)
  • Тест на блок по ip и поиск рабочих ip (взят из блокчека)
  • Проверка dns на перехват и подмену
  • curl-impersonate с имитацией chrome/firefox (мин. несоответствия между curl и браузером)
  • Разделение стратегий по протоколам (httpS / http / udp)
  • Можно использовать --ipset вместо --hostlist (настройка $ipset=yes в B-Checker.ini)

Инструкция:
1) Скачать и распаковать архив со сборкой

  • B-CheckerV6.zip (4,1 МБ) - актуальная версия на основе последнего коммита
  • B-CheckerV5.1.zip (2,5 МБ) - устаревшая версия на основе последнего офиц. релиза byedpi v17.3

2) Настроить подключение к локальному прокси byedpi одним из 3 способов :

Через расширение в браузере (SmartProxy/ZeroOmega и т.п.):
  1. Установить в браузере расширение SmartProxy
    Firefox SmartProxy – скачайте это расширение для 🦊 Firefox (ru)
    Chrome https://chromewebstore.google.com/detail/smartproxy/jogcnplbkgkfdakgdenhlpcfhjioidoj?hl=ru
  2. Импортировать готовые настройки для SmartProxy: Кликнуть по иконке расширения SmartProxy → Настройки → Резервирование/восстановление → Восстановить из резервной копии → выбрать файл SmartProxy-FullBackup.json из папки Files
    Либо вручную добавить прокси сервер тип SOCKS5, адрес 127.0.0.1, порт 18090

В SmartProxy есть 3 основных режима:
1.Напрямую (все сайты без прокси);
2.Умный прокси (прокси для сайтов из списка “Умный прокси” в настройках);
3.Всегда включен (все сайты через выбранный прокси)
Как добавить/изменить прокси-сервер:
Кликнуть по иконке расширения → Настройки → Прокси-серверы
Как добавить/исключить какой-либо домен на сайте:
Кликнуть по иконке расширения → Включить прокси для → Поставить/Снять галку
или
Кликнуть по иконке расширения → Неудачные запросы → Добавить в список правил
или
Кликнуть по иконке расширения → Настройки → Умный прокси

Плюсы: можно использовать свой список проксирования (умный прокси)
Минусы: нужно ставить расширение в каждый браузер

Через Throne:
  • Скачать и распаковать архив с программой https://github.com/throneproj/Throne/releases (Throne-*-windows*.zip - для Windows 10+ , Throne-*-windowslegacy*.zip - для Windows 7)
  • Открыть Throne.exe → Вызвать Настройки → Основные настройки → Резервное копирование и восстановление → Восстановить из копии - Выбрать файл Throne-backup.thrbackup из папки Files в каталоге с B-Checker
    В бэкапе настроен локальный прокси byedpi и выбрана маршрутизация “Proxy Russia Blocked” т.е. все заблокированные в Росии сайты через byedpi, остальные напрямую, и само приложение byedpi напрямую, чтобы не было зацикливания
  • Запустить сервер byedpi и поставить галку “Системный прокси”. Теперь все браузеры будут ходить через byedpi

Плюсы: не нужно ставить расширения в браузер или прописывать прокси в системе/ приложениях, есть маршрутизация, запуск в режиме туннеля и тп.
Минусы: нужно держать запущенной стороннюю программу

Через системный прокси:
  • Нажать клавишу Win для вызова меню “Пуск”
  • В поле поиска ввести “прокси”.
  • Выбрать “Изменение параметров прокси-сервера” → Подключения → Настройка сети → Поставить галку “Использовать прокси сервер” → Дополнительно → Поставить галку “Один прокси сервер для всех протоколов” - > Адрес = 127.0.0.1 Порт=18090 - > ОК

Плюсы: не нужны сторонние программы и расширения
Минусы: все сетевые запросы приложений, поддерживающих прокси, пойдут через byedpi

3) Запустить ByeDpi_Console.cmd либо ByeDpi_Service.cmd и проверить в браузере нужные сайты. Если все ок, дальше можно не читать

Если стоит антивирус/фаерволл/брандмауэр:
  1. для curl-impersonate.exe: разрешить все исходящие запросы TCP и UDP
  2. для ciadpi.exe: разрешить все исходящие и входящие запросы TCP и UDP
  3. для браузера: разрешить исходящие запросы TCP и UDP на 127.0.0.1 и порт 18090

4) Запустить B-Checker.cmd
5) Выбрать протокол (по умолчанию tcp), браузер (по умолчанию chrome150) и чеклист (список адресов для проверки)
6) Если скрипт нашел стратегию - проверить сайт в браузере (ни в коем случае не закрывать консольное окно с byedpi!).
7) Стратегия не устроила - нажать цифру 2 и Enter. Скрипт продолжит поиск.
8) Все открылось - просто нажать Enter. Скрипт сохранит стратегию в ByeDpi_Console.cmd/ByeDpi_Service.cmd и завершит работу. Затем запустить cmd для консоли или службы - как удобнее. Стратегии, найденные чекером, не перезаписываются, а добавляются для каждого чеклиста. Т.е. одним батником запускаются стратегии для всех чеклистов сразу. При повторном подборе прежняя стратегия для чеклиста перезаписывается

Подбор стратегии для android-версии Byebyedpi:

Главное условие: андроид-устройство и пк с windows должны быть в одной сети. К примеру, подключены к одному роутеру. Если это мобильная сеть, то нужно раздать интернет с андроида на windows
Далее нужно подобрать стратегии, скопировать их из B-Checker.log и вставить их в Byebyedpi
Без рут прав файлы хостлистов или фейков использовать не выйдет
Хостлист для веб-страницы ютуба на андроиде будет выглядеть так -H:"youtube.com ggpht.com ytimg.com googleusercontent.com googleapis.com", а для видео так -H:"googlevideo.com gvt1.com"
Фейк для quic или http так -l :строка_hex_в_формате_byedpi_для_домена_из_белого_списка
Обычную строку hex можно получить в генераторе https://sageptr.github.io/mini_quic_generator/
Для перевода этой строки в формат byedpi нужно в текстовом редакторе Notepad++ переключить режим поиска на “регулярное выражение” и заменить все .. на \\x$0
Целиком стратегия для разных протоколов и хостлистов будет примерно такой:

-K u -a 1 -l :строка_hex_в_формате_byedpi -Q r -t 4 -A n  `-H:"youtube.com ggpht.com ytimg.com googleusercontent.com googleapis.com"  -s 1 -d 7 -A n -K t -f -1 -n 4pda.to -A t,s,c -T 1 -o -5+he -A n
Составление чеклистов:

Чеклистом считается любой файл *.txt в папке CheckLists. В нем можно указывать любые домены и ссылки
Допустим, нужно найти стратегию для сайта example.com

  • Создаете в папке CheckLists файл Example.txt
  • В него вписываете https:\example.com
  • Запускаете B-Checker.cmd , выбираете свой чеклист Example.txt
  • Сохраняете успешную стратегию и запускаете byedpi_Console.cmd
  • Открываете в браузере https:\example.com
  • Если сайт наполовину не грузится, вызываете лог браузера по F12 либо CTRL+SHIFT+J;
  • На вкладке Сеть/Network сортируете по url либо доменам и ищете неудачные запросы [красного цвета]
  • Копируете эти ссылки (или только домены), вставляете в CheckLists\Example.txt
  • Удаляете файл HostLists\Example.txt (чтобы он пересоздался)
  • Запускаете B-Checker.cmd с тем же чеклистом Example.txt
    Примечание: ищется общая стратегия для всех адресов из чеклиста - если хотя бы один адрес из чеклиста недоступен, стратегия не найдется (т.к. если доступны все домены, кроме главной страницы, сайт не откроется; если доступна только главная страница, сайт откроется, но не будет работать).
    Поэтому чеклисты лучше составлять по принципу: “1 сайт + необходимые поддомены” либо “несколько сайтов на одном CDN”
Настройка браузера:
Описание файлов B-Checker:
`\x32\ciadpi.exe x64\ciadpi.exe` - приложение byeDPI
ByeDpi_Console.cmd - батник, запускающий консольное окно byeDPI с параметрами по умолчанию
ByeDpi_Service.cmd - батник, устанавливающий byeDPI как службу с параметрами по умолчанию
B-remover.cmd - батник, завершающий все процессы ciadpi.exe и удаляющий все службы byedpi
B-Checker.cmd - батник для авто-подбора стратегии
B-Checker.ini - файл с настройками B-Checker.cmd
B-Checker.log - лог скрипта
ConfigGeneratorTls/Http/Udp.cmd - генератор стратегий byedpi для разных протоколов (с возможностью настроить под себя)
\CheckLists\*.txt - чеклисты (списки сайтов для проверки, можно указывать любые ссылки)
\HostLists\*.txt - хостлисты (списки доменов для byedpi)
\IpSets\*.txt - ipsets (списки ip для byedpi) Источники: https://github.com/lord-alfred/ipranges https://github.com/123jjck/cdn-ip-ranges https://github.com/you-oops-dev/ipranges
\Configs\Configs*.txt - файлы с стратегиями для Tls/Http/Udp
\Files\curl\ - папка утилиты https://github.com/lexiforest/curl-impersonate v1.5.1х32 (форк curl v8.15)
\Files\fakes\ - папка с пейлоадами
\Files\dd\dd.exe - [утилита для копирования и конвертации файлов](http://www.chrysocome.net/downloads/dd-0.6beta3.zip), нужна для FakeGenerator
\Files\netcat\ncat.exe - [сетевая утилита](https://nmap.org/dist/nmap-7.991-setup.exe), нужна для FakeGenerator
\Files\licenses\ - лицензии утилит	
\Files\DnsChecker.cmd - батник, проверяющий ответы dns-серверов из файла DNS.txt
\Files\DohChecker.cmd - батник, проверяющий ответы doh-серверов из файла DoH.txt
\Files\FakeSniFinder.cmd - батник, ищущий белый sni для asn
\Files\FakeGenerator.cmd - батник для генерации пейлоадов
\Files\AsnSni.csv - таблица соответствия asn/sni (на основе https://cheburcheck.ru/whitelist/domains.csv)	
\Files\IpCache.ini - файл с рабочими ip для доменов
\Files\DNS.txt - файл со списком dns-серверов
\Files\DoH.txt - файл со списком doh-серверов
\Files\SmartProxy-FullBackup.json - файл с готовыми настройками расширения SmartProxy. В них уже задан и сам прокси и мн. популярные сайты
Как скачать видео через ByeDpi:
  1. Установить бесплатный менеджер закачек https://github.com/mhogomchungu/media-downloader
  2. Если byedpi не задан как системный прокси, то в настройках media-downloader прописать прокси socks5://127.0.0.1:18090

P.S. Полезные ссылки:

1 Like

Понадобилось пробиться сквозь рocтeлekoм из под Win7 / x86 (32 бит).

  1. Взял свежие x86 версии byedpi и libcurl-impersonate из которой извлёк файл ..\bin\curl.exe и переименовал его в curl-impersonate.exe
  2. После распаковки B-Checker.zip в папку с byedpi заменил в ней файл ..\byedpi\Files\curl\curl-impersonate.exe на файл полученный на предыдущем шаге.
    (спец. утилита VxKex для curl’a, в моём случае не пригодилась вовсе)

Всё остальное по инструкции - теперь твиттерграмы, труба и прочее в доступе. Автору благодарность!

P.S.

Для поддержки всех возможных методов, скрипты B-Checker неплохо было бы обновить под ключи свежей версии byedpi

Готово: B-CheckerV2.zip (1,7 МБ)

Что изменено:

Инструкция V2:
1) Скачать и распаковать архив со сборкой B-CheckerV2.zip (1,7 МБ)
2) Установить в браузере расширение для прокси SmartProxy
Firefox https://addons.mozilla.org/ru/firefox/addon/smartproxy/
Chrome https://chromewebstore.google.com/detail/smartproxy/jogcnplbkgkfdakgdenhlpcfhjioidoj?hl=ru
3) Импортировать готовые настройки для SmartProxy. В них уже задан и сам прокси (тип SOCKS, адрес 127.0.0.1, порт 18083) и мн. популярные сайты:
Кликнуть по иконке расширения SmartProxy → Настройки → Резервирование/восстановление → Восстановить из резервной копии → выбрать файл SmartProxyByeDPI.json из папки Files
В расширении есть 3 основных режима:
1.Напрямую (все сайты без прокси);
2.Умный прокси (прокси для сайтов из списка “Умный прокси” в настройках);
3.Всегда включен (все сайты через выбранный прокси)
:red_exclamation_mark: Как в SmartProxy добавить/исключить какой-либо домен на сайте:
Кликнуть по иконке расширения → Проксируемые элементы → Перезагрузить → Включить/Отключить

Что еще нужно настроить в браузере:
Если стоит антивирус/фаерволл/брандмауэр:
  1. для curl-impersonate.exe: разрешить все исходящие и входящие запросы запросы TCP и UDP
  2. для браузера: разрешить все исходящие запросы по TCP и UDP на адрес 127.0.0.1 и порт 18083
  3. для ciadpi.exe: разрешить все исходящие и входящие запросы TCP и UDP

4) Запустить ByeDpi_Console.cmd либо ByeDpi_Service.cmd и проверить в браузере нужные сайты. Если все ок, дальше можно не читать)
5) Запустить B-Checker.cmd от имени Администратора
6) Выбрать чеклист (список сайтов)
7) Если скрипт нашел конфигурацию - проверить сайт в браузере (ни в коем случае не закрывать консольное окно с byedpi!).
8) Конфигурация не устроила - нажать цифру 2 и Enter. Скрипт продолжит поиск.
9) Все открылось - просто нажать Enter. Скрипт сохранит конфигурацию в ByeDpi_Console.cmd/ByeDpi_Service.cmd и завершит работу. Затем запустить cmd для консоли или службы - как удобнее.

P.S. Кто-нибудь в курсе, что с автором byedpi hufrea? На github давно не было активности, здесь тоже

можно ли как-то автоматизировать это для 16кб блокировки?
например, указать ссылку на файл который бы проверялся самим скриптом на полное скачивание

или хотя бы автоматически запускать браузер в приватном режиме start firefox --private-window https://example.com

Из батника - если только типо такого curl-impersonate.exe -K browsers\firefox144.txt --ca-native -x socks5://127.0.0.1:18083 -o nul -4s -m 3 --connect-to ::speedtest.selectel.ru https://ваш_домен_с16кб_блокировки/10MB -w %{size_download} Но мне даже не на чем сейчас это проверить, т.к. нет таких блокировок. Можете у себя посмотреть?

Есть ТГ канал. Он активен, там ежедневно что-то пишут. Гайды к программе, стратегии, найденные баги итд. Только я не знаю, кто ведёт этот канал. Автор программы, или простые пользователи.

Так 16кб блоки это по айпи адресам, а точно нет? RU :: TCP 16-20 DPI Checker

да, срабатывает условие “если айпи принадлежит диапазону блокированного хостинга, то пропускать только разрешённые sni, а для всех других давать загрузиться до ~32 килобайт (наиболее часто 16) и потом блокировать текущее соединение” для каждого запроса


в итоге наваял такую конструкцию

@echo off
set SNI=--fake-sni тут_рабочий_sni --fake-tls-mod rand
set TTL=--ttl 6
set URL=https://ссылка_на_файл_размером_более_тридцати_пяти_килобайт
set CURL=путь_до_curl --socks5 localhost:1080 --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:145.0) Gecko/20100101 Firefox/145.0" --max-time 3 %URL% -o NUL --progress-bar -r 0-35000

taskkill /im "winws.exe" /f >NUL 2>&1
taskkill /im "ciadpi.exe" /f >NUL 2>&1

for %%s in (
"тут построчно"
"и в кавычках"
"все стратегии с --fake с убранными параметрами --fake-sni %$fakeSni% и --fake-tls-mod rand,msize=1200"
) do (
echo TESTING %%~s %TTL% %SNI%
start /min %~dp0ciadpi.exe %%~s %TTL% %SNI%
timeout /t 1 >NUL 2>&1
%CURL% && echo !!!SUCCESS!!! %%~s %TTL% %SNI% && echo ciadpi.exe %%~s %TTL% %SNI% >> %~dp016kb.txt || echo FAILED
taskkill /im "ciadpi.exe" /f >NUL 2>&1
)

PAUSE

ни одной рабочей не нашлось

Не шарю за ciadpi, но вижу ттл, фейк с низким ттл? Писали давно уже что тспу это палят. Нужна страта без ттл или в самой системе снизить ттл до максимально низкого (чтоб для сайта было достаточно и разница между фейковым была не >10 или около того)

Мне такое пока что не встречалось. Zapret выдаёт стратегии с ttl. Byedpi на андроиде тоже работает с ttl.

На всякий случай запустил повторно убрав ttl, но результат одинаковый. Тут скорее всего проблема в byedpi для Windows.

Скорее всего, byedpi уже “feature complete”, т.к. без рута возможности сильно ограничены. Со своими задачами он пока справляется, даже 16 кб можно пробить (если очень сильно постараться).

Ну меня интересует развитие оригинала (версия под винду), а не форк для андроида (там лишь обертка, а методы все от оригинала). Но похоже вы правы про “feature complete”

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

Оригинал всегда был под Linux. Именно поэтому часть флагов на windows и bsd не работает

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

Здесь комьюнити нормальное, так что не думаю, что дело в этом

Наконец-то и до меня дошли 16кб блокировки, получилось потестить вживую. И пробиться почти ко всем нужным сайтам с помощью byedpi
Новая версия - B-CheckerV3.zip (1,7 МБ)
Что изменено:

  • В чеклисте теперь можно указывать любые ссылки (и создавать свои чеклисты в папке CheckLists)
  • В B-Checker.ini добавлена опция $downloadSize=0. Если выставить $downloadSize>0, то проверяется, что хотя бы для 1 ссылки скачано > $downloadSize кб
  • В папку files добавлен FakeSniFinder.cmd для подбора $fakeSni (спасибо lowderplay)
  • Можно задавать свои фейки для quic в виде строки либо файла *.bin из папки files\fakes\
  • curl-impersonate обновлен https://github.com/lexiforest/curl-impersonate/releases/tag/v1.3.0
  • Список стратегий обновлен (ConfigGenerator.cmd), т.к. curl-impersonate теперь поддерживает udp (http3/quic) через прокси

Хотелось бы, чтобы не происходила очистка окна на каждой стратегии и в конце перебора когда выводится текст о том, что не нашлось ни одной рабочей стратегии.
А то непонятно, скачиваются ли частично 16(±16) килобайт или это я забыл добавить ciadpi.exe в исключения файрвола или это используемый sni триггерит полную блокировку CDN (чаще всего это домены разных банков которые не используют зарубежные CDN).

Подставлять бы ещё --range 0-NNNNN для curl чтобы не качались лишние (мега|кило)байты, где NNNNN это 1024 × $downloadSize так как --range принимает только байты.

У меня на Windows 10 эта 16кб блокировка обходится только с помощью zapret. Хотя на андроиде подключённом к тому же самому роутеру 16кб обходится простейшей стратегией --fake -5 --fake-sni.

Готово: B-CheckerV3.1.zip (1,7 МБ)

А на запрет какая стратегия помогает, если не секрет?

любая с ts
но надо включать в самой Windows таймштампы командой netsh interface tcp set global timestamps=enabled
при использовании подбора стратегии блокчеком из официального бандла это происходит автоматически, также там есть отдельный батник

до этого работали стратегии с badseq, но перед Новым Годом перестали вместе с multisplit-ным seqovl-ом