🛰️ Data Acquisition — Overview
Как мы получаем партии и информацию об игроках для аналитики: реверс-инжиниринг протокола игровых сайтов, синхронизация истории и наши инструменты добычи. Внутренний раздел закрытой вики (репозитории приватные, сайт за Zero Trust).
Внутреннее
Здесь описаны методы доступа к сторонним сайтам и внутренняя механика добычи. Раздел не предназначен для распространения за пределами команды; секреты (токены/ключи/connection-string) держим в
.env/секрет-сторе, а не в заметках.
🔄 Синхронизация — как это устроено (спайн 03–09)
Подробное описание того, как партии и игроки синхронизируются с игровых сайтов в аналитику. Читается сверху вниз; страница 03-Sinkhronizatsiya-obzor-i-arkhitektura — точка входа и карта всего остального.
- 03-Sinkhronizatsiya-obzor-i-arkhitektura — начни отсюда. Два режима добычи (live observer / backfill sync), медальон (сайт → bronze → gold), писатели в общий контракт, сквозной путь партии, обе машины состояний кратко.
- 04-Graf-igrokov-i-perechislenie — синхронизация информации об игроках: seed-игроки + спайдер по оппонентам (BFS),
POST /api/player/history, полный против инкрементального свипа, резюм поenumerate_offset, таблицаplayers, машина состояний игрока. - 05-Konveyer-partiy-i-sostoyaniya — синхронизация партий: таблицы
games+raw_game_data, машина состояний партии, стадииfetch → normalize → post → archive, сырой кэш и реплей, идемпотентность. - 06-Zashchita-ot-blokirovok-i-Cloudflare — rate-limiter (single-flight, spacing + jitter, backoff, retry-on-throttle, бюджет), curl/Cloudflare/OpenSSL-фингерпринт, рычаг
ENUMERATE_PAGE_SIZE, уроки429. - 07-Kontrakt-ingest-i-validatsiya-dvizhkom — стык с аналитикой:
POSTпротивPUT /api/games, схемаGameIngest, реплей-гейт движком (что значит422), first-writer-wins. - 08-Identichnost-istochniki-i-deduplikatsiya —
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-архиве (кроме first-party источников — extension и playsite — у которых сырья нет).
- Live-nablyudatel-dicechess-observer — live-наблюдатель партий dicechess.com (rpi4), обход Cloudflare через
curl. - dicechess-sync — бэкфилл исторических партий dicechess.com (граф игроков).
- Beturanga-vtoroy-istochnik — второй сайт beturanga.com (Socket.IO), гибридная стратегия Фишера.
- Rasshirenie-dicechess-extension — браузерное расширение: играет нашим ботом и подменяет игрока на
bot:<algorithm>(анализ силы алгоритма). - playsite (dicechess-play) — наш публичный игровой сайт: партии анонимов с ботами,
source='playsite'(пятый писатель). - Raw-arkhiv-bronze-sloy — immutable bronze-слой сырых JSON (формализация кэша
raw_game_data).
🌐 Протокол игровых сайтов
Низкоуровневый реверс-инжиниринг: что и как шлёт сайт, где взять сессию, как перехватить трафик.
- Server Messages — какие сообщения шлёт dicechess.com (STOMP/WebSocket), дамп фреймов.
- Simple Text Oriented Messaging Protocol — STOMP поверх WebSocket и автоматизация над ним.
- Gde-lezhit-JWT-posle-logina — где взять токен сессии и как проверить его TTL.
- Kak-perekhvatit-vsyu-sessiyu — захват/реплей сессии (HAR, Proxyman/Charles).
- error on pawn promoution — живой дамп состояния партии с краевым случаем превращения пешки.
🤖 Боты и движок (связанное)
История про игру нашего движка против сайт-ботов — соседняя с добычей тема (репозиторий dicechess-bots, см. также Rasshirenie-dicechess-extension).
- Igra-protiv-robotov — наш движок против сайт-ботов через STOMP + субпроцесс движка.
- Sozdannaya-struktura — структура репозитория
dicechess-bots.