Awesome
BlockCheck
Сообщение для жителей Украины | повідомлення для мешканців України
Утилита для определения типа блокировок сайтов из единого реестра запрещенной информации на стороне провайдеров Российской Федерации.
Данная утилита позволяет определить:
- Подмену DNS-ответов
- Перенаправление сторонних DNS-серверов на провайдерские
- Блокировку сторонних DNS-серверов
- Блокировку всей зоны (поддоменов) заблокированного домена
- «Обычный» DPI (фильтрация URL на определенных IP-адресах и портах)
- «Полный» DPI (фильтрация URL на всех IP-адресах и/или портах)
- Подмену SSL (HTTPS)-сертификата (прослушивание HTTPS-трафика)
- Блокировку по IP-адресу
Также приложение обнаруживает пассивный DPI, выполняет тесты для обхода активного DPI, если он обнаружен на стороне провайдера. На данный момент реализованы следующие техники:
- Дополнительный пробел после GET
- Перенос строки перед GET
- Фрагментирование заголовка
- Точка в конце домена
- Табуляция в конце домена
- Заголовок host вместо Host
- Перенос строки в заголовках в UNIX-стиле
Более подробно о видах DPI и типах подключения читайте в Wiki проекта: Типы DPI
Приложение автоматически отправляет статистику об используемом типе блокировки на сервер. Если вы используете сторонний DNS, тестируете разные способы обхода блокировок и запускаете программу для определения их эффективности, либо просто не хотите отправлять информацию о вашем провайдере на сервер, пожалуйста, пользуйтесь параметром --no-report
.
http://habrahabr.ru/post/229377/ — статистика по провайдерам (устарела)
Запуск
Проще всего воспользоваться бинарными сборками под Windows, Linux и macOS из раздела 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:
- Установите Python 3, с официального сайта или из репозиториев вашего дистрибутива
- python -m pip install -r requirements.txt
- python -m pip install pyinstaller
- pyinstaller blockcheck.spec
Исполняемый файл будет в директории dist.