BrainRotGuard: система одобрения YouTube для защиты детей
Узнайте, как развернуть BrainRotGuard в домашней сети: пошаговое руководство по настройке системы одобрения YouTube для защиты детей от вредного контента.
Подготовка системы
Установка операционной системы и базовых инструментов
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.pyBrainRotGuard - Самостоятельно размещенная система одобрения YouTube для защиты детей от алгоритмических ловушек
1. Введение
Проблема алгоритмов YouTube и их влияние на детей
YouTube является одной из самых популярных платформ для детей, но его алгоритмы часто создают "алгоритмические ловушки" или "кроличьи норы", которые могут вести детей к контенту, не подходящему для их возраста. Проблемы включают:
- Автоматическое воспроизведение бесконечного потока контента
- Рекомендации все более экстремального или неподобающего контента
- Снижение способности концентрироваться на длительных задачах
- Риск воздействия дезинформации или неподобающего контента
Обзор BrainRotGuard как решения
BrainRotGuard - это система самостоятельного размещения, которая работает как посредник между устройствами в домашней сети и YouTube. Она позволяет:
- Блокировать автоматическое воспроизведение
- Фильтровать рекомендации на основе настраиваемых правил
- Требовать явного одобрения для просмотра новых видео
- Ограничивать время использования
- Предоставлять прозрачные отчеты о просмотренном контенте
Поскольку система самостоятельно размещается, у вас есть полный контроль над данными и функциями без зависимости от внешних сервисов.
Что мы будем покрыть в этом руководстве
В этом руководстве мы рассмотрим полный процесс установки и настройки BrainRotGuard, включая:
- Подготовку необходимого оборудования и программного обеспечения
- Установку и базовую настройку системы
- Интеграцию с вашей домашней сетью
- Настройку правил фильтрации и контроля
- Расширенные функции для повышения эффективности
- Меры безопасности и конфиденциальности
- Альтернативные решения для комплексной защиты детей
2. Требования и подготовка
Необходимое оборудование
Для установки BrainRotGuard вам потребуется следующее оборудование:
-
Сервер или мини-ПК:
- Процессор: Dual-core 2.0 ГГц или лучше
- Оперативная память: 2 ГБ минимум (4 ГБ рекомендуется)
- Накопитель: 8 ГБ свободного места
- Операционная система: Linux (рекомендуется Ubuntu 20.04 или более новая)
-
Сетевое оборудование:
- Маршрутизатор с поддержкой кастомного DNS
- Сетевой кабель для подключения сервера к сети
- Статический IP-адрес для сервера (или возможность настроить DHCP резервирование)
-
Дополнительные компоненты (опционально):
- USB-накопитель для резервных копий
- Устройство для мониторинга (например, Raspberry Pi с дисплеем)
Требования к программному обеспечению
Перед установкой убедитесь, что на вашем сервере установлено следующее программное обеспечение:
-
Операционная система:
- Ubuntu 20.04 LTS или более новая
- Альтернативно: Debian 10+ или Raspberry Pi OS
-
Базовые инструменты:
- Git
- Python 3.8 или выше
- pip (менеджер пакетов Python)
- Docker (опционально, для контейнеризированной установки)
-
Сетевые инструменты:
- dnsmasq (для DNS-прокси)
- squid (для HTTP-прокси)
- nginx (веб-интерфейс)
-
YouTube API:
- Ключ API YouTube Data v3
- Ключ API YouTube Content ID (опционально)
Установка необходимой инфраструктуры
Начнем с базовой установки операционной системы и необходимых инструментов.
Шаг 1: Установка операционной системы
-
Загрузите и установите Ubuntu 20.04 LTS на ваш сервер:
- Скачайте образ с официального сайта Ubuntu
- Используйте Rufus (для Windows) или dd (для Linux) для создания загрузочного USB
- Установите систему, следуя инструкциям установщика
-
После установки выполните базовую настройку:
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-адреса
-
Откройте файл конфигурации сети:
sudo nano /etc/netplan/01-network-manager-all.yaml -
Добавьте следующую конфигурацию (замените значения на ваши):
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] -
Примените изменения:
sudo netplan apply -
Проверьте 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: Базовая конфигурация
-
Создайте файл конфигурации:
cp config.example.yaml config.yaml nano config.yaml -
Отредактируйте основные параметры:
# Основные настройки 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 -
Создайте необходимые директории:
sudo mkdir -p /var/lib/brainrotguard sudo chown -R $USER:$USER /var/lib/brainrotguard
Конфигурация для YouTube API
Шаг 1: Получение ключа API YouTube
-
Перейдите в Google Cloud Console:
- Откройте https://console.cloud.google.com/
- Создайте новый проект или выберите существующий
-
Включите YouTube Data API:
- Перейдите в меню "API и сервисы" > "Библиотека"
- Найдите "YouTube Data API v3" и включите его
-
Создайте ключ API:
- Перейдите в "API и сервисы" > "Учетные данные"
- Нажмите "Создать учетные данные" > "Ключ API"
- Скопируйте сгенерированный ключ
Шаг 2: Настройка BrainRotGuard для использования API
-
Откройте файл конфигурации:
nano config.yaml -
Добавьте секцию для YouTube API:
# Настройки YouTube API youtube: api_key: "ваш_ключ_api_здесь" api_service_name: "youtube.googleapis.com" api_version: "v3" quota_limit: 10000 # Ежедневный лимит запросов -
Проверьте подключение к API:
python3 scripts/test_youtube_api.py
Настройка правил фильтрации
Шаг 1: Создание базовых правил фильтрации
-
Откройте файл конфигурации фильтрации:
nano filters.yaml -
Добавьте базовые правила:
# Базовые правила фильтрации categories: block: - "Гейминг" # Блокировка игровых категорий - "Meme" # Блокировка мема и вирусного контента - "Challenges" # Блокировка челленджей restrict: - "Education" # Ограничение образовательного контента - "Kids" # Ограничение контента для детей # Ключевые слова для блокировки keywords: block: - "challenge" - "prank" - "viral" # Каналы для блокировки channels: block: - "UC_x5XG1OV2P6uZZ5FSM9Ttw" # Пример ID канала
Шаг 2: Настройка автоматического одобрения
-
Отредактируйте файл конфигурации:
nano config.yaml -
Добавьте настройки автоматического одобрения:
# Настройки автоматического одобрения 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: Настройка сбора логов
-
Откройте файл конфигурации BrainRotGuard:
nano config.yaml -
Добавьте настройки логирования:
# Настройки логирования logging: level: "INFO" file: "/var/log/brainrotguard.log" max_size: 10485760 # 10 МБ backup_count: 5 # Настройки мониторинга monitoring: enable: True metrics_port: 8081
Шаг 2: Создание logrotate для управления логами
-
Создайте файл конфигурации logrotate:
sudo nano /etc/logrotate.d/brainrotguard -
Добавьте следующее содержимое:
/var/log/brainrotguard.log { daily missingok rotate 7 compress delaycompress notifempty create 644 $USER $USER }
Шаг 3: Настройка мониторинга
-
Установите 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 -
Добавьте следующее содержимое в сервисный файл:
[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 -
Запустите и включите Node Exporter:
sudo systemctl daemon-reload sudo systemctl start node_exporter sudo systemctl enable node_exporter
5. Расширенные функции
Создание черных и белых списков
Шаг 1: Настройка черных списков
-
Откройте файл конфигурации фильтрации:
nano filters.yaml -
Добавьте подробные правила для черного списка:
# Расширенный черный список blacklist: # Категории для полной блокировки categories: - "Gaming" - "Pranks" - "Challenges" - "Viral" # Ключевые слова для блокировки keywords: - "challenge" - "prank" - "viral" - "extreme" - "dangerous" # Каналы для блокировки channels: - "UC_x5XG1OV2P6uZZ5FSM9Ttw" # Пример ID канала # Теги для блокировки tags: - "challenge" - "prank" - "viral"
Шаг 2: Настройка белых списков
-
Отредактируйте файл конфигурации фильтрации:
nano filters.yaml -
Добавьте правила для белого списка:
# Белый список - разрешает только указанное 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: Интеграция с базой данных
-
Создайте скрипт для управления списками:
nano scripts/manage_lists.py -
Добавьте следующий код:
#!/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) -
Сделайте скрипт исполняемым:
chmod +x scripts/manage_lists.py -
Запустите обновление:
python3 scripts/manage_lists.py blacklist
Настройка временных ограничений
Шаг 1: Настройка базовых временных ограничений
-
Откройте файл конфигурации:
nano config.yaml -
Добавьте секцию для временных ограничений:
# Временные ограничения 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: Создание скрипта для управления временными ограничениями
-
Создайте скрипт:
nano scripts/time_limits.py -
Добавьте следующий код:
#!/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) -
Сделайте скрипт исполняемым:
chmod +x scripts/time_limits.py -
Запустите обновление:
python3 scripts/time_limits.py update
Интеграция с другими устройствами в сети
Шаг 1: Настройка клиентского приложения
-
Создайте директорию для клиентского приложения:
mkdir -p ~/brainrotguard-client cd ~/brainrotguard-client -
Скачайте клиентское приложение:
wget https://github.com/brainrotguard/client/releases/latest/download/client.zip unzip client.zip -
Создайте файл конфигурации клиента:
nano config.yaml -
Добавьте следующее содержимое:
# Конфигурация клиента 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: Установка клиентского приложения на устройствах
-
Для Android:
# Скачайте APK wget https://github.com/brainrotguard/client/releases/latest/android/brainrotguard.apk # Установите APK adb install brainrotguard.apk -
Для Windows:
# Скачайте установщик wget https://github.com/brainrotguard/client/releases/latest/windows/brainrotguard-installer.exe # Запустите установщик brainrotguard-installer.exe
Шаг 3: Настройка централизованного управления
-
Откройте файл конфигурации сервера:
nano config.yaml -
Добавьте настройки централизованного управления:
# Централизованное управление 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: Шифрование конфиденциальных данных
-
Создайте скрипт для шифрования конфиденциальных данных:
nano scripts/encrypt_data.py -
Добавьте следующий код:
#!/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) -
Сгенерируйте ключ и зашифруйте конфиденциальные файлы:
python3 scripts/encrypt_data.py generate python3 scripts/encrypt_data.py encrypt config.yaml
Шаг 2: Регулярные резервные копии
-
Создайте скрипт для резервного копирования:
nano scripts/backup.sh -
Добавьте следующий код:
#!/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" -
Сделайте скрипт исполняемым:
chmod +x scripts/backup.sh -
Настройте cron для ежедневных резервных копий:
crontab -e -
Добавьте следующую строку для ежедневного резервного копирования в 2:00 ночи:
0 2 * * * /home/brainrotguard/scripts/backup.sh
Регулярные обновления
Шаг 1: Настройка автоматического обновления
-
Создайте скрипт для обновления:
nano scripts/update.sh -
Добавьте следующий код:
#!/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" -
Сделайте скрипт исполняемым:
chmod +x scripts/update.sh
Аудит доступа
Шаг 1: Включение аудита действий пользователя
-
Откройте файл конфигурации:
python3 scripts/encrypt_data.py decrypt config.yaml nano config.yaml -
Добавьте настройки аудита:
# Аудит доступа 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 -
Зашифруйте конфигурацию обратно:
python3 scripts/encrypt_data.py encrypt config.yaml
Шаг 2: Создание системы отчетности
-
Создайте скрипт для генерации отчетов:
nano scripts/generate_report.py -
Добавьте следующий код:
#!/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}") -
Сделайте скрипт исполняемым:
chmod +x scripts/generate_report.py
7. Альтернативные решения
Обзор других инструментов родительского контроля
1. Qustodio
Описание: Qustodio - это комплексное решение для родительского контроля, которое работает на различных платформах, включая Windows, macOS, Android, iOS и Kindle.
Основные функции:
- Мониторинг и блокировка веб-сайтов
- Ограничение времени использования
- Отслеживание местоположения
- Мониторинг звонков и сообщений
- Фильтрация контента
- Отчеты о деятельности
Преимущества:
- Мультиплатформенная поддержка
- Интуитивно понятный интерфейс
- Расширенные функции мониторинга
- Хорошая поддержка клиентов
Недостатки:
- Платная подписка для полного функционала
- Ограниченная бесплатная версия
- Требует установки на каждое устройство
- Централизованное управление через облако
2. Google Family Link
Описание: Family Link - это бесплатный инструмент от Google для управления учетными записями детей в экосистеме Google.
Основные функции:
- Управление приложениями и играми
- Установка времени экрана
- Отслеживание местоположения
- Фильтрация контента
- Мониторинг деятельности
- Блокировка устройств удаленно
Преимущества:
- Бесплатный
- Интеграция с экосистемой Google
- Простота использования
- Хорошая мобильная поддержка
Недостатки:
- Ограничен устройствами Android и Chromebook
- Меньше функций контроля по сравнению с платными аналогами
- Требует создание отдельной учетной записи Google для ребенка
- Ограниченная поддержка на iOS
3. OpenDNS FamilyShield
Описание: FamilyShield - это бесплатный сервис от OpenDNS, который автоматически блокирует доступ к взрослому контенту.
Основные функции:
- Блокировка веб-сайтов с взрослым контентом
- Защита от фишинга и вредоносных сайтов
- Простая настройка через изменение DNS-серверов
- Базовая фильтрация категорий
Преимущества:
- Бесплатный
- Простая настройка
- Не требует установки на устройства
- Работает на всех платформах
Недостатки:
- Ограниченные функции по сравнению с другими решениями
- Нет детального контроля или мониторинга
- Может блокировать легитимные сайты
- Нет возможности создания пользовательских правил
Сравнение функций
| Функция | BrainRotGuard | Qustodio | Family Link | OpenDNS | Kaspersky Safe Kids |
|---|---|---|---|---|---|
| Фильтрация YouTube контента | ✅ | ✅ | ✅ | ❌ | ✅ |
| Самостоятельное размещение | ✅ | ❌ | ❌ | ✅ | ❌ |
| Мультиплатформенная поддержка | ✅ | ✅ | Частично | ✅ | ✅ |
| Мониторинг активности | ✅ | ✅ | ✅ | ❌ | ✅ |
| Управление временем экрана | ✅ | ✅ | ✅ | ❌ | ✅ |
| Отслеживание местоположения | ❌ | ✅ | ✅ | ❌ | ✅ |
| Фильтрация веб-сайтов | ✅ | ✅ | ✅ | ✅ | ✅ |
| Создание черных/белых списков | ✅ | ✅ | ✅ | ✅ | ✅ |
| Отчеты о деятельности | ✅ | ✅ | ✅ | ❌ | ✅ |
| Шифрование данных | ✅ | ✅ | ✅ | ❌ | ✅ |
| Открытый исходный код | ✅ | ❌ | ❌ | Частично | ❌ |
| Бесплатный | ✅ | Частично | ✅ | ✅ | Частично |
Комбинирование решений
1. BrainRotGuard + OpenDNS
Комбинация: Используйте BrainRotGuard для детального контроля над YouTube и другим контентом, а OpenDNS - как дополнительный уровень защиты для блокировки нежелательных веб-сайтов.
Настройка:
- Настройте BrainRotGuard как описано в этом руководстве
- Измените DNS-серверы на:
- Primary: 208.67.222.123
- Secondary: 208.67.220.123
Преимущества:
- Двухуровневая защита
- BrainRotGuard для детального контроля контента
- OpenDNS для базовой фильтрации веб-сайтов
- Уменьшение ложных срабатываний за счет комбинации подходов
2. BrainRotGuard + Family Link
Комбинация: Используйте BrainRotGuard для контроля над YouTube и веб-контентом, а Family Link для управления временем экрана и базового контроля приложений на устройствах Android.
Настройка:
- Настройте BrainRotGuard как описано в этом руководстве
- Установите Family Link на устройствах Android
- Настройте основные правила времени экрана в Family Link
- Используйте BrainRotGuard для детальной фильтрации контента
Преимущества:
- Комплексный контроль
- BrainRotGuard для детальной фильтрации контента
- Family Link для управления временем экрана
- Удобное управление через мобильное приложение Family Link
8. Заключение
Преимущества самостоятельного размещения
BrainRotGuard предлагает несколько ключевых преимуществ по сравнению с облачными решениями для родительского контроля:
-
Полный контроль над данными:
- Все данные хранятся локально на вашем сервере
- Нет передачи информации на внешние серверы
- Возможность полностью контролировать, какие данные собираются и как используются
-
Гибкость настройки:
- Возможность создать собственные правила фильтрации
- Адаптация системы под конкретные потребности вашей семьи
- Интеграция с другими системами безопасности в вашей сети
-
Отсутствие зависимости от интернет-соединения:
- Система продолжает работать при частичных сбоях интернета
- Нет зависимости от доступности внешних серверов
- Более надежная работа в условиях нестабильного интернет-соединения
-
Отсутствие абонентской платы:
- Единовременные затраты на оборудование
- Бесплатное обновление и поддержка
- Нет скрытых платежей или ограничений в бесплатной версии
-
Образовательная ценность:
- Возможность вовлечь детей в процесс настройки системы
- Обсуждение причин блокировки контента
- Развитие цифровой грамотности у детей
Дальнейшие улучшения
BrainRotGuard постоянно развивается, и в будущем можно ожидать следующие улучшения:
-
Расширение поддержки платформ:
- Поддержка дополнительных видеохостингов
- Интеграция с социальными сетями
- Поддержка потоковых сервисов
-
Улучшение алгоритмов фильтрации:
- Использование машинного обучения для более точной классификации контента
- Адаптивные правила фильтрации на основе поведения пользователей
- Улучшенная система обработки естественного языка для анализа описаний видео
-
Расширение функций безопасности:
- Двухфакторная аутентификация
- Улучшенное шифрование данных
- Интеграция с системами обнаружения вторжений
-
Улучшение интерфейса:
- Веб-интерфейс с расширенными возможностями
- Мобильное приложение для управления системой
- Панель управления для мониторинга активности в реальном времени
Ресурсы для изучения
Для дальнейшего изучения темы защиты детей в интернете и продвинутого использования BrainRotGuard, рекомендуем следующие ресурсы:
-
Официальная документация BrainRotGuard:
- https://brainrotguard.readthedocs.io
- Руководства по настройке
- Описание всех функций
- Часто задаваемые вопросы
-
Форум сообщества:
- https://community.brainrotguard.org
- Обсуждение с другими пользователями
- Советы и рекомендации
- Обмен правилами фильтрации
-
Ресурсы по цифровой грамотности для детей:
- https://www.commonsensemedia.org
- Рекомендации по возрастному контенту
- Руководства для родителей
- Обзоры приложений и игр
-
Исследования влияния цифровых медиа на детей:
- https://www.ahapolicy.org
- Статьи о влиянии экранного времени
- Исследования о развитии детей в цифровую эпоху
- Рекомендации по здоровому использованию технологий
Этот гайд предоставил вам полное руководство по установке и настройке BrainRotGuard - самостоятельно размещенной системы одобрения YouTube для защиты детей от алгоритмических ловушек. Следуя инструкциям, вы сможете создать безопасную цифровую среду для ваших детей, при этом сохраняя полный контроль над данными и функциями системы.