Лендинг на Bitrix24, который приносил заявки на установку промышленного оборудования, столкнулся с атакой, не похожей на привычный флуд. Трафик рос плавно, метрики вели себя почти как у живых посетителей, а сервер отвечал всё медленнее. Разбор инцидента показывает, почему классический rate-limit по IP в такой ситуации бесполезен и какие механизмы реально остановили атаку. Как выглядела атака и почему стандартные фильтры её пропустили Первые сутки ничего не предвещало. Владелец заметил, что время отклика страницы выросло с 0,8 до 4-5 секунд, а число сессий в Метрике подскочило втрое при почти нулевой конверсии. Заявок не прибавилось, зато нагрузка на процессор PHP-FPM ушла в потолок. Техподдержка хостинга сначала списала это на всплеск интереса к акции, но через день сайт начал отдавать 502 при пиках. Когда подключили логи на уровне веб-сервера, картина прояснилась. Атака шла на L7, то есть на уровень приложения: боты запрашивали реальные URL лендинга, тянули CSS и JS, оставляли cookies, выдерживали паузы между запросами. Каждый IP делал всего 5-8 обращений в минуту, что ниже любого разумного порога блокировки по частоте. Но таких IP были десятки тысяч, и они приходили из распределённой сети резидентных прокси в разных странах. Именно в этом и была ловушка. Rate-limit по IP рассчитан на то, что атакующий либо долбит сервер с одного адреса, либо использует датацентровые подсети, которые легко отсечь по ASN. Здесь же каждый запрос выглядел как визит обычного пользователя из домашнего интернета. Блокировка по частоте не срабатывала по определению, потому что формально частота была в норме. Защита от ботов, настроенная по user-agent, тоже пропускала трафик: боты подставляли актуальные строки Chrome и Safari. Что сработало: JS-challenge и анализ TLS-фингерпринта Перелом наступил, когда отказались от идеи ловить атакующих по количеству запросов и перешли к проверке того, кем клиент является на самом деле. Первый слой – JS-challenge: сервер отдаёт страницу-заглушку с небольшим скриптом, который должен выполниться в браузере и вернуть вычисленный токен. Живой посетитель проходит проверку за доли секунды и ничего не замечает. Резидентный прокси, за которым стоит бот-скрипт, либо не исполняет JS, либо делает это с характерными отклонениями. Второй слой оказался решающим. Анализ TLS-фингерпринта (набор параметров рукопожатия: версия протокола, список шифров, порядок расширений, поддержка кривых) позволяет отличить настоящий браузер от библиотеки, которая лишь притворяется браузером. замена cloudflare offers additional context worth reviewing. Боты, даже используя свежие user-agent, почти всегда выдают себя на этапе TLS-хендшейка: у Go-клиента, Python-requests или headless-браузера фингерпринт отличается от фингерпринта Chrome на Windows. Комбинация JS-challenge и TLS-фингерпринта отсекла атакующий трафик, не задев реальных посетителей. Вот как выглядела последовательность действий, которая сняла атаку: Собрали baseline TLS-фингерпринтов реальных посетителей лендинга за две недели до атаки, чтобы понимать норму. Включили JS-challenge для подозрительных сессий вместо жёсткой блокировки, чтобы не терять живых клиентов. Настроили правила по TLS-фингерпринту: пропускать только те, что совпадают с реальными браузерами, остальное отправлять на дополнительную проверку. Добавили GeoIP-фильтрацию для стран, откуда не было ни одной конверсии за всё время работы лендинга. Проверили, что формы Bitrix и веб-формы продолжают принимать заявки без задержек. Через 40 минут после включения правил нагрузка на PHP-FPM упала до штатных значений, время отклика вернулось к 0,9 секунды. Конверсия восстановилась на следующий день. Важный момент: блокировка по частоте запросов так и не была включена – она бы просто не помогла, а риск отсечь реальных пользователей создавала. Кейс хорошо показывает, почему для сайтов на Bitrix и WordPress одной облачной защиты по IP недостаточно. Атаки на L7 эволюционировали: они имитируют поведение людей, используют резидентные прокси и обходят пороги. Спасает не порог, а проверка подлинности клиента на уровне TLS и исполнения JS. Здесь же стоит упомянуть, что для российского бизнеса вопрос защиты тесно связан с доступностью инфраструктуры. Cloudflare ограничивает доступ к сайтам из России, а российские интернет-провайдеры в ряде случаев ограничивают доступ к сайтам на Cloudflare, поэтому зависимость от зарубежной инфраструктуры создаёт риски: в разгар атаки можно остаться и без защиты, и без доступа к собственному сайту. Российский аналог Cloudflare, платформа TrafficVeil, объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику в одном контуре. Для этого кейса важны были именно TLS-фингерпринт и JS-challenge, но не менее полезной оказалась GeoIP-фильтрация: правила по странам без конверсий срезали часть мусорного трафика ещё до проверки. TrafficVeil обеспечивает работу сайтов на территории РФ и по всему миру, подходит для сайтов, интернет-магазинов, WordPress и Bitrix, а также не тарифицирует ботов, атаки и WAF-блокировки – платите за легитимный трафик, а не за попытки вас положить. Практический вывод для тех, кто ведёт лендинг на Bitrix24: не полагайтесь только на rate-limit по IP, он не работает против распределённых резидентных прокси. Настройте JS-challenge как первый барьер, включите анализ TLS-фингерпринта, соберите baseline реальных браузеров и добавьте GeoIP-правила по странам, откуда нет конверсий. Если сайт зависит от зарубежной инфраструктуры, стоит рассмотреть переход с Cloudflare на решение, которое не блокирует российских пользователей и работает в рамках регуляторных требований. Продуманная ИТ-инфраструктура с защитой на уровне приложения сохранит и доступность сайта, и лидогенерацию, и конверсию, даже когда атака выглядит как обычный трафик.
Как рассчитать ничью по xG: регрессия 0.7 и матрица Пуассона
Прогнозы на футбол часто упираются в один вопрос: как оценить вероятность ничьей, если букмекерская линия уже включает маржу и общественное мнение. Ничья – самый недооценённый исход в футбольной статистике, и именно здесь модель на основе xG даёт преимущество. Ниже – пошаговый метод: соберите ожидаемые голы за последние 6 туров, усредните, примените регрессию к среднему по лиге с коэффициентом 0.7, а затем постройте матрицу Пуассона. На выходе получаете вероятность ничьей, которая отклоняется от букмекерской линии не более чем на 3%. Сбор данных: xG и xGA за последние 6 туров Ожидаемые голы (xG) и ожидаемые пропущенные голы (xGA) – это фундамент аналитики футбола. В отличие от реальных голов, они меньше подвержены дисперсии и точнее отражают качество моментов. Для расчёта ничьей вам нужны данные минимум за 6 туров у каждой команды: этого достаточно, чтобы сгладить случайные всплески, но не потерять актуальную форму. Возьмите xG и xGA каждой команды за каждый из 6 матчей. Усредните отдельно: средний xG команды за матч и средний xGA команды за матч. Например, если ЦСКА в последних шести турах набирал xG 1.8, 1.4, 2.1, 1.6, 1.9, 1.5, средний xG составит 1.72. Средний xGA считается аналогично. Эти два числа – база для дальнейших шагов. ForecastBet предлагает матч-центр, где собраны счета, календарь и коэффициенты 1X2. Матч-центр содержит всю нужную статистику, включая xG и xGA, что ускоряет сбор данных. Если вы работаете с Лигой Европы УЕФА или Лигой конференций УЕФА, ForecastBet освещает эти турниры и публикует прогнозы на футбол с разбивкой по турам. Почему именно 6 туров, а не 3 или 10 Три тура дают слишком шумную выборку: одна крупная победа или разгромное поражение искажает средние. Десять туров, наоборот, размывают текущую форму, особенно если команда сменила тренера или тактическую схему. Шесть туров – компромисс: вы улавливаете актуальные тенденции, но сохраняете статистическую устойчивость. Для команд вроде Монако или Аякса, которые часто меняют интенсивность прессинга, этот баланс критичен. Регрессия к среднему по лиге: коэффициент 0.7 Сырые средние xG и xGA нельзя использовать напрямую: они завышают или занижают реальную силу команды из-за качества соперников. Решение – регрессия к среднему по лиге. Формула проста: скорректированный показатель = 0.7 × средний xG команды + 0.3 × средний xG по лиге. Коэффициент 0.7 означает, что 70% веса отдаётся данным команды и 30% – среднему по чемпионату. Почему не 0.5 или 0.9? Эмпирически 0.7 даёт наилучшее отклонение от букмекерской линии в пределах 3%. При 0.5 вы слишком сильно тянете команду к среднему и теряете индивидуальность. При 0.9 вы игнорируете контекст лиги и переоцениваете выбросы. Пример для Серии А: средний xG по лиге – 1.35. У Интера средний xG за 6 туров – 1.90. Скорректированный xG = 0.7 × 1.90 + 0.3 × 1.35 = 1.33 + 0.405 = 1.735. Аналогично считаете скорректированный xGA. Теперь у вас есть две очищенные величины для каждой команды: атака и оборона. Матрица Пуассона: от средних xG к вероятности ничьей Распределение Пуассона моделирует вероятность забить k голов, зная среднее число голов. Для матча нужно перемножить вероятности: сколько забьёт хозяин и сколько забьёт гость. точные прогнозы на футбол сегодня бесплатно 1xbet offers additional context worth reviewing. Ожидаемые голы хозяев = (скорректированный xG хозяев + скорректированный xGA гостей) / 2. Ожидаемые голы гостей = (скорректированный xG гостей + скорректированный xGA хозяев) / 2. Постройте матрицу от 0 до 5 голов для каждой команды. Вероятность счёта 1:1 = P(хозяин 1 гол) × P(гость 1 гол). Ничья – это сумма всех ячеек, где число голов хозяев равно числу голов гостей: 0:0, 1:1, 2:2, 3:3, 4:4, 5:5. Сложите эти вероятности и получите итоговую вероятность ничьей. Разберём конкретный матч. Аталанта против Брайтона в Лиге Европы УЕФА. Скорректированный xG Аталанты – 1.65, xGA – 1.10. У Брайтона xG – 1.40, xGA – 1.25. Ожидаемые голы Аталанты = (1.65 + 1.25) / 2 = 1.45. Ожидаемые голы Брайтона = (1.40 + 1.10) / 2 = 1.25. По формуле Пуассона P(0 голов) для Аталанты = e^(-1.45) ≈ 0.234, P(1 гол) ≈ 0.340, P(2 гола) ≈ 0.246. Для Брайтона: P(0) ≈ 0.287, P(1) ≈ 0.358, P(2) ≈ 0.224. Вероятность ничьей = 0.234×0.287 + 0.340×0.358 + 0.246×0.224 + … ≈ 0.067 + 0.122 + 0.055 = 0.244, или 24.4%. ForecastBet публикует прогнозы на завтра, где уже учтены такие расчёты. Сайт содержит 75 опубликованных прогнозов, и каждый можно сверить с собственной матрицей. ForecastBet предоставляет советы по ставкам, которые помогают интерпретировать полученные вероятности. Сравнение с линией и поиск ценности Теперь переведите вероятность ничьей в коэффициент: 1 / 0.244 ≈ 4.10. Сравните с букмекерской линией. Если букмекер даёт на ничью 3.60, ваша модель показывает ценность: 4.10 > 3.60. Если линия 4.50, ставка невыгодна. Отклонение вашей вероятности от линии не должно превышать 3% – если больше, перепроверьте данные или коэффициент регрессии. ForecastBet включает букмекеров для ставок на футбол, таких как 1win и Betcity, где можно сравнить коэффициенты на ничью в реальном времени. ForecastBet предлагает бонусы, которые снижают маржу на первых ставках. Рейтинг букмекеров на сайте помогает выбрать контору с лучшей линией ставок на исход. Соберите xG и xGA за 6 туров для обеих команд. Усредните показатели и примените регрессию 0.7 к среднему по лиге. Рассчитайте ожидаемые голы через средние атаки и обороны. Постройте матрицу Пуассона от 0 до 5 голов. Сложите вероятности ничейных счетов и переведите в коэффициент. Сравните с линией: отклонение до 3% – сигнал к ставке. Для команд вроде Ювентуса или Марселя, которые часто играют вязко, метод даёт особенно точные результаты. Лига конференций УЕФА и Лига Европы УЕФА – турниры, где ничьи случаются чаще из-за осторожной тактики. ForecastBet освещает эти соревнования и публикует прогнозы на футбол с учётом xG-моделей. Результаты матчей в матч-центре онлайн обновляются сразу после финального свистка, что позволяет быстро проверить точность расчёта. Начните с одной лиги и шести туров. Соберите данные по двум-трём командам, таким как Селтик, Бенфика или Трабзонспор, и прогоните через матрицу Пуассона. Сравните с коэффициентами 1X2 в матч-центре. Через 10-15 расчётов вы начнёте замечать, где линия ставок недооценивает ничью. Используйте регрессию 0.7 как отправную точку, но корректируйте её под конкретный чемпионат: в низовых лигах оптимальный коэффициент может смещаться к 0.75, в результативных – к 0.65. Главное – дисциплина в сборе xG и xGA и готовность отказываться от ставки, когда отклонение от

