SafeLink — Расширение для Chrome (Opera, Yandex), которое защищает пользователей от нежелательного контента, блокируя доступ к опасным сайтам и фильтруя поисковые запросы с запрещенными фразами в РФ (beta)

https://github.com/DeadLarsen/SafeLink

SafeLink — Расширение для безопасного интернета

🛡️ SafeLink — это расширение для Chrome (Opera, Yandex), которое защищает пользователей от нежелательного контента, блокируя доступ к опасным сайтам и фильтруя поисковые запросы с запрещенными фразами.

Установка

Настройка -> Расширения -> Управление расширениями -> Загрузить распакованное расширение. (Папка в которой лежит код)

🎯 Основные возможности

🔒 Блокировка сайтов

  • Автоматическая блокировка опасных доменов
  • Пользовательские списки заблокированных и разрешенных сайтов
  • Умная проверка поддоменов и URL-путей
  • Временный обход для однократного доступа

🔍 Фильтрация поисковых запросов

  • База фраз Минюста РФ — автоматическое обновление с официального источника
  • Система исключений — предустановленные и пользовательские
  • Интеллектуальная проверка — точное и частичное совпадение
  • Гибкие настройки чувствительности фильтра

⚙️ Управление и настройки

  • Удобная панель управления в расширении
  • Детальные статистики и отчеты
  • Экспорт/импорт настроек
  • Автоматическая синхронизация списков

🚀 Установка

Установка из исходного кода

  1. Скачайте или клонируйте репозиторий:
   git clone https://github.com/deadlarsen/SafeLink.git
   cd SafeLink
  1. Откройте Chrome и перейдите в chrome://extensions/
  2. Включите «Режим разработчика» в правом верхнем углу
  3. Нажмите «Загрузить распакованное расширение»
  4. Выберите папку с проектом SafeLink

📋 Структура проекта

SafeLink/
├── manifest.json           # Манифест расширения
├── background.js           # Основная логика (Service Worker)
├── content.js              # Скрипт для веб-страниц
├── popup.html              # Интерфейс всплывающего окна
├── popup.js                # Логика всплывающего окна
├── popup.css               # Стили всплывающего окна
├── options.html            # Страница настроек
├── options.js              # Логика настроек
├── options.css             # Стили настроек
├── warning-extension.html  # Страница предупреждения о сайте
├── warning-extension.js    # Логика предупреждения о сайте
├── warning-phrase.html     # Страница предупреждения о фразе
├── warning-phrase.js       # Логика предупреждения о фразе
├── exportfsm.csv          # База запрещенных фраз (Минюст РФ)
├── phrases-exceptions.json # Список исключений
└── icons/                 # Иконки расширения
    ├── icon16.png
    ├── icon48.png
    └── icon128.png

🔧 Основные компоненты

Background Script (background.js)

  • SafeLinkCore — основной класс с логикой блокировки
  • Проверка URL и фраз на соответствие черным спискам
  • Управление списками сайтов и исключений
  • API для взаимодействия с другими компонентами

Content Script (content.js)

  • Подсветка опасных ссылок на веб-страницах
  • Перехват кликов по заблокированным ссылкам
  • Динамическое отслеживание изменений DOM

Popup (popup.html/js)

  • Быстрое управление защитой
  • Статистика блокировок за сессию
  • Переключение режимов работы

Options (options.html/js)

  • Полная панель управления настройками
  • Управление списками сайтов и исключений
  • Обновление базы фраз с официального источника
  • Экспорт/импорт конфигурации

📊 База данных Минюста РФ

Расширение использует официальную базу запрещенных материалов:

  • Источник: https://minjust.gov.ru/uploaded/files/exportfsm.csv
  • Обновление: Автоматическое с ограничением по времени (5 сек)
  • Кодировка: Windows-1251 с автоматическим преобразованием
  • Обработка: Интеллектуальное извлечение фраз из кавычек

⚙️ Настройки

Режимы защиты

  • Включена — полная защита активна
  • Отключена — защита отключена

Чувствительность фильтра

  • Строгий — только точные совпадения
  • Нормальный — точные + частичные совпадения
  • Свободный — максимальная чувствительность

Списки сайтов

  • Заблокированные сайты — домены и URL для блокировки
  • Разрешенные сайты — исключения из блокировки
  • Популярные сайты — автоматическое добавление социальных сетей

Исключения фраз

  • Предустановленные — общие слова (Видео, Текст, Книга, etc.)
  • Пользовательские — добавленные пользователем
  • Управление — добавление, удаление, поиск, сортировка

🛠️ Разработка

Требования

  • Chrome 88+ (Manifest V3)
  • Права: storage, activeTab, tabs, webNavigation, scripting

Отладка

  1. Откройте chrome://extensions/
  2. Найдите SafeLink → Детали
  3. Проверить представления → background.html (для логов Service Worker)
  4. Проверить представления → options.html (для логов настроек)

Структура данных в Chrome Storage

chrome.storage.local = {
  // Настройки
  'safelink_settings': { blockMode: 'warn', phraseBlockMode: 'warn', markLinks: true },

  // Списки сайтов
  'custom_blocked_sites': ['example.com', 'bad-site.ru'],
  'custom_allowed_sites': ['vk.com', 'youtube.com'],

  // Фразы и исключения
  'safelink_minjust_phrases': ['phrase1', 'phrase2'],
  'safelink_user_exceptions': ['весть', 'история'],

  // Метаданные
  'safelink_minjust_timestamp': 1706123456789,
  'safelink_csv_updated': 'base64encodedCSV',
  'safelink_default_sites_initialized': true
}

🔒 Безопасность

Принципы безопасности

  • Локальное хранение всех данных (без передачи на внешние серверы)
  • Ограничение API запросов (5 секунд между обновлениями)
  • Валидация входных данных на всех уровнях
  • Разделение прав доступа между компонентами

Обработка данных

  • Кодировка: Автоматическое преобразование Windows-1251 → UTF-8
  • Санитизация: Очистка HTML и специальных символов
  • Нормализация: Приведение к нижнему регистру для сравнения

📝 Логирование

Все компоненты ведут подробные логи с префиксами:

  • 🛡️ SafeLink Core: — основная логика
  • 🔍 SafeLink Content: — работа на веб-страницах
  • ⚙️ SafeLink Options: — интерфейс настроек
  • 🪟 SafeLink Popup: — всплывающее окно

🤝 Вклад в проект

  1. Fork репозитория
  2. Создайте ветку для новой функции (git checkout -b feature/amazing-feature)
  3. Commit изменения (git commit -m 'Add amazing feature')
  4. Push в ветку (git push origin feature/amazing-feature)
  5. Откройте Pull Request

📄 Лицензия

Этот проект распространяется под лицензией MIT. См. файл LICENSE для подробностей.

📞 Поддержка

🏗️ Статус разработки

  • MVP — Основная функциональность
  • База Минюста РФ — Интеграция с официальным источником
  • Система исключений — Предустановленные и пользовательские
  • Управление списками — Полный интерфейс управления
  • 🔄 В разработке — Улучшение производительности
  • 📋 Планируется — Мобильная версия

SafeLink — ваш надежный помощник для безопасного интернета! 🛡️

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *