Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ValdikSS/blockcheck

Russian ISP blocking type checker NOTE: NOT WORKING CURRENTLY. ВНИМАНИЕ: НЕ РАБОТАЕТ НА ТЕКУЩИЙ МОМЕНТ
https://github.com/ValdikSS/blockcheck

censorship-circumvention deep-packet-inspection dns dpi

Last synced: 3 months ago
JSON representation

Russian ISP blocking type checker NOTE: NOT WORKING CURRENTLY. ВНИМАНИЕ: НЕ РАБОТАЕТ НА ТЕКУЩИЙ МОМЕНТ

Awesome Lists containing this project

README

        

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.