Manifest V3 · версия 1.2.0 · сборка 11 августа 2026

NeuroShield — локальный AI-щит для браузера

Проверяет изображения, canvas и видео, закрывает опасный контент и блокирует взаимодействие. Ни API-ключа, ни облачного сервера, ни отправки изображений в интернет.

Версия
1.2.0
Модель
NSFWJS MobileNetV2 4.4.0
Среда
TensorFlow.js 4.22.0
Inference
local-only
Манифест
MV3, Chrome 120+
Размер
около 4,95 МБ

Что внутри

Новое в 1.2: камера-страж

Отдельная вкладка «Камера-страж» смотрит в веб-камеру и закрывает экран во всех вкладках, когда рядом появляется ребёнок. Распознавание лиц идёт локально на MediaPipe Face Landmarker: из 468 точек лица считается геометрическая подпись из 496 чисел. Сохраняются только эти числа — ни кадры, ни фотографии, ни подписи никуда не отправляются.

Четыре продуктовые категории

MobileNetV2 распознаёт пять визуальных классов: Drawing, Hentai, Neutral, Porn и Sexy. Категория «18+» использует именно эти вероятности. Остальные три категории в первой версии работают по локальным текстовым сигналам около изображения (alt/title/ссылка/ подпись), а не выдают себя за отдельные нейросети. Любой автоматический фильтр может ошибаться; режим и отдельные категории настраиваются пользователем.

18+

нейросеть

Визуальная MobileNetV2-модель и локальный контекст

Насилие/оружие

контекстные сигналы

Локальные контекстные сигналы около медиа

Скримеры/хоррор

контекстные сигналы

Локальные контекстные сигналы около медиа

Казино/ставки

контекстные сигналы

Локальные контекстные сигналы около медиа

Контекстный анализатор проверяет только URL, alt, title, aria-label, подпись ближайшей ссылки и ограниченный набор многоязычных выражений. Он не отправляет текст наружу.

Как это защищает

ShieldOverlay

До завершения проверки медиа закрывается, если включён параметр «Защищать во время проверки». Заблокированный элемент получает независимый самовосстанавливающийся overlay в закрытом Shadow DOM, исходная ссылка/кнопка деактивируется, а события мыши, touch и клавиатуры перехватываются на capture-фазе.

Локальный inference

MobileNetV2 из NSFWJS 4.4.0 на TensorFlow.js 4.22.0, WebGL с автоматическим переходом на CPU. Веса встроены в model-engine.js при сборке и не загружаются с внешнего сервера. Вход — центральное cover-кадрирование в RGB 224 × 224.

Родительский PIN

PIN не сохраняется открытым текстом: расширение хранит PBKDF2-SHA256-хэш с уникальной солью. После пяти неверных попыток ввод блокируется на одну минуту. Метаданные последнего объекта хранятся только в памяти браузерной сессии; пиксели и URL в журнал не записываются.

Конфиденциальность

NeuroShield обрабатывает изображения на устройстве пользователя. Встроенная модель и её веса находятся внутри расширения. Расширение не содержит API-ключей, аналитики, рекламы, аккаунтов или собственного сетевого API.

В chrome.storage.sync сохраняются только настройки и список приостановленных пользователем сайтов. В chrome.storage.local сохраняются дневные счётчики и, если пользователь настроил его, только PBKDF2-хэш PIN с уникальной солью. Содержимое изображений, кадров и результаты отдельных классификаций на диск не записываются.

  • storage — настройки и агрегированные локальные счётчики
  • offscreen — декодирование пикселей и локальный запуск TensorFlow.js
  • activeTab — снимок видимой вкладки для проверки кадров видео
  • доступ к http://*/* и https://*/* — защита страниц и чтение адресов их медиа

Установка в Chrome / Edge / Brave / Opera

  1. 1Распакуйте ZIP в постоянную папку. Не удаляйте её после установки.
  2. 2Откройте страницу расширений: Chrome: chrome://extensions · Edge: edge://extensions · Brave: brave://extensions · Opera: opera://extensions
  3. 3Включите «Режим разработчика».
  4. 4Нажмите «Загрузить распакованное расширение» и выберите папку, где лежит manifest.json.
  5. 5Закрепите NeuroShield на панели браузера.

ZIP является готовым пакетом для ручной установки, но Chromium-браузеры требуют сначала распаковать его: обычный локальный ZIP нельзя установить одним кликом без публикации в магазине.

Быстрая проверка

  1. 1.Откройте popup расширения.
  2. 2.Нажмите «Безопасная» — три иконки и canvas должны открыться после реальной AI-проверки.
  3. 3.Нажмите «Смешанная страница» — четыре безопасные учебные карточки должны получить щит.
  4. 4.Попробуйте нажать на закрытую карточку: переход не должен произойти.
  5. 5.В «Расширенных настройках» нажмите «Запустить самопроверку модели».
  6. 6.Там же задайте PIN из 4–8 цифр. На смешанной странице откройте popup, введите PIN и нажмите «Открыть один раз»: откроется только последний заблокированный объект.

Отчёт проверки

Дата сборки: 11 августа 2026 года.

Пройдено

  • 15 модульных, контрактных и DOM acceptance-тестов: 15 успешно, 0 ошибок.
  • Фактическая загрузка NSFWJS MobileNetV2 4.4.0 и встроенных весов.
  • Фактический локальный inference TensorFlow.js на RGB-тензоре 224 × 224.
  • Получены все пять классов: Drawing, Hentai, Neutral, Porn, Sexy; сумма вероятностей проверена.
  • Проверены пороги strict/balanced/teen и четыре независимых переключателя категорий.
  • Проверены сигналы четырёх категорий и изоляция внутренних demo-меток.
  • Проверены инварианты ShieldOverlay: закрытый Shadow DOM, максимальный z-index, перехват pointer/mouse/touch/keyboard, удаление href, отключение кнопки и самовосстановление хоста.
  • В JSDOM выполнен полный сценарий смешанной страницы: четыре категории, один canvas, невозможный клик, удаление и восстановление ShieldOverlay, разовое открытие родителем и восстановление исходной ссылки.
  • Проверены PBKDF2-SHA256, уникальная соль, правильный/неправильный PIN и формат 4–8 цифр.
  • Проверены Manifest V3, локальный CSP без удалённого кода, offscreen-документ и наличие встроенного модельного бандла.
  • Итоговый dist/model-engine.js отдельно запускается после сборки и выполняет self-test собственных встроенных весов.

Ограничение среды тестирования

Автоматический запуск самого расширения в Chromium не выполнен: в контейнере нет браузерного бинарника, а загрузка Playwright Chromium заблокирована сетевой политикой среды. Это ограничение не было заменено фиктивным «успехом». Вместо него выполнен DOM acceptance-тест интерфейса и точный runtime self-test собранного модельного бандла. Для финальной приёмки в реальном браузере приложены две внутренние demo-страницы и пошаговый сценарий в README_INSTALL_RU.txt.

Ограничения

Файлы MODEL_CARD.md, PRIVACY.md и THIRD_PARTY_NOTICES.md внутри архива содержат технические детали. Это защитный фильтр, а не средство безошибочной модерации и не медицинский продукт.