Blockcheck
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` для получения подробной информации.