Skip to content

Zhodisov/Discord-IPGrabber

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 

Repository files navigation

Интеграционная платформа SafeMarket для Discord

image image image image

Аннотация

Интеграционная платформа SafeMarket для Discord представляет собой сложносоставную двухсерверную архитектуру, разработанную для обеспечения безопасного, масштабируемого и контекстно-зависимого управления приглашениями в Discord. Система разделяет свои функциональные обязанности между двумя взаимосвязанными серверами: Веб-сервер Discord (размещён, например, на discord.lamoukate.lol) и Основной веб-сервер (доступен через safemarket.xyz/discord). Платформа использует криптографические механизмы токенизации, геолокационную профилировку IP-адресов и асинхронную событийно-ориентированную оркестрацию бота Discord для реализации комплексного жизненного цикла управления приглашениями.

Архитектурная таксономия

1. Основной веб-сервер (safemarket.xyz/discord)

Основной веб-сервер, реализованный на базе Flask с усиленной системой управления сессиями, служит точкой входа для пользователей, инициирующих доступ к серверу Discord. Его основная функция заключается в оркестрации безопасной переадресации на веб-сервер Discord с использованием временно-чувствительного токена на основе HMAC для предотвращения несанкционированного доступа.

  • Генерация токенов: Использует алгоритм HMAC с SHA-256 для создания токена, конкатенированного с временной меткой, обеспечивая целостность в пределах 300-секундного окна валидности. Токен передаётся как параметр запроса (safemarket) при переадресации на discord.lamoukate.lol.
  • Безопасность сессий: Настройка сессий Flask с атрибутами HttpOnly, Secure и SameSite=Lax, подкреплённая хранилищем сессий на основе файловой системы и уникальным секретным ключом (SafeMarketZhodyve).
  • Расширяемость: Интеграция дополнительных модулей для обработки мультимедиа (gTTS, PIL) и взаимодействия с VCS (GitHub API), хотя они не связаны напрямую с основным процессом управления приглашениями.

2. Веб-сервер Discord (discord.lamoukate.lol)

Веб-сервер Discord, также реализованный на Flask, выступает в роли специализированного фасада для аутентификации пользователей и генерации приглашений. Он интегрирует клиентский механизм CAPTCHA (Google reCAPTCHA) и взаимодействует с локально размещённым ботом Discord для создания эфемерных приглашений.

  • Аутентификация клиента:
    • Валидация CAPTCHA: Использует API Google SiteVerify для проверки CAPTCHA, сопоставляя IP-адреса клиентов, извлечённые из заголовков CF-Connecting-IP или X-Forwarded-For.
    • Противодействие ботам: Реализует эвристический анализ User-Agent для исключения автоматизированных агентов, классифицируя клиентов как веб, мобильные, настольные или боты.
  • Интеграция с вебхуком: Передаёт метаданные клиента (IP, User-Agent, часовой пояс, язык) на вебхук Discord (DISCORD_WEBHOOK_URL_DISCORD) для аудита.
  • Координация с ботом: Отправляет HTTP-запросы POST на конечную точку Quart бота (http://127.0.0.1:7813/d) для инициирования создания приглашений, передавая IP-адрес клиента для геолокационного профилирования.

3. Бот Discord (Quart + discord.py)

Бот Discord представляет собой гибридную конструкцию, объединяющую API-сервер на базе Quart и событийно-ориентированный клиент discord.py. Он выполняет центральную роль в управлении жизненным циклом приглашений, работая в едином асинхронном цикле событий asyncio для согласования обработки HTTP-запросов и взаимодействий с API Discord.

  • Жизненный цикл приглашений:
    • Создание: Генерирует временные приглашения (срок действия 60 секунд, лимит 2 использования) в указанном канале (INVITE_CHANNEL_ID) по запросу с IP-адресом от веб-сервера Discord.
    • Отслеживание: Поддерживает кэш приглашений в памяти (invites) и их метаданные (last_invite), связывая каждое приглашение с исходным IP-адресом.
    • Удаление: Автоматически аннулирует приглашения после использования для обеспечения одноразовой семантики, используя событие on_member_join для корреляции входа участников с использованием приглашений.
  • Геолокационное обогащение: Запрашивает ipapi.is для аннотации приглашений детализированными метаданными IP (страна, город, статус VPN, принадлежность к дата-центру), внедряя эти атрибуты в embeds, отправляемые в каналы WELCOME_CHANNEL_ID и HISTORY_CHANNEL_ID.
  • Безопасность: Валидирует входящие запросы с помощью HMAC-токенов (в настоящее время отключено), обеспечивая целостность происхождения.

Схематическое представление архитектуры

+---------------------------------------------+
|        Пользовательский клиент              |
|  (Браузер/Мобильное устройство)             |
+---------------------------------------------+
                     |
                     v
+---------------------------------------------+
| Основной веб-сервер (safemarket.xyz/discord) |
|  - Генерация токена HMAC                    |
|  - Переадресация на discord.lamoukate.lol   |
+---------------------------------------------+
                     |
                     v
+---------------------------------------------+
| Веб-сервер Discord (discord.lamoukate.lol)   |
|  - Интерфейс с CAPTCHA                      |
|  - Сбор метаданных клиента                  |
|  - Вебхук Discord для аудита                |
|  - Запрос к боту (127.0.0.1:7813/d)         |
+---------------------------------------------+
                     |
                     v
+---------------------------------------------+
| Бот Discord (Quart + discord.py)             |
|  - Создание приглашений                     |
|  - Геолокация через ipapi.is                |
|  - Embeds в каналы Discord                  |
|  - Удаление использованных приглашений      |
+---------------------------------------------+
                     |
                     v
+---------------------------------------------+
| Сервер Discord                              |
|  - Вход участников                          |
|  - Уведомления в WELCOME_CHANNEL_ID         |
|  - Логи в HISTORY_CHANNEL_ID                |
+---------------------------------------------+

Инструкции по настройке

1. Подготовка хостинга

Для развертывания требуется два независимых хостинга, предпочтительно платформы PaaS, такие как Heroku или Render, для размещения основного веб-сервера и веб-сервера Discord. Каждый сервер должен быть настроен для обеспечения HTTPS и изоляции сетевых взаимодействий.

  • Выбор хостинга:
    • Heroku: Используйте dynos для масштабируемости и автоматического управления зависимостями через Procfile.
    • Render: Настройте веб-сервисы с автоматическим масштабированием и поддержкой Docker для контейнеризации.
  • Требования к серверам:
    • Python 3.9+ с поддержкой асинхронного ввода-вывода.
    • Доступ к внешним API (ipapi.is, Google reCAPTCHA, Discord).
    • Хранилище для сессий (файловая система или Redis для масштабируемости).

2. Развертывание серверов

Основной веб-сервер

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

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

    pip install -r requirements.txt
  3. Конфигурация переменных окружения:

    • Создайте файл config.yaml:
      APP_SECRET_KEY=SafeMarketZhodyve
      SESSION_TYPE=filesystem
      DISCORD_REDIRECT_URL=https://discord.lamoukate.lol
      
    • Настройте utils.config.Config для загрузки переменных.
  4. Обновление URL: Замените safemarket.xyz/discord в коде на URL, предоставленный хостингом (например, https://daazdsxccg-main.herokuapp.com/discord).

Веб-сервер Discord и бот

  1. Клонирование репозитория:
    git clone <repository-url>
    cd safemarket-discord
  2. Установка зависимостей:
    pip install -r requirements.txt
  3. Конфигурация переменных окружения:
    • Создайте файл config.yaml:
      DISCORD_BOT_TOKEN=Discord_Bot_Token
      DISCORD_WEBHOOK_URL_DISCORD=Webhook_URL
      INVITE_CHANNEL_ID=Invite Channel ID
      WELCOME_CHANNEL_ID=Welcome Channel ID
      HISTORY_CHANNEL_ID=History Channel ID
      API_KEY=API Key
      
  4. Обновление URL: Замените discord.lamoukate.lol в коде на URL хостинга (например, https://safemarket-discord.herokuapp.com).

3. Настройка бота Discord

  1. Создание бота:
    • Перейдите на Discord Developer Portal.
    • Создайте новое приложение, добавьте бота и включите интенты (Guilds, Members, Invites).
    • Скопируйте токен бота и добавьте его в config.yaml.
  2. Приглашение бота на сервер:
    • Сгенерируйте URL приглашения с правами Manage Invites и Send Messages.
    • Добавьте бота на целевой сервер Discord.
  3. Настройка каналов:
    • Убедитесь, что каналы с ID WELCOME_CHANNEL_ID, INVITE_CHANNEL_ID и HISTORY_CHANNEL_ID существуют и бот имеет права на чтение/запись.

4. Интеграция внешних API

  • Google reCAPTCHA:
    • Зарегистрируйтесь на reCAPTCHA, получите site_key и secret_key.
    • Обновите data-sitekey в HTML-шаблоне и RECAPTCHA_SECRET в config.yaml.
  • ipapi.is:
    • Получите API-ключ на ipapi.is и добавьте в config.yaml как API_KEY.

7. Обновление ссылок

  • Замените в коде:
    • safemarket.xyz/discord на URL основного сервера.
    • discord.lamoukate.lol на URL сервера Discord.
    • Обновите http://127.0.0.1:7813/d на URL сервера Discord, если они не размещены на одной машине.
  • Переразверните оба сервера после изменений.

Схематическое представление процесса настройки

+-------------------+
| 1. Подготовка     |
| - Выбор хостинга  |
| - Heroku/Render   |
+-------------------+
          |
          v
+-------------------+
| 2. Развертывание  |
| - Основной сервер |
| - Discord сервер  |
| - Установка deps  |
| - Конфигурация env|
+-------------------+
          |
          v
+-------------------+
| 3. Настройка бота |
| - Создание бота   |
| - Интенты         |
| - Каналы Discord  |
+-------------------+
          |
          v
+-------------------+
| 4. Интеграция API |
| - reCAPTCHA       |
| - ipapi.is        |
+-------------------+
          |
          v
+-------------------+
| 5. Тестирование   |
| - Локальный запуск|
| - Проверка URLs   |
| - Мониторинг логов|
+-------------------+
          |
          v
+-------------------+
| 6. Обновление URL |
| - Замена ссылок   |
| - Переразвертывание|
+-------------------+

Поддерживается SafeMarket, версия 7.9.2, 2023 года.

About

Get IP using discord invitation URL

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages