GoodCheck - блокчек-скрипт для GoodbyeDPI, Zapret и ByeDPI

Автор:
Ori

Условия распространения:
Без ограничений для некоммерческого использования, с указанием авторства.

--------------

Принцип работы скрипта очень прост:
- Берутся стратегии из текстового листа, расположенного в папке Strategies.
- Берутся списки проверяемых сайтов из текстового листа, расположенного в папке Checklists.
- Запускается выбранная программа обхода, с каждой стратегией из списка по очереди.
- Делается параллельный запрос ко всем сайтам списка, используя Curl. Если приходит ответ - сайт доступен.
- Результаты анализируются и сортируются. Увидеть все подробности можно в логе в папке Logs.

--------------

Инструкции по базовой настройке:
- Распаковываете архив в отдельную папку.
- Открываете файл Config.cmd с помощью блокнота.
- Указываете пути к папкам с программами в соответствующих переменных. Пример:
set "_gdpiFolderOverride=D:\Soft\GoodbyeDPI\"
set "_zapretFolderOverride=D:\Soft\Zapret\"
set "_ciaFolderOverride=D:\Soft\ByeDPI\"
- Если какой-то программы у вас нет - оставьте переменную пустой.
- Сохраняете.

Примечание: Старайтесь не использовать пути с пробелами, русскими буквами или спецсимволами. Это может привести к ошибкам.
Примечание 2: Допускается использование относительных путей.
Примечание 3: Если положить скрипт в папку с программой обхода, он найдет её самостоятельно.

--------------

Инструкции по базовому использованию:

- Запускаете скрипт через Start.cmd.
- Выбираете через какую программу проводить проверку.
- Выбираете список стратегий для проверки.
- Выбираете список сайтов для проверки. Список можно создать самостоятельно или использовать один из дефолтных.
- Выбираете количество проходов (повторов).
- Дожидаетесь окончания проверки и смотрите результаты в файле лога, автоматически созданном в папке Logs.

--------------

Инструкции по дополнительным функциям:

- Скрипт автоматически находит и проверяет ближайший к вам сервер Google Cache (он же GGC, GCS, googlevideo). Зачастую это сервер вашего провайдера. Если вы хотите отключить эту функию установите в конфиге set "_skipAutoISPsGCS=true"
- Скрипт может автоматически проверять факт поломки TLS 1.2, который проявляется на некоторых стратегиях (вроде --fake-gen 29 в гудбае). Однако эта функция не супер-полезна и не особо объективна, поэтому по умолчанию выключена. Можно включить поставив в конфиге set "_skipAutoTLS12BreakageTest=false"
- По умолчанию скрипт использует механику против зависаний Curl'а, запуская Curl в отдельном окне и убивая процесс по таймауту, если он не отвечает. Это слегка замедляет проверку, поэтому оставлена возможность это отключить. При отключении Curl запускается в том же окне что и скрипт. Отключается через конфиг: set "_curlAntiFreeze=false"
- Минимальный таймаут запросов Curl по умолчанию - 2 секунды. Это число можно снизить (не рекомендуется из-за резко роста false-negative результатов) или, наоборот, повысить (например, если у вас медленный интернет). Принимаются только целочисленные положительные значения. Параметр в конфиге, в секундах: set "_curlMinTimeout=5"
- Через set "_curlExtraKeys=" можно установить дополнительные ключи для Curl. Например, прописав что-то вроде "_curlExtraKeys=--resolve x.com:443:104.244.42.65 --resolve instragram.com:443:31.13.72.174" Можно сымитировать эффект файла etc/hosts. Полный списко ключей для Curl ищите в их офицциальной документации.
- По умолчанию используется DNS-over-HTTPS от Cloudflare (https://one.one.one.one/dns-query). Можно поставить свой в конфиге: set "_curlDoH=https://dns.google/dns-query"
- DNS-over-HTTPS можно отключить в конфиге: set "_dohEnabled=false"
- Можно использовать кастомный обычный DNS резолвер. Срабатывает только если отключен DNS-over-HTTPS. По умолчанию выключено. При использовании все ip-адреса кэшируются заранее, перед началом выполнения скрипта. Включается в конфиге: set "_customCommonResolverEnabled=true"
- Адрес для кастомного резолвера (по умолчанию используется Cloudflare 1.1.1.1): set "_resolver=8.8.8.8"
- По умолчанию кастомный резолвер запрашивает ip типа A (ipv4). Можно переключить на запросы типа AAAA (ipv6): set "_customResolverIPv=6"
- Существует возможность вывода наиболее успешных стратегий в отдельный файл, для тех кому лень читать лог или тех, кто хочет использовать их автоматически со сторонними скриптами. По умолчанию выключено. Включить: set "_outputMostSuccessfulStrategiesSeparately=true"
- Имя для файла наиболее удачных стратегий. По умолчанию MostSuccessfulStrategies_ProgramName.txt, где ProgramName - имя использовавшейся для проверки программы. Изменить на своё: set "_mostSuccessfulStrategiesFile=Best.txt"
- Для стратегий работает автоподстановка. Например, FAKEHEX в файле стратегий автоматически заменяется на www.google.com. А пэйлоады заменяются на те, что лежат в папке Payloads. Для автоподстановок можно установить свои значения:
 > для фейкового SNI: set "_fakeSNI=
 > для фейкового hex в формате шестнадцетиричного потока: set "_fakeHexRaw=
 > для фейкового hex в формате байтовом формат: set "_fakeHexBytes="
 > для фейкового TLS пэйлоада: set "_payloadTLS="
 > для фейкового QUIC (UDP) пэйлоада: set "_payloadQuic=
- В файлах стратегий и файлах со списками сайтов для проверки, строчки можно комментировать знаком /
- В файлах стратегий первые две незакомментированные строки зарезервированны:
 > В строке _strategyExtraKeys# указываются ключи, которые будут применены ко всем стратегиям в списке.
 > В строке _strategyCurlExtraKeys# указываются ключи, которые будут использованы для Curl'а при использовании данного листа.

--------------
