BlockCheck ========== **[Сообщение для жителей Украины | повідомлення для мешканців України](https://github.com/ValdikSS/blockcheck/wiki/Сообщение-украинцам)** Утилита для определения типа блокировок сайтов из **единого реестра запрещенной информации** на стороне провайдеров **Российской Федерации**. Данная утилита позволяет определить: * Подмену DNS-ответов * Перенаправление сторонних DNS-серверов на провайдерские * Блокировку сторонних DNS-серверов * Блокировку всей зоны (поддоменов) заблокированного домена * «Обычный» DPI (фильтрация URL на определенных IP-адресах и портах) * «Полный» DPI (фильтрация URL на всех IP-адресах и/или портах) * Подмену SSL (HTTPS)-сертификата (прослушивание HTTPS-трафика) * Блокировку по IP-адресу Также приложение обнаруживает пассивный DPI, выполняет тесты для обхода активного DPI, если он обнаружен на стороне провайдера. На данный момент реализованы следующие техники: * Дополнительный пробел после GET * Перенос строки перед GET * Фрагментирование заголовка * Точка в конце домена * Табуляция в конце домена * Заголовок host вместо Host * Перенос строки в заголовках в UNIX-стиле Более подробно о видах DPI и типах подключения читайте в Wiki проекта: [Типы DPI](https://github.com/ValdikSS/blockcheck/wiki/Типы-DPI) Приложение автоматически отправляет статистику об используемом типе блокировки на сервер. Если вы используете сторонний DNS, тестируете разные способы обхода блокировок и запускаете программу для определения их эффективности, либо просто не хотите отправлять информацию о вашем провайдере на сервер, пожалуйста, пользуйтесь параметром `--no-report`. [http://habrahabr.ru/post/229377/](http://habrahabr.ru/post/229377/) — статистика по провайдерам (устарела) ### Запуск Проще всего воспользоваться бинарными сборками под **Windows**, **Linux** и **macOS** из раздела [Releases](https://github.com/ValdikSS/blockcheck/releases). Они самодостаточны и не требуют установки. Если вы хотите изменить исходный код, вам потребуется Python >= 3.4 с модулем dnspython. Установить его можно из репозитория вашего дистрибутива, или используя pip: `python3 -m pip install -r requirements.txt` ### Использование Приложение запускается в графическом режиме по умолчанию, если в систему установлен Tkinter. `--console` отключает графический интерфейс и принудительно активирует консольный режим. `--no-report` отключает отправку результатов тестирования на сервер. Пожалуйста, используйте эту опцию, если вы экспериментируете со способами обхода блокировок. `--force-dpi-check` выполнит проверку DPI, даже если сайты не заблокированы. `--disable-ipv6` отключает все проверки, связанные с IPv6. Это не все доступные опции. Запустите программу с парамером `--help` для получения подробной информации. ### Сборка исполняемого файла Для сборки исполняемого файла для Windows, Linux и macOS: 1. Установите Python 3, с официального сайта или из репозиториев вашего дистрибутива 2. python -m pip install -r requirements.txt 3. python -m pip install pyinstaller 4. pyinstaller blockcheck.spec Исполняемый файл будет в директории dist.