We need to connect to exact IP to perform HTTPS tests. There is no standard way to redirect one hostname to another IP address so we connect to the IP address and add proper "Host" header later. This causes SSL hostname validation error. There's a little point in it for our needs at all so it's safe to disable it completely.
2.9 KiB
BlockCheck
Утилита для определения типа блокировок сайтов из единого реестра запрещенной информации на стороне провайдера.
Данная утилита позволяет определить:
- Подмену DNS-ответов
- Перенаправление DNS-серверов
- Блокировку DNS-серверов
Блокировку всей зоны (поддоменов) заблокированного домена(временно не работает)- "Обычный" DPI (фильтрация URL на определенных IP-адресах и портах)
- "Полный" DPI (фильтрация URL на всех IP-адресах и/или портах)
- Подмену SSL (HTTPS)-сертификата (прослушивание HTTPS-трафика)
- Блокировку по IP-адресу
Также приложение выполняет тесты для обхода DPI, если он обнаружен на стороне провайдера. На данный момент реализованы следующие техники:
- Дополнительный пробел после GET
- Перенос строки перед GET
- Фрагментирование заголовка
- Точка в конце домена
- Табуляция в конце домена
- Заголовок host вместо Host
- Перенос строки в заголовках в UNIX-стиле
Более подробно о видах DPI и типах подключения читайте в Wiki проекта: Типы DPI
Приложение автоматически отправляет статистику об используемом типе блокировки на сервер.
http://habrahabr.ru/post/229377/ — статистика по провайдерам
Установка
Для работы скрипта требуется Python >= 3.4 с модулем dnspython. Установить его можно из репозитория вашего дистрибутива, или используя pip:
python3 -m pip install -r requirements.txt
Использование
Приложение запускается в графическом режиме по умолчанию, если в систему установлен Tkinter.
Вы можете запустить его в консольном режиме вручную, используя флаг --console.
Параметр --no-report отключает отправку результатов тестирования на сервер.
--force-dpi-check выполнит проверку DPI, даже если сайты не заблокированы.