Видео не прогружаются, качество не меняется, сайт грузится с десятого раза. Многие пользователи считают, что это просто «лагает интернет». На самом деле — это следствие DPI-фильтрации со стороны провайдера. А она может активироваться не только по приказу РКН, но и автоматически — по шаблонам трафика.

Раньше это лечилось VPN. Но сейчас всё не так просто — VPN режут по IP, по заголовкам, по handshake. Нужно что-то проще, легче и точечнее. Так появился NoDPI.

Что это вообще за зверь

NoDPI — это мини-прокси, который работает у тебя на локальной машине. Всё, что он делает — это фрагментирует TLS-трафик так, чтобы он перестал быть похож на тот, что пытается блокировать провайдер. И этого достаточно, чтобы сайты начали открываться нормально.

  • Написан на Python с использованием asyncio;
  • Работает без root-прав, без драйверов и сторонних библиотек;
  • Поддерживает Windows и Linux;
  • Оснащён удобным интерфейсом в терминале (TUI);
  • Не тянет за собой гигабайты зависимостей.

Как он появился

Изначально был проект nodpi от theo0x0 — минимальный PoC. Работал нестабильно, код — нечитаемый, фичей — почти нет. Я взял его как заготовку, переписал заново, улучшил стабильность, добавил интерфейс и возможность фильтрации по доменам. В итоге получился рабочий инструмент, который можно дать людям, не объясняя десять шагов настройки iptables.

Как работает фокус

Вот суть:

  1. Программа слушает порт, на который браузер отправляет HTTPS-запросы.
  2. Когда приходит CONNECT-запрос, NoDPI устанавливает соединение с нужным сервером.
  3. Во время TLS-рукопожатия перехватывает трафик и дробит TLS-записи на куски случайной длины.
  4. Сборка пакетов остаётся валидной — серверу всё равно, но фильтр провайдера теряет контекст и не распознаёт трафик.

Пример фрагментации:

parts = []
while data:
    chunk_len = random.randint(1, len(data))
    parts.append(
        bytes.fromhex("160304") +
        chunk_len.to_bytes(2, "big") +
        data[:chunk_len]
    )
    data = data[chunk_len:]

Браузер доволен, сервер доволен, DPI — сбит с толку.

Обход РКН: без магии и лозунгов

Когда Роскомнадзор вносит сайт в реестр, провайдеры чаще всего не блокируют напрямую IP или домен. Они внедряют правила в DPI — системы, анализирующие трафик в реальном времени. Это не бан, а замедление, блокировка handshake, ограничение на TLS.

NoDPI не ломает шифрование, не подменяет DNS и не использует TOR. Он просто делает трафик непохожим на тот, который ожидает фильтр. Благодаря этому:

  • YouTube перестаёт лагать;
  • Google, Reddit, GitHub и прочие сайты открываются быстрее;
  • Исчезает "задержка на ровном месте", которая была результатом фильтрации;
  • Можно спокойно работать, не объясняя системе, почему ты хочешь посмотреть ролик в 1080p.

Плюшки

  • TUI-интерфейс с отображением текущих соединений;
  • Настраиваемый список доменов (можно указать, какой трафик фильтровать, а какой нет);
  • Простой лог: IP, хост, порт, объём данных;
  • Всё работает из коробки — никаких системных прав;
  • Никаких драйверов, хуков, вмешательств в сеть.

Есть нюансы

  • HTTP (без шифрования) не поддерживается;
  • Нужна настройка прокси в браузере (на системном уровне — по желанию);
  • Firefox иногда кеширует при HTTP-редиректах — баг в процессе изучения;
  • Иногда, при слабом соединении, помогает обновить страницу.

Где взять и как запускать

Всё на GitHub: 👉 github.com/nodpi

Установка простая, достаточно Python 3.8+ и pip. Подключение браузера к локальному прокси займёт минуту. Там же — инструкции, примеры и описание внутренней логики.

Если тебе надоело, что видео не воспроизводится, а GitHub — как будто забанен, попробуй NoDPI. Это не серебряная пуля, но штука, которая реально работает — без лишнего шума, рекламы и танцев с OpenVPN.

🪟 Установка на Windows

  1. Скачай и установи Python:
    python.org/windows/
    Обязательно включи галочку "Add Python to PATH" во время установки.
  2. Скачай NoDPI: 

    git clone https://github.com/GVCoder09/nodpi.git
    cd nodpi

    Или скачай ZIP с GitHub, распакуй.

  3. Установи зависимости: 

    pip install -r requirements.txt
  4. Запусти: 

    python nodpi.py
  5. Настрой браузер:
     
    • Прокси-сервер: 127.0.0.1, порт 8881
    • Использовать один прокси для всех протоколов
  6. Проверь в интерфейсе, что соединения отображаются.

🐧 Установка на Linux

  1. Установи Python и pip: 

    sudo apt update
    sudo apt install python3 python3-pip -y
  2. Склонируй репозиторий: 

    git clone https://github.com/GVCoder09/nodpi.git
    cd nodpi
  3. Установи зависимости: 

    pip3 install -r requirements.txt
  4. Запусти: 

    python3 nodpi.py
  5. Настрой прокси в браузере:
    Введи: 127.0.0.1:8881 как HTTP-прокси (использовать для всех протоколов).

📦 Готовый.exe для Windows

Если не хочется возиться с Python и установкой зависимостей — у нас есть готовый .exe файл для Windows.

Скачайте архив у нас или с официальной страницы релизов:
👉 github.com/NoDPI/releases

  • Для Windows 10 / 11 x64: скачайте архив nodpi_v1.7_win64.zip
  • Для Windows 10 / 11 x86: скачайте NoDPI_setup.exe

В архиве находятся два файла:

  • blacklist.txt — список доменов, к которым будет применяться фильтрация
  • nodpi_v1.7.exe — сама утилита
Запуск утилиты NoDPI

📌 Как запустить:

  1. Распакуйте архив в любую папку.
  2. Запустите nodpi_v1.7.exe.
  3. В браузере (или на уровне системы) настройте прокси:
    • Адрес: 127.0.0.1
    • Порт: 8881
    • Включите опцию "один прокси для всех протоколов" (если есть).

⚠️ В некоторых браузерах (например, Firefox Nightly или Chromium с включённым HTTP/3) может потребоваться отключить поддержку Kyber/QUIC, чтобы всё работало корректно.

✅ Всё, можно пользоваться. Сайты открываются, видео грузятся, ютуб больше не тормозит. Наслаждайтесь!

🖼 Примеры настройки прокси для браузера и Windows

Чтобы NoDPI начал работать, нужно настроить браузер (или систему) на использование локального прокси-сервера. Вот как это сделать:

🔧 Настройка в Mozilla Firefox

  1. Открой меню: Настройки → основные → Настройки сети
  2. Выберите вариант: "Ручная настройка прокси"
  3. Укажите:
    • HTTP-прокси: 127.0.0.1
    • Порт: 8881
    • Отметьте галочку: "Один прокси-сервер для всех протоколов"
  4. Нажмите OK — готово.

📸 Прикладываю скриншот для браузера Mozilla:

Mozilla Firefox настройки сети
Mozilla Firefox настройки сети

⚙️ Настройка прокси на уровне Windows

Если ты хочешь, чтобы трафик шёл через NoDPI во всех приложениях (например, Telegram, Discord и т.д.), можно задать прокси в системных настройках:

  1. Открой Параметры → Сеть и Интернет → Прокси
  2. Включи параметр "Использовать прокси-сервер"
  3. Укажи:
    • Адрес: 127.0.0.1
    • Порт: 8881
  4. Сохрани изменения.

📸 Вот пример настройки прокси в Windows:

Настройки прокси виндовс

💡 После настройки просто перезапусти браузер или приложение, и трафик начнёт обрабатываться через NoDPI.

nodpi_v1.7_win64.zip
Скачать