Blackjack Live Stats — инструкция
Бесплатный счётчик карт и подсказчик стратегии для Pragmatic Play Live Blackjack. Открыл казино у себя в браузере — данные стола приходят сюда автоматически. Ниже — как поставить, как пользоваться, и что делать когда что-то странное.
1. Быстрый старт за минуту
- Установи Tampermonkey-скрипт: ⇩ Установить
- В Tampermonkey подтверди установку скрипта.
- В том же браузере открой казино с Pragmatic BJ (Stake, BC.Game, Bet365, mBit, любое) → кликни по любому Blackjack-столу.
- На главной появятся столы и пойдёт счёт. Готово.
Альтернативные пути установки:
Пошаговый мастер Через Tampermonkey-скрипт2. Как это работает (в одной картинке)
Pragmatic Play раздаёт live-таблицы через WebSocket
wss://gsN.pragmaticplaylive.net/game. Расширение
проксирует window.WebSocket в твоей вкладке казино,
перехватывает все фреймы своего стола и шлёт их на наш бэкенд.
Никаких паролей и реквизитов аккаунта мы не видим.
Что отправляет расширение
JSESSIONID (строка-токен из URL WS-коннекта), tableId, и поток XML-фреймов с картами/решениями/исходами. Всё на твой backend (адрес запечён при скачивании ZIP).
Что НЕ отправляет
Никаких паролей, email-ов, балансов, истории депозитов. Pragmatic-WS — это только данные раздач, не финансовая часть.
3. Сессии и токены
JSESSIONID — это сессионный cookie, который казино выдаёт Pragmatic после твоего логина. С ним наш бэкенд может сам подписаться на все столы этого бренда, не только на тот, что ты открыл в табе. Сессии копятся в БД, можно держать сразу несколько.
Три способа получить сессию
А. Авто (расширение)
Самый удобный. Расширение само ловит SID при открытии стола
и POST'ит на /api/sessions. В UI появляется в
разделе «Сессии».
Б. Ручной (paste)
Открой DevTools (F12) → Network → найди запрос на
pragmaticplaylive.net → скопируй
JSESSIONID → вставь в форму на /setup.
В. Через Popup расширения
Клик по иконке расширения → видишь текущий SID и кнопку Push to backend. Удобно если auto-push выключен.
Несколько брендов сразу
Логинишься в Stake — получаешь SID-1. Потом в BC.Game — SID-2. Оба попадают в пул. Покрытие столов растёт за счёт пересечения каталогов брендов.
Subscribe-all-catalog: один SID на все столы
Pragmatic на WebSocket-уровне часто принимает SID одного бренда с
канонической internal_id любого стола (которые мы знаем
из публичного каталога — 322 шт). Это значит один SID может
«прорастить» всю сетку, не только свой бренд. Кнопка для этого —
в карточке сессии в UI:
Аудит покрытия
4. Счёт и метрики
Бэкенд хранит композицию шуза — сколько карт каждого ранга осталось. TC (True Count), Hi-Lo, Wong Halves и любые другие системы счёта вычисляются на клиенте из этой композиции. Можно переключать системы на лету без перезаливки данных.
Встроенные системы
- Hi-Lo (level 1, balanced) — стандарт de facto.
- KO / Knock-Out (level 1, unbalanced) — без TC, только RC.
- Hi-Opt I / Hi-Opt II (level 1/2, balanced).
- Zen Count (level 2, balanced) — баланс между BC и PE.
- Wong Halves (level 3, balanced) — самый точный, но половинные веса считать в уме сложнее.
- Red 7 (level 1, unbalanced) — упрощённая Red 7 (с весом 0.5 на семёрки вместо различения по масти).
- Revere APC (level 3) — для энтузиастов.
Кастомные системы
В ⚙ Настройках → вкладка «Счёт» можно создать свою систему: задать веса на каждый ранг, тип (balanced/unbalanced), сохранить в библиотеку. Сохраняется в localStorage браузера, ни на сервер, ни в облако ничего не уходит.
Тонкие настройки TC
- Divisor: целые колоды / половины / четверти / карты — разные традиции считают TC по-разному.
- Rounding: floor / round / truncate / halves-down — то как ты округляешь TC в уме за столом.
- Deck precision: точно / половина / четверть / десятая — эмуляция «глазомера» на оставшийся шуз (большинство людей не считают карты с точностью до единицы).
- IRC (Initial Running Count) — для unbalanced систем
типа KO начальный RC =
4 - 4 × num_decks.
Пороги «горячий/холодный»
В настройках задаются Hot threshold (TC выше этого — плитка подсвечивается зелёным как кандидат на increase bet) и Cold threshold (ниже — плитка краснеет, signal to leave). В фильтре лобби можно показать только столы выше определённого TC.
Производные метрики
- Cards seen / total — пенетрация шуза в процентах.
- Ace side count — насколько тузы «недоиграны» относительно ожидания. Ace-rich шуз = выше шанс игроцкого BJ.
- Ten density — доля десяток в остатке. Используется для
страховки: insurance +EV когда
p(10) > 1/3 + порог. - Cut-card — флаг «дилер показал красную карту»: шуз догорает, после тасовки начнётся новый.
- Dry streaks — сколько раундов подряд не было дилерского BJ / игроцкого BJ / страховки. Чисто статистика, не сигнал.
5. Отклонения от базовой стратегии
Базовая стратегия фиксирована для нейтрального шуза. Когда счёт смещается, оптимальное решение меняется. Эти переходы и есть отклонения. Самые ценные — в наборе Illustrious 18 (по Doniger / Wong) — они дают ~80% прироста EV от всех возможных отклонений.
В ⚙ Настройках → «Отклонения» — все 18 правил включены по умолчанию. Можно отключить отдельные, отредактировать пороги TC, добавить свои. На странице стола рекомендация автоматически учитывает текущий TC: если он выше порога правила, оптимальное действие меняется (например, hard 16 vs 10: H → S при TC ≥ 0).
6. Лобби — все столы на одном экране
В каталоге 502 стола Pragmatic + Evolution, скрейпится с gamblingcounting.com каждые 30 минут. Плитки делятся на:
- live — стол подписан, события идут, RC/TC считается в реальном времени.
- retrying — был коннект, сейчас пытается восстановиться (сетевой глитч, дубль, временный 5xx).
- error — сессия мёртвая или WAF режет (с новой системой стабильности этот статус случается редко — раннер не «сдаётся», а сидит в retrying).
- не подключён — каталожная плитка, ещё не привязана ни к одной сессии. Кликни «Подключить» чтобы попробовать.
Фильтры
- По провайдеру (Pragmatic / Evolution / Ezugi).
- По TC (≥ +1, ≥ +2, ...).
- По мин-ставке (€1, €5, €25, €100).
- Только избранное / скрыть мусор / скрыть «догорающий шуз».
- Сортировка: по TC, по карт-сыграно, по имени, по добавлению.
Настройки фильтров сохраняются в localStorage между сессиями.
Глобальная панель
- Health pill в шапке — сколько столов живых, сколько замерли, сколько ошибок.
- Вышедшие карты (☰ меню → «Вышедшие карты») — агрегация по всем активным шузам: какие ранги уже сыграли больше всего, и список «горячих» столов с TC ≥ +2.
7. Страница стола
Клик по плитке live-стола → детальная страница
/t/{table_id}. Там:
- Текущая раздача — карты дилера и каждого занятого места, подсветка решений (когда что Hit/Stand/Double/Split/Surrender).
- Композиция шуза — сколько каждого ранга осталось, бар пенетрации.
- Счёт — RC, TC, Wong Halves, Hi-Lo, ace side count обновляются на каждую карту.
- Рекомендация — оптимальное действие для текущей руки при текущей композиции и TC. С delta-EV: насколько хуже было бы выбрать любое другое.
- История раздач — последние 200 рук с результатами (Win/Lose/Push/BJ/Bust).
- Статистика — счётчики dry-streaks, общая статистика побед/поражений за сессию, dealer-bias по раздачам.
8. Что бэкенд делает сам, без тебя
- Авто-дискавери — каждые 5 минут опрашивает Pragmatic-лобби для каждой активной сессии, подписывает новые столы.
- Авто-обновление каталога — каждые 30 минут заново скрейпит публичный каталог; новые/убранные провайдером столы появляются/исчезают.
- Бесконечные ретраи — раннер любого стола никогда не «сдаётся». При обрыве: exp backoff 2→60с с jitter ±20%, потом держит 60с до восстановления. 322 параллельных раннера не создают thundering herd благодаря jitter.
- Ротация SID — если Pragmatic вернул «session invalid», раннер автоматически берёт другой живой SID из пула, пересоздаёт коннект, продолжает. Помеченная мёртвой сессия не выбирается.
- SID health gate — если один раннер пометил SID мёртвым, остальные сразу делают rotation без своих собственных WS-фейлов. Не дублируем нагрузку на Pragmatic.
- Реанимация сессий — каждые 10 минут перепроверяет «мёртвые» сессии. Если lobbyServlet снова отвечает — сессия возвращается в пул, раннеры подхватывают. Полезно когда WAF временно режет SID.
- DuplicateSession не убивает SID — если ты открыл свою же вкладку казино, Pragmatic шлёт нам «дубль». Раньше это каскадно вырубало пул — сейчас просто 30с±jitter и retry, SID остаётся живым.
- Корректный шард — раннер берёт
game_serverиз метаданных стола (не дефолтныйgs14), коннектится на правильный шард с первой попытки. - Reconnect-флаг — после обрыва URL коннекта содержит
&reconnect=true, Pragmatic не считает это новой сессией → не присылаетduplicated_connection.
9. Если не работает
Расширение поставил, но ничего не появляется
- Проверь что в казино открыт хотя бы один Blackjack-стол, а не просто лобби. Без открытого стола Pragmatic-WS не создаётся.
- Открой popup расширения: видно ли там JSESSIONID? Если нет — вкладка казино не Pragmatic, или WS не открылся (попробуй закрыть/открыть стол заново).
- Проверь backend URL в настройках Tampermonkey-скрипта. Если backend на нестандартном порту или сменил адрес — переустанови скрипт.
Сессия в UI с last_error: HTTP 401
Это WAF/гео-фильтр Pragmatic режет HTTP-запросы с IP бэкенда. Сама сессия (SID) скорее всего в порядке. Варианты:
- Положить бэкенд в страну с разрешением (EU-VPS).
- Оставить только bridge-режим: расширение в твоём браузере форвардит фреймы открытых столов. Покрытие = твои табы.
- Если есть другой SID на другом бренде — добавь его, пул автоматически выберет рабочий.
Все столы в status=retrying
Скорее всего сетевой провал у бэкенда или временный 5xx у Pragmatic. Раннеры сидят на 60с±jitter и сами вернутся, когда условие пройдёт. Ничего делать не надо.
Таблица показывает старые данные / dealer не меняется
В заголовке плитки появится тихо 30с или замер ⚠ — значит фреймы давно не приходят. В live-обстановке стол либо в перемешивании (сейчас вернётся), либо WS оборван и идёт reconnect. Если статус «замер ⚠» более 3 минут — раннер скорее всего в retrying-цикле; в логах бэкенда увидишь причину.
Хочу поменять SID на свежий
Расширение само заменит — при открытии стола в казино оно ловит
новый SID из URL и POST'ит на /api/sessions. Пул
обновляется, при следующей ротации раннер возьмёт новый SID.
Старый помеченный «dead» SID будет переизбран реанимирующим
циклом если оживёт через ~10 минут.
Что-то совсем странное
В терминале где запущен бэкенд — все ошибки логируются. Поищи
строки [bjXYZ] с table_id проблемного стола.
session_invalid, duplicate_session,
retrying, rotating SID — это нормальные
состояния. listener crashed со стек-трейсом — кидай
в issues.
Bonne chance · если есть вопросы — каталог репо