🛰️ Data Acquisition — Overview
Как мы получаем партии и информацию об игроках для аналитики: реверс-инжиниринг протокола игровых сайтов, синхронизация истории и наши инструменты добычи. Внутренний раздел закрытой вики (репозитории приватные, сайт за Zero Trust).
Внутреннее
Здесь описаны методы доступа к сторонним сайтам и внутренняя механика добычи. Раздел не предназначен для распространения за пределами команды; секреты (токены/ключи/connection-string) держим в
.env/секрет-сторе, а не в заметках.
🔄 Синхронизация — как это устроено (спайн 03–09)
Подробное описание того, как партии и игроки синхронизируются с игровых сайтов в аналитику. Читается сверху вниз; страница 03 Синхронизация — обзор и архитектура — точка входа и карта всего остального.
- 03 Синхронизация — обзор и архитектура — начни отсюда. Два режима добычи (live observer / backfill sync), медальон (сайт → bronze → gold), четыре писателя, сквозной путь партии, обе машины состояний кратко.
- 04 Граф игроков и перечисление — синхронизация информации об игроках: seed-игроки + спайдер по оппонентам (BFS),
POST /api/player/history, полный против инкрементального свипа, резюм поenumerate_offset, таблицаplayers, машина состояний игрока. - 05 Конвейер партий и состояния — синхронизация партий: таблицы
games+raw_game_data, машина состояний партии, стадииfetch → normalize → post → archive, сырой кэш и реплей, идемпотентность. - 06 Защита от блокировок и Cloudflare — rate-limiter (single-flight, spacing + jitter, backoff, retry-on-throttle, бюджет), curl/Cloudflare/OpenSSL-фингерпринт, рычаг
ENUMERATE_PAGE_SIZE, уроки429. - 07 Контракт ingest и валидация движком — стык с аналитикой:
POSTпротивPUT /api/games, схемаGameIngest, реплей-гейт движком (что значит422), first-writer-wins. - 08 Идентичность, источники и дедупликация —
external_id/source/player_typeпо всем писателям, нативный отрицательный id ботов против нашегоbot:<algorithm>, гонка first-writer-wins, дедуп V6. - 09 Pipeline - dicechess-sync — служебная справка по сервису
dicechess-sync: CLI-команды, полная таблица env-переменных, демон-цикл, Docker-деплой.
✍️ Сервисы-писатели и хранилище
Четыре независимых писателя сходятся в одном контракте POST /api/games; сырьё оседает в bronze-архиве.
- Live-наблюдатель (dicechess-observer) — live-наблюдатель партий dicechess.com (rpi4), обход Cloudflare через
curl. - dicechess-sync — бэкфилл исторических партий dicechess.com (граф игроков).
- Beturanga — второй источник — второй сайт beturanga.com (Socket.IO), гибридная стратегия Фишера.
- Расширение dicechess-extension — браузерное расширение: играет нашим ботом и подменяет игрока на
bot:<algorithm>(анализ силы алгоритма). - Raw-архив — bronze-слой — immutable bronze-слой сырых JSON (формализация кэша
raw_game_data).
🌐 Протокол игровых сайтов
Низкоуровневый реверс-инжиниринг: что и как шлёт сайт, где взять сессию, как перехватить трафик.
- Server Messages — какие сообщения шлёт dicechess.com (STOMP/WebSocket), дамп фреймов.
- Simple Text Oriented Messaging Protocol — STOMP поверх WebSocket и автоматизация над ним.
- Где лежит JWT после логина — где взять токен сессии и как проверить его TTL.
- Как перехватить всю сессию — захват/реплей сессии (HAR, Proxyman/Charles).
- error on pawn promoution — живой дамп состояния партии с краевым случаем превращения пешки.
🤖 Боты и движок (связанное)
История про игру нашего движка против сайт-ботов — соседняя с добычей тема (репозиторий dicechess-bots, см. также Расширение dicechess-extension).
- Игра против роботов — наш движок против сайт-ботов через STOMP + субпроцесс движка.
- Созданная структура — структура репозитория
dicechess-bots.