blockcheck/README.md
2019-09-07 20:25:03 +03:00

60 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.