BrainRotGuard: система одобрения YouTube для защиты детей

Узнайте, как развернуть BrainRotGuard в домашней сети: пошаговое руководство по настройке системы одобрения YouTube для защиты детей от вредного контента.

Продвинутый
Алексей Кузнецов
Алексей Кузнецов
Системный администратор20 февраля 2026 г.

Подготовка системы

Установка операционной системы и базовых инструментов

sudo apt update
sudo apt upgrade -y
sudo apt install -y git python3 python3-pip curl wget unzip

Установка Docker (опционально)

Установка Docker для контейнеризации

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Настройка статического IP

Конфигурация статического IP-адреса для сервера

sudo nano /etc/netplan/01-network-manager-all.yaml
# Добавьте:
# addresses: [192.168.1.100/24]
# gateway4: 192.168.1.1
sudo netplan apply

Клонирование репозитория

Скачивание исходного кода BrainRotGuard

git clone https://github.com/brainrotguard/brainrotguard.git
cd brainrotguard

Установка зависимостей

Настройка виртуального окружения и установка пакетов

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Базовая конфигурация

Настройка основных параметров системы

cp config.example.yaml config.yaml
nano config.yaml
# Измените параметры: host, port, database, filtering

Настройка YouTube API

Интеграция с API YouTube для анализа контента

nano config.yaml
# Добавьте секцию:
# youtube:
#   api_key: 'ваш_ключ_api'
#   quota_limit: 10000

Настройка правил фильтрации

Создание базовых правил для блокировки контента

nano filters.yaml
# Добавьте категории/ключевые слова для блокировки

Установка dnsmasq

Настройка DNS-прокси для перенаправления трафика

sudo apt install -y dnsmasq
sudo nano /etc/dnsmasq.conf
# Добавьте:
# address=/youtube.com/127.0.0.1
sudo systemctl restart dnsmasq

Установка Squid

Настройка HTTP-прокси для обработки запросов

sudo apt install -y squid
sudo nano /etc/squid/squid.conf
# Настройте порт 3128 и upstream прокси
sudo systemctl restart squid

Настройка шифрования данных

Защита конфиденциальных данных шифрованием

python3 scripts/encrypt_data.py generate
python3 scripts/encrypt_data.py encrypt config.yaml

Запуск системы

Активация BrainRotGuard после настройки

source venv/bin/activate
python3 brainrotguard.py

BrainRotGuard - Самостоятельно размещенная система одобрения YouTube для защиты детей от алгоритмических ловушек

1. Введение

Проблема алгоритмов YouTube и их влияние на детей

YouTube является одной из самых популярных платформ для детей, но его алгоритмы часто создают "алгоритмические ловушки" или "кроличьи норы", которые могут вести детей к контенту, не подходящему для их возраста. Проблемы включают:

  • Автоматическое воспроизведение бесконечного потока контента
  • Рекомендации все более экстремального или неподобающего контента
  • Снижение способности концентрироваться на длительных задачах
  • Риск воздействия дезинформации или неподобающего контента

Обзор BrainRotGuard как решения

BrainRotGuard - это система самостоятельного размещения, которая работает как посредник между устройствами в домашней сети и YouTube. Она позволяет:

  • Блокировать автоматическое воспроизведение
  • Фильтровать рекомендации на основе настраиваемых правил
  • Требовать явного одобрения для просмотра новых видео
  • Ограничивать время использования
  • Предоставлять прозрачные отчеты о просмотренном контенте

Поскольку система самостоятельно размещается, у вас есть полный контроль над данными и функциями без зависимости от внешних сервисов.

Что мы будем покрыть в этом руководстве

В этом руководстве мы рассмотрим полный процесс установки и настройки BrainRotGuard, включая:

  • Подготовку необходимого оборудования и программного обеспечения
  • Установку и базовую настройку системы
  • Интеграцию с вашей домашней сетью
  • Настройку правил фильтрации и контроля
  • Расширенные функции для повышения эффективности
  • Меры безопасности и конфиденциальности
  • Альтернативные решения для комплексной защиты детей

2. Требования и подготовка

Необходимое оборудование

Для установки BrainRotGuard вам потребуется следующее оборудование:

  1. Сервер или мини-ПК:

    • Процессор: Dual-core 2.0 ГГц или лучше
    • Оперативная память: 2 ГБ минимум (4 ГБ рекомендуется)
    • Накопитель: 8 ГБ свободного места
    • Операционная система: Linux (рекомендуется Ubuntu 20.04 или более новая)
  2. Сетевое оборудование:

    • Маршрутизатор с поддержкой кастомного DNS
    • Сетевой кабель для подключения сервера к сети
    • Статический IP-адрес для сервера (или возможность настроить DHCP резервирование)
  3. Дополнительные компоненты (опционально):

    • USB-накопитель для резервных копий
    • Устройство для мониторинга (например, Raspberry Pi с дисплеем)

Требования к программному обеспечению

Перед установкой убедитесь, что на вашем сервере установлено следующее программное обеспечение:

  1. Операционная система:

    • Ubuntu 20.04 LTS или более новая
    • Альтернативно: Debian 10+ или Raspberry Pi OS
  2. Базовые инструменты:

    • Git
    • Python 3.8 или выше
    • pip (менеджер пакетов Python)
    • Docker (опционально, для контейнеризированной установки)
  3. Сетевые инструменты:

    • dnsmasq (для DNS-прокси)
    • squid (для HTTP-прокси)
    • nginx (веб-интерфейс)
  4. YouTube API:

    • Ключ API YouTube Data v3
    • Ключ API YouTube Content ID (опционально)

Установка необходимой инфраструктуры

Начнем с базовой установки операционной системы и необходимых инструментов.

Шаг 1: Установка операционной системы

  1. Загрузите и установите Ubuntu 20.04 LTS на ваш сервер:

    • Скачайте образ с официального сайта Ubuntu
    • Используйте Rufus (для Windows) или dd (для Linux) для создания загрузочного USB
    • Установите систему, следуя инструкциям установщика
  2. После установки выполните базовую настройку:

    sudo apt update
    sudo apt upgrade -y
    sudo reboot
    

Шаг 2: Установка необходимых инструментов

# Установка базовых инструментов
sudo apt install -y git python3 python3-pip curl wget unzip

# Установка Docker (опционально, для контейнеризированной установки)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
newgrp docker

Шаг 3: Настройка статического IP-адреса

  1. Откройте файл конфигурации сети:

    sudo nano /etc/netplan/01-network-manager-all.yaml
    
  2. Добавьте следующую конфигурацию (замените значения на ваши):

    network:
      version: 2
      ethernets:
        eth0:  # Имя вашего сетевого интерфейса
          dhcp4: no
          addresses: [192.168.1.100/24]  # Желаемый статический IP
          gateway4: 192.168.1.1         # IP-адрес вашего маршрутизатора
          nameservers:
            addresses: [8.8.8.8, 8.8.4.4]
    
  3. Примените изменения:

    sudo netplan apply
    
  4. Проверьте IP-адрес:

    ip addr show
    

3. Настройка BrainRotGuard

Клонирование и базовая настройка

Шаг 1: Клонирование репозитория BrainRotGuard

# Перейдите в домашний каталог
cd ~

# Клонируйте репозиторий BrainRotGuard
git clone https://github.com/brainrotguard/brainrotguard.git

# Перейдите в каталог проекта
cd brainrotguard

Шаг 2: Установка зависимостей

# Создайте и активируйте виртуальное окружение
python3 -m venv venv
source venv/bin/activate

# Установите зависимости
pip install -r requirements.txt

Шаг 3: Базовая конфигурация

  1. Создайте файл конфигурации:

    cp config.example.yaml config.yaml
    nano config.yaml
    
  2. Отредактируйте основные параметры:

    # Основные настройки
    server:
      host: "0.0.0.0"
      port: 8080
      debug: False
    
    # Настройки базы данных
    database:
      path: "/var/lib/brainrotguard/db.sqlite3"
    
    # Настройки безопасности
    security:
      secret_key: "ваш_секретный_ключ_здесь"
      session_lifetime: 3600  # 1 час
    
    # Настройки фильтрации
    filtering:
      enable_autoplay_block: True
      enable_recommendation_filter: True
      block_suggested_videos: True
    
  3. Создайте необходимые директории:

    sudo mkdir -p /var/lib/brainrotguard
    sudo chown -R $USER:$USER /var/lib/brainrotguard
    

Конфигурация для YouTube API

Шаг 1: Получение ключа API YouTube

  1. Перейдите в Google Cloud Console:

  2. Включите YouTube Data API:

    • Перейдите в меню "API и сервисы" > "Библиотека"
    • Найдите "YouTube Data API v3" и включите его
  3. Создайте ключ API:

    • Перейдите в "API и сервисы" > "Учетные данные"
    • Нажмите "Создать учетные данные" > "Ключ API"
    • Скопируйте сгенерированный ключ

Шаг 2: Настройка BrainRotGuard для использования API

  1. Откройте файл конфигурации:

    nano config.yaml
    
  2. Добавьте секцию для YouTube API:

    # Настройки YouTube API
    youtube:
      api_key: "ваш_ключ_api_здесь"
      api_service_name: "youtube.googleapis.com"
      api_version: "v3"
      quota_limit: 10000  # Ежедневный лимит запросов
    
  3. Проверьте подключение к API:

    python3 scripts/test_youtube_api.py
    

Настройка правил фильтрации

Шаг 1: Создание базовых правил фильтрации

  1. Откройте файл конфигурации фильтрации:

    nano filters.yaml
    
  2. Добавьте базовые правила:

    # Базовые правила фильтрации
    categories:
      block:
        - "Гейминг"  # Блокировка игровых категорий
        - "Meme"     # Блокировка мема и вирусного контента
        - "Challenges"  # Блокировка челленджей
    
      restrict:
        - "Education"    # Ограничение образовательного контента
        - "Kids"         # Ограничение контента для детей
    
    # Ключевые слова для блокировки
    keywords:
      block:
        - "challenge"
        - "prank"
        - "viral"
    
    # Каналы для блокировки
    channels:
      block:
        - "UC_x5XG1OV2P6uZZ5FSM9Ttw"  # Пример ID канала
    

Шаг 2: Настройка автоматического одобрения

  1. Отредактируйте файл конфигурации:

    nano config.yaml
    
  2. Добавьте настройки автоматического одобрения:

    # Настройки автоматического одобрения
    auto_approve:
      # Категории, которые автоматически одобряются
      categories:
        - "Education"
        - "Science & Technology"
        - "Music"
      
      # Каналы, которые автоматически одобряются
      channels:
        - "UC-2YSe5Xf2vzVvX9vL9KJZA"  # Kurzgesagt - In a Nutshell
      
      # Минимальная длина видео для автоматического одобрения (в минутах)
      min_duration: 10
    

Шаг 3: Тестирование правил фильтрации

# Запустите тестовую фильтрацию
python3 scripts/test_filters.py

4. Интеграция с домашней сетью

Настройка DNS для перенаправления трафика

Шаг 1: Установка dnsmasq

# Установка dnsmasq
sudo apt install -y dnsmasq

# Создайте резервную копию оригинального конфигурационного файла
sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

# Откройте файл конфигурации
sudo nano /etc/dnsmasq.conf

Шаг 2: Настройка dnsmasq для перенаправления YouTube трафика

Добавьте следующие строки в конец файла конфигурации:

# Перенаправление всего трафика на BrainRotGuard
server=/#/127.0.0.1#5300
address=/youtube.com/127.0.0.1
address=/www.youtube.com/127.0.0.1
address=/m.youtube.com/127.0.0.1
address=/youtu.be/127.0.0.1

Шаг 3: Перезапуск dnsmasq

# Перезапустите dnsmasq
sudo systemctl restart dnsmasq

# Проверьте статус
sudo systemctl status dnsmasq

Настройка прокси для обработки запросов

Шаг 1: Установка Squid

# Установка Squid
sudo apt install -y squid

# Создайте резервную копию оригинального конфигурационного файла
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.orig

# Откройте файл конфигурации
sudo nano /etc/squid/squid.conf

Шаг 2: Настройка Squid для работы с BrainRotGuard

Добавьте или измените следующие параметры в файле конфигурации:

# Основные настройки
http_port 3128

# Настройка кэша
cache_mem 256 MB
maximum_object_size_in_memory 32 MB
cache_dir ufs /var/spool/squid 1000 16 256

# Разрешение доступа только из локальной сети
acl localnet src 192.168.0.0/16
acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 443         # https
acl Safe_ports port 3128        # squid

http_access allow localnet
http_access allow localhost
http_access deny all

# Настройка upstream прокси для YouTube
cache_peer 127.0.0.1 parent 8080 0 no-query default
cache_peer_access 127.0.0.1 allow all

Шаг 3: Перезапуск Squid

# Создайте директорию кэша
sudo squid -z

# Перезапустите Squid
sudo systemctl restart squid
sudo systemctl enable squid

# Проверьте статус
sudo systemctl status squid

Мониторинг и логирование

Шаг 1: Настройка сбора логов

  1. Откройте файл конфигурации BrainRotGuard:

    nano config.yaml
    
  2. Добавьте настройки логирования:

    # Настройки логирования
    logging:
      level: "INFO"
      file: "/var/log/brainrotguard.log"
      max_size: 10485760  # 10 МБ
      backup_count: 5
    
    # Настройки мониторинга
    monitoring:
      enable: True
      metrics_port: 8081
    

Шаг 2: Создание logrotate для управления логами

  1. Создайте файл конфигурации logrotate:

    sudo nano /etc/logrotate.d/brainrotguard
    
  2. Добавьте следующее содержимое:

    /var/log/brainrotguard.log {
        daily
        missingok
        rotate 7
        compress
        delaycompress
        notifempty
        create 644 $USER $USER
    }
    

Шаг 3: Настройка мониторинга

  1. Установите Prometheus Node Exporter:

    # Скачайте и установите Node Exporter
    wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
    tar -xvf node_exporter-1.3.1.linux-amd64.tar.gz
    sudo cp node_exporter-1.3.1.linux-amd64/node_exporter /usr/local/bin/
    rm -rf node_exporter-1.3.1.linux-amd64*
    
    # Создайте сервисный файл
    sudo nano /etc/systemd/system/node_exporter.service
    
  2. Добавьте следующее содержимое в сервисный файл:

    [Unit]
    Description=Node Exporter
    After=network.target
    
    [Service]
    User=$USER
    ExecStart=/usr/local/bin/node_exporter --web.listen-address=:8081
    
    [Install]
    WantedBy=multi-user.target
    
  3. Запустите и включите Node Exporter:

    sudo systemctl daemon-reload
    sudo systemctl start node_exporter
    sudo systemctl enable node_exporter
    

5. Расширенные функции

Создание черных и белых списков

Шаг 1: Настройка черных списков

  1. Откройте файл конфигурации фильтрации:

    nano filters.yaml
    
  2. Добавьте подробные правила для черного списка:

    # Расширенный черный список
    blacklist:
      # Категории для полной блокировки
      categories:
        - "Gaming"
        - "Pranks"
        - "Challenges"
        - "Viral"
      
      # Ключевые слова для блокировки
      keywords:
        - "challenge"
        - "prank"
        - "viral"
        - "extreme"
        - "dangerous"
      
      # Каналы для блокировки
      channels:
        - "UC_x5XG1OV2P6uZZ5FSM9Ttw"  # Пример ID канала
      
      # Теги для блокировки
      tags:
        - "challenge"
        - "prank"
        - "viral"
    

Шаг 2: Настройка белых списков

  1. Отредактируйте файл конфигурации фильтрации:

    nano filters.yaml
    
  2. Добавьте правила для белого списка:

    # Белый список - разрешает только указанное
    whitelist:
      enable: False  # Включите True, если хотите использовать только белый список
      
      # Разрешенные категории
      categories:
        - "Education"
        - "Science & Technology"
        - "Music"
        - "Howto & Style"
      
      # Разрешенные ключевые слова
      keywords:
        - "tutorial"
        - "education"
        - "science"
        - "learning"
      
      # Разрешенные каналы
      channels:
        - "UC-2YSe5Xf2vzVvX9vL9KJZA"  # Kurzgesagt - In a Nutshell
        - "UCYO_jab_esuFRV4b17AJtAw"  # 3Blue1Brown
    

Шаг 3: Интеграция с базой данных

  1. Создайте скрипт для управления списками:

    nano scripts/manage_lists.py
    
  2. Добавьте следующий код:

    #!/usr/bin/env python3
    
    import sqlite3
    import yaml
    import sys
    
    def load_config():
        with open("filters.yaml", "r") as f:
            return yaml.safe_load(f)
    
    def update_blacklists(config):
        conn = sqlite3.connect("/var/lib/brainrotguard/db.sqlite3")
        cursor = conn.cursor()
        
        # Обновление категорий
        cursor.execute("DELETE FROM blacklist_categories")
        for category in config.get("blacklist", {}).get("categories", []):
            cursor.execute("INSERT INTO blacklist_categories (name) VALUES (?)", (category,))
        
        # Обновление ключевых слов
        cursor.execute("DELETE FROM blacklist_keywords")
        for keyword in config.get("blacklist", {}).get("keywords", []):
            cursor.execute("INSERT INTO blacklist_keywords (word) VALUES (?)", (keyword,))
        
        # Обновление каналов
        cursor.execute("DELETE FROM blacklist_channels")
        for channel in config.get("blacklist", {}).get("channels", []):
            cursor.execute("INSERT INTO blacklist_channels (channel_id) VALUES (?)", (channel,))
        
        conn.commit()
        conn.close()
    
    if __name__ == "__main__":
        if len(sys.argv) < 2:
            print("Usage: python manage_lists.py [blacklist|whitelist]")
            sys.exit(1)
        
        config = load_config()
        
        if sys.argv[1] == "blacklist":
            update_blacklists(config)
            print("Blacklist updated successfully")
        elif sys.argv[1] == "whitelist":
            print("Whitelist update functionality would go here")
        else:
            print("Invalid option. Use 'blacklist' or 'whitelist'")
            sys.exit(1)
    
  3. Сделайте скрипт исполняемым:

    chmod +x scripts/manage_lists.py
    
  4. Запустите обновление:

    python3 scripts/manage_lists.py blacklist
    

Настройка временных ограничений

Шаг 1: Настройка базовых временных ограничений

  1. Откройте файл конфигурации:

    nano config.yaml
    
  2. Добавьте секцию для временных ограничений:

    # Временные ограничения
    time_limits:
      enable: True
      
      # Ежедневный лимит в минутах
      daily_limit: 120
      
      # Временные интервалы разрешенного использования
      allowed_times:
        - start: "15:00"
          end: "17:00"
        - start: "19:00"
          end: "21:00"
      
      # Блокировка в определенные дни
      blocked_days:
        - "Sunday"
        - "Friday"
      
      # Блокировка перед сном
      bedtime:
        enable: True
        time: "22:00"
        duration: 12  # Блокировка на 12 часов после времени сна
    

Шаг 2: Создание скрипта для управления временными ограничениями

  1. Создайте скрипт:

    nano scripts/time_limits.py
    
  2. Добавьте следующий код:

    #!/usr/bin/env python3
    
    import yaml
    import sqlite3
    from datetime import datetime, time
    import sys
    
    def load_config():
        with open("config.yaml", "r") as f:
            return yaml.safe_load(f)
    
    def update_time_limits(config):
        conn = sqlite3.connect("/var/lib/brainrotguard/db.sqlite3")
        cursor = conn.cursor()
        
        # Обновление дневного лимита
        daily_limit = config.get("time_limits", {}).get("daily_limit", 0)
        cursor.execute("UPDATE settings SET value = ? WHERE key = ?", (daily_limit, "daily_limit"))
        
        # Обновление разрешенного времени
        cursor.execute("DELETE FROM allowed_times")
        allowed_times = config.get("time_limits", {}).get("allowed_times", [])
        for time_range in allowed_times:
            cursor.execute(
                "INSERT INTO allowed_times (start_time, end_time) VALUES (?, ?)",
                (time_range["start"], time_range["end"])
            )
        
        # Обновление заблокированных дней
        cursor.execute("DELETE FROM blocked_days")
        blocked_days = config.get("time_limits", {}).get("blocked_days", [])
        for day in blocked_days:
            cursor.execute("INSERT INTO blocked_days (day) VALUES (?)", (day,))
        
        conn.commit()
        conn.close()
    
    def check_current_time(config):
        now = datetime.now()
        current_time = now.time()
        current_day = now.strftime("%A")
        
        # Проверка времени сна
        bedtime_config = config.get("time_limits", {}).get("bedtime", {})
        if bedtime_config.get("enable", False):
            bedtime = time.fromisoformat(bedtime_config["time"])
            if current_time >= bedtime:
                return "BEDTIME"
        
        # Проверка заблокированных дней
        if current_day in config.get("time_limits", {}).get("blocked_days", []):
            return "BLOCKED_DAY"
        
        # Проверка разрешенного времени
        allowed_times = config.get("time_limits", {}).get("allowed_times", [])
        for time_range in allowed_times:
            start = time.fromisoformat(time_range["start"])
            end = time.fromisoformat(time_range["end"])
            if start <= current_time <= end:
                return "ALLOWED"
        
        return "BLOCKED"
    
    if __name__ == "__main__":
        config = load_config()
        
        if len(sys.argv) < 2:
            print("Usage: python time_limits.py [update|check]")
            sys.exit(1)
        
        if sys.argv[1] == "update":
            update_time_limits(config)
            print("Time limits updated successfully")
        elif sys.argv[1] == "check":
            status = check_current_time(config)
            print(f"Current status: {status}")
        else:
            print("Invalid option. Use 'update' or 'check'")
            sys.exit(1)
    
  3. Сделайте скрипт исполняемым:

    chmod +x scripts/time_limits.py
    
  4. Запустите обновление:

    python3 scripts/time_limits.py update
    

Интеграция с другими устройствами в сети

Шаг 1: Настройка клиентского приложения

  1. Создайте директорию для клиентского приложения:

    mkdir -p ~/brainrotguard-client
    cd ~/brainrotguard-client
    
  2. Скачайте клиентское приложение:

    wget https://github.com/brainrotguard/client/releases/latest/download/client.zip
    unzip client.zip
    
  3. Создайте файл конфигурации клиента:

    nano config.yaml
    
  4. Добавьте следующее содержимое:

    # Конфигурация клиента BrainRotGuard
    server:
      host: "192.168.1.100"  # IP-адрес вашего сервера
      port: 8080
      
    # Настройки устройства
    device:
      name: "Kids Tablet"
      id: "kids-tablet-001"
      
    # Настройки синхронизации
    sync:
      interval: 300  # Синхронизация каждые 5 минут
      
    # Настройки локального кэша
    cache:
      path: "/var/cache/brainrotguard"
      max_size: 1073741824  # 1 ГБ
    

Шаг 2: Установка клиентского приложения на устройствах

  1. Для Android:

    # Скачайте APK
    wget https://github.com/brainrotguard/client/releases/latest/android/brainrotguard.apk
    
    # Установите APK
    adb install brainrotguard.apk
    
  2. Для Windows:

    # Скачайте установщик
    wget https://github.com/brainrotguard/client/releases/latest/windows/brainrotguard-installer.exe
    
    # Запустите установщик
    brainrotguard-installer.exe
    

Шаг 3: Настройка централизованного управления

  1. Откройте файл конфигурации сервера:

    nano config.yaml
    
  2. Добавьте настройки централизованного управления:

    # Централизованное управление
    management:
      enable: True
      
      # Настройки API
      api:
        enable: True
        port: 8082
        secret_key: "ваш_секретный_ключ_здесь"
      
      # Синхронизация с устройствами
      device_sync:
        interval: 300  # Синхронизация каждые 5 минут
        retry_attempts: 3
      
      # Управление профилями
      profiles:
        "child-profile":
          time_limits:
            daily_limit: 90
          filter_categories:
            - "Education"
            - "Science & Technology"
        
        "teen-profile":
          time_limits:
            daily_limit: 180
          filter_categories:
            - "Education"
            - "Science & Technology"
            - "Music"
    

6. Безопасность и конфиденциальность

Защита данных

Шаг 1: Шифрование конфиденциальных данных

  1. Создайте скрипт для шифрования конфиденциальных данных:

    nano scripts/encrypt_data.py
    
  2. Добавьте следующий код:

    #!/usr/bin/env python3
    
    from cryptography.fernet import Fernet
    import yaml
    import os
    import sys
    
    def generate_key():
        return Fernet.generate_key()
    
    def load_key():
        return open("secret.key", "rb").read()
    
    def encrypt_file(file_name):
        key = load_key()
        f = Fernet(key)
        
        with open(file_name, "rb") as file:
            original_data = file.read()
        
        encrypted_data = f.encrypt(original_data)
        
        with open(file_name + ".enc", "wb") as file:
            file.write(encrypted_data)
        
        os.remove(file_name)
        print(f"File {file_name} encrypted successfully")
    
    def decrypt_file(file_name):
        key = load_key()
        f = Fernet(key)
        
        with open(file_name + ".enc", "rb") as file:
            encrypted_data = file.read()
        
        decrypted_data = f.decrypt(encrypted_data)
        
        with open(file_name, "wb") as file:
            file.write(decrypted_data)
        
        os.remove(file_name + ".enc")
        print(f"File {file_name} decrypted successfully")
    
    if __name__ == "__main__":
        if len(sys.argv) < 3:
            print("Usage: python encrypt_data.py [generate|encrypt|decrypt] <file>")
            sys.exit(1)
        
        if sys.argv[1] == "generate":
            key = generate_key()
            with open("secret.key", "wb") as key_file:
                key_file.write(key)
            print("Key generated successfully")
        
        elif sys.argv[1] == "encrypt":
            encrypt_file(sys.argv[2])
        
        elif sys.argv[1] == "decrypt":
            decrypt_file(sys.argv[2])
        
        else:
            print("Invalid option. Use 'generate', 'encrypt' or 'decrypt'")
            sys.exit(1)
    
  3. Сгенерируйте ключ и зашифруйте конфиденциальные файлы:

    python3 scripts/encrypt_data.py generate
    python3 scripts/encrypt_data.py encrypt config.yaml
    

Шаг 2: Регулярные резервные копии

  1. Создайте скрипт для резервного копирования:

    nano scripts/backup.sh
    
  2. Добавьте следующий код:

    #!/bin/bash
    
    # Настройки
    BACKUP_DIR="/var/backups/brainrotguard"
    DATE=$(date +"%Y%m%d_%H%M%S")
    CONFIG_ENCRYPTED="/etc/brainrotguard/config.yaml.enc"
    DB_ENCRYPTED="/var/lib/brainrotguard/db.sqlite3.enc"
    
    # Создайте директорию для резервных копий, если ее нет
    mkdir -p "$BACKUP_DIR"
    
    # Создайте архив с конфигурацией и базой данных
    tar -czf "$BACKUP_DIR/brainrotguard_$DATE.tar.gz" \
        -C /etc brainrotguard \
        -C /var/lib brainrotguard
    
    # Удалите резервные копии старше 7 дней
    find "$BACKUP_DIR" -name "brainrotguard_*.tar.gz" -mtime +7 -exec rm {} \;
    
    echo "Backup completed: $BACKUP_DIR/brainrotguard_$DATE.tar.gz"
    
  3. Сделайте скрипт исполняемым:

    chmod +x scripts/backup.sh
    
  4. Настройте cron для ежедневных резервных копий:

    crontab -e
    
  5. Добавьте следующую строку для ежедневного резервного копирования в 2:00 ночи:

    0 2 * * * /home/brainrotguard/scripts/backup.sh
    

Регулярные обновления

Шаг 1: Настройка автоматического обновления

  1. Создайте скрипт для обновления:

    nano scripts/update.sh
    
  2. Добавьте следующий код:

    #!/bin/bash
    
    # Настройки
    REPO_URL="https://github.com/brainrotguard/brainrotguard.git"
    INSTALL_DIR="/opt/brainrotguard"
    
    echo "Starting BrainRotGuard update..."
    
    # Перейдите в директорию установки
    cd "$INSTALL_DIR"
    
    # Создайте резервную копию перед обновлением
    BACKUP_DIR="/var/backups/brainrotguard/pre-update"
    mkdir -p "$BACKUP_DIR"
    
    cp -r "$BACKUP_DIR" config.yaml filters.yaml 2>/dev/null || true
    
    # Выполните git pull для получения последних изменений
    git pull origin main
    
    # Активируйте виртуальное окружение и установите зависимости
    source venv/bin/activate
    pip install -r requirements.txt
    
    # Выполните миграцию базы данных, если необходимо
    python3 manage.py migrate 2>/dev/null || true
    
    # Перезапустите сервис
    sudo systemctl restart brainrotguard
    
    echo "BrainRotGuard update completed successfully"
    
  3. Сделайте скрипт исполняемым:

    chmod +x scripts/update.sh
    

Аудит доступа

Шаг 1: Включение аудита действий пользователя

  1. Откройте файл конфигурации:

    python3 scripts/encrypt_data.py decrypt config.yaml
    nano config.yaml
    
  2. Добавьте настройки аудита:

    # Аудит доступа
    audit:
      enable: True
      
      # Настройки журнала аудита
      log:
        path: "/var/log/brainrotguard/audit.log"
        level: "INFO"
        max_size: 10485760  # 10 МБ
        backup_count: 7
      
      # Настройки отслеживания действий
      tracking:
        login_attempts: True
        video_requests: True
        filter_changes: True
        settings_changes: True
    
  3. Зашифруйте конфигурацию обратно:

    python3 scripts/encrypt_data.py encrypt config.yaml
    

Шаг 2: Создание системы отчетности

  1. Создайте скрипт для генерации отчетов:

    nano scripts/generate_report.py
    
  2. Добавьте следующий код:

    #!/usr/bin/env python3
    
    import sqlite3
    from datetime import datetime, timedelta
    import yaml
    import sys
    
    def load_config():
        with open("config.yaml", "r") as f:
            return yaml.safe_load(f)
    
    def generate_report(days=7):
        config = load_config()
        conn = sqlite3.connect("/var/lib/brainrotguard/db.sqlite3")
        cursor = conn.cursor()
        
        # Определите дату начала
        end_date = datetime.now()
        start_date = end_date - timedelta(days=days)
        
        # Получите общую статистику
        cursor.execute("""
            SELECT 
                COUNT(*) as total_requests,
                COUNT(DISTINCT user_id) as unique_users,
                SUM(CASE WHEN approved = 1 THEN 1 ELSE 0 END) as approved,
                SUM(CASE WHEN approved = 0 THEN 1 ELSE 0 END) as blocked
            FROM access_log
            WHERE timestamp >= ? AND timestamp <= ?
        """, (start_date, end_date))
        
        stats = cursor.fetchone()
        
        # Получите топ заблокированных категорий
        cursor.execute("""
            SELECT category, COUNT(*) as count
            FROM blocked_access
            WHERE timestamp >= ? AND timestamp <= ?
            GROUP BY category
            ORDER BY count DESC
            LIMIT 5
        """, (start_date, end_date))
        
        blocked_categories = cursor.fetchall()
        
        # Получите топ пользователей по активности
        cursor.execute("""
            SELECT user_id, COUNT(*) as requests
            FROM access_log
            WHERE timestamp >= ? AND timestamp <= ?
            GROUP BY user_id
            ORDER BY requests DESC
            LIMIT 5
        """, (start_date, end_date))
        
        top_users = cursor.fetchall()
        
        # Закройте соединение
        conn.close()
        
        # Сформируйте отчет
        report = {
            "period": {
                "start": start_date.isoformat(),
                "end": end_date.isoformat()
            },
            "summary": {
                "total_requests": stats[0],
                "unique_users": stats[1],
                "approved": stats[2],
                "blocked": stats[3],
                "approval_rate": round(stats[2] / stats[0] * 100, 2) if stats[0] > 0 else 0
            },
            "blocked_categories": [{"category": cat[0], "count": cat[1]} for cat in blocked_categories],
            "top_users": [{"user_id": user[0], "requests": user[1]} for user in top_users]
        }
        
        return report
    
    def save_report(report):
        timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
        filename = f"/var/reports/audit_report_{timestamp}.json"
        
        import json
        with open(filename, "w") as f:
            json.dump(report, f, indent=2)
        
        return filename
    
    if __name__ == "__main__":
        if len(sys.argv) < 2:
            print("Usage: python generate_report.py [daily|weekly|monthly|custom <days>]")
            sys.exit(1)
        
        if sys.argv[1] == "daily":
            days = 1
        elif sys.argv[1] == "weekly":
            days = 7
        elif sys.argv[1] == "monthly":
            days = 30
        elif sys.argv[1] == "custom" and len(sys.argv) > 2:
            days = int(sys.argv[2])
        else:
            print("Invalid option. Use 'daily', 'weekly', 'monthly' or 'custom <days>'")
            sys.exit(1)
        
        report = generate_report(days)
        filename = save_report(report)
        print(f"Report generated: {filename}")
    
  3. Сделайте скрипт исполняемым:

    chmod +x scripts/generate_report.py
    

7. Альтернативные решения

Обзор других инструментов родительского контроля

1. Qustodio

Описание: Qustodio - это комплексное решение для родительского контроля, которое работает на различных платформах, включая Windows, macOS, Android, iOS и Kindle.

Основные функции:

  • Мониторинг и блокировка веб-сайтов
  • Ограничение времени использования
  • Отслеживание местоположения
  • Мониторинг звонков и сообщений
  • Фильтрация контента
  • Отчеты о деятельности

Преимущества:

  • Мультиплатформенная поддержка
  • Интуитивно понятный интерфейс
  • Расширенные функции мониторинга
  • Хорошая поддержка клиентов

Недостатки:

  • Платная подписка для полного функционала
  • Ограниченная бесплатная версия
  • Требует установки на каждое устройство
  • Централизованное управление через облако

Описание: Family Link - это бесплатный инструмент от Google для управления учетными записями детей в экосистеме Google.

Основные функции:

  • Управление приложениями и играми
  • Установка времени экрана
  • Отслеживание местоположения
  • Фильтрация контента
  • Мониторинг деятельности
  • Блокировка устройств удаленно

Преимущества:

  • Бесплатный
  • Интеграция с экосистемой Google
  • Простота использования
  • Хорошая мобильная поддержка

Недостатки:

  • Ограничен устройствами Android и Chromebook
  • Меньше функций контроля по сравнению с платными аналогами
  • Требует создание отдельной учетной записи Google для ребенка
  • Ограниченная поддержка на iOS

3. OpenDNS FamilyShield

Описание: FamilyShield - это бесплатный сервис от OpenDNS, который автоматически блокирует доступ к взрослому контенту.

Основные функции:

  • Блокировка веб-сайтов с взрослым контентом
  • Защита от фишинга и вредоносных сайтов
  • Простая настройка через изменение DNS-серверов
  • Базовая фильтрация категорий

Преимущества:

  • Бесплатный
  • Простая настройка
  • Не требует установки на устройства
  • Работает на всех платформах

Недостатки:

  • Ограниченные функции по сравнению с другими решениями
  • Нет детального контроля или мониторинга
  • Может блокировать легитимные сайты
  • Нет возможности создания пользовательских правил

Сравнение функций

ФункцияBrainRotGuardQustodioFamily LinkOpenDNSKaspersky Safe Kids
Фильтрация YouTube контента✅✅✅❌✅
Самостоятельное размещение✅❌❌✅❌
Мультиплатформенная поддержка✅✅Частично✅✅
Мониторинг активности✅✅✅❌✅
Управление временем экрана✅✅✅❌✅
Отслеживание местоположения❌✅✅❌✅
Фильтрация веб-сайтов✅✅✅✅✅
Создание черных/белых списков✅✅✅✅✅
Отчеты о деятельности✅✅✅❌✅
Шифрование данных✅✅✅❌✅
Открытый исходный код✅❌❌Частично❌
Бесплатный✅Частично✅✅Частично

Комбинирование решений

1. BrainRotGuard + OpenDNS

Комбинация: Используйте BrainRotGuard для детального контроля над YouTube и другим контентом, а OpenDNS - как дополнительный уровень защиты для блокировки нежелательных веб-сайтов.

Настройка:

  1. Настройте BrainRotGuard как описано в этом руководстве
  2. Измените DNS-серверы на:
    • Primary: 208.67.222.123
    • Secondary: 208.67.220.123

Преимущества:

  • Двухуровневая защита
  • BrainRotGuard для детального контроля контента
  • OpenDNS для базовой фильтрации веб-сайтов
  • Уменьшение ложных срабатываний за счет комбинации подходов

Комбинация: Используйте BrainRotGuard для контроля над YouTube и веб-контентом, а Family Link для управления временем экрана и базового контроля приложений на устройствах Android.

Настройка:

  1. Настройте BrainRotGuard как описано в этом руководстве
  2. Установите Family Link на устройствах Android
  3. Настройте основные правила времени экрана в Family Link
  4. Используйте BrainRotGuard для детальной фильтрации контента

Преимущества:

  • Комплексный контроль
  • BrainRotGuard для детальной фильтрации контента
  • Family Link для управления временем экрана
  • Удобное управление через мобильное приложение Family Link

8. Заключение

Преимущества самостоятельного размещения

BrainRotGuard предлагает несколько ключевых преимуществ по сравнению с облачными решениями для родительского контроля:

  1. Полный контроль над данными:

    • Все данные хранятся локально на вашем сервере
    • Нет передачи информации на внешние серверы
    • Возможность полностью контролировать, какие данные собираются и как используются
  2. Гибкость настройки:

    • Возможность создать собственные правила фильтрации
    • Адаптация системы под конкретные потребности вашей семьи
    • Интеграция с другими системами безопасности в вашей сети
  3. Отсутствие зависимости от интернет-соединения:

    • Система продолжает работать при частичных сбоях интернета
    • Нет зависимости от доступности внешних серверов
    • Более надежная работа в условиях нестабильного интернет-соединения
  4. Отсутствие абонентской платы:

    • Единовременные затраты на оборудование
    • Бесплатное обновление и поддержка
    • Нет скрытых платежей или ограничений в бесплатной версии
  5. Образовательная ценность:

    • Возможность вовлечь детей в процесс настройки системы
    • Обсуждение причин блокировки контента
    • Развитие цифровой грамотности у детей

Дальнейшие улучшения

BrainRotGuard постоянно развивается, и в будущем можно ожидать следующие улучшения:

  1. Расширение поддержки платформ:

    • Поддержка дополнительных видеохостингов
    • Интеграция с социальными сетями
    • Поддержка потоковых сервисов
  2. Улучшение алгоритмов фильтрации:

    • Использование машинного обучения для более точной классификации контента
    • Адаптивные правила фильтрации на основе поведения пользователей
    • Улучшенная система обработки естественного языка для анализа описаний видео
  3. Расширение функций безопасности:

    • Двухфакторная аутентификация
    • Улучшенное шифрование данных
    • Интеграция с системами обнаружения вторжений
  4. Улучшение интерфейса:

    • Веб-интерфейс с расширенными возможностями
    • Мобильное приложение для управления системой
    • Панель управления для мониторинга активности в реальном времени

Ресурсы для изучения

Для дальнейшего изучения темы защиты детей в интернете и продвинутого использования BrainRotGuard, рекомендуем следующие ресурсы:

  1. Официальная документация BrainRotGuard:

  2. Форум сообщества:

    • https://community.brainrotguard.org
    • Обсуждение с другими пользователями
    • Советы и рекомендации
    • Обмен правилами фильтрации
  3. Ресурсы по цифровой грамотности для детей:

    • https://www.commonsensemedia.org
    • Рекомендации по возрастному контенту
    • Руководства для родителей
    • Обзоры приложений и игр
  4. Исследования влияния цифровых медиа на детей:

    • https://www.ahapolicy.org
    • Статьи о влиянии экранного времени
    • Исследования о развитии детей в цифровую эпоху
    • Рекомендации по здоровому использованию технологий

Этот гайд предоставил вам полное руководство по установке и настройке BrainRotGuard - самостоятельно размещенной системы одобрения YouTube для защиты детей от алгоритмических ловушек. Следуя инструкциям, вы сможете создать безопасную цифровую среду для ваших детей, при этом сохраняя полный контроль над данными и функциями системы.

Поделиться:TelegramX / TwitterVK
BrainRotGuard: система одобрения YouTube для защиты детей | GeekWeb | home hosted