MKF AntiBot
MKF AntiBot — это система защиты от поведенческих ботов, включающая JavaScript-библиотеку для работы в браузере клиента и серверную часть для дополнительной верификации. Система обнаруживает и блокирует автоматизированные программы и скрипты, имитирующие поведение пользователей.
Преимущества
- Защита от поведенческих ботов — обнаружение и блокировка автоматизированных скриптов
- Два режима работы — защита (с блокировкой) или мониторинг (без блокировки)
- Защита форм от спама — предотвращение автоматизированных отправок форм
- Защита аналитики — предотвращение искажения данных в аналитике
- Фильтрация накруток ПФ — защита от искусственного накручивания поведенческих факторов для SEO
- Пропуск легитимных поисковых ботов — система распознает и пропускает официальные поисковые роботы
- Обнаружение VPN, прокси и смены страны — выявление подозрительных изменений IP-адреса и геолокации
- Низкое влияние на производительность — оптимизированный код не замедляет работу сайта
Основные возможности
- Отпечаток браузера — анализ параметров для идентификации ботов
- Поведенческий анализ — отслеживание движений мыши, клавиатуры и других паттернов
- Защита форм — скрытые ловушки для спам-ботов
- Детектор смены IP — обнаружение быстрой смены IP, страны, использования VPN и прокси
- Черные списки IP — блокировка доступа с известных вредоносных адресов (через серверную часть)
- Верификация через капчу — интеграция с Яндекс SmartCaptcha
- Режим мониторинга — отслеживание ботов без блокировки
- Интеграция с аналитикой — отправка событий в системы аналитики
Принцип работы
Режим защиты
В режиме защиты система:
- Анализирует признаки бота при загрузке страницы (отпечаток браузера, IP-адрес)
- При обнаружении бота блокирует контент и показывает капчу
- Не загружает скрипты аналитики для ботов, сохраняя чистоту статистики
- Контролирует смену IP и страны во время сессии
- После прохождения капчи продолжает мониторинг для выявления подозрительной активности
- Защищает формы от автоматической отправки через скрытые ловушки
Режим мониторинга
В режиме мониторинга система:
- Выполняет все те же проверки, но не блокирует контент
- Отправляет данные о ботах в подключенные системы аналитики
- Позволяет собирать сегмент "ботовской" аудитории для последующей оптимизации рекламы
- Фиксирует все подозрительные действия в журнале событий
- Отслеживает попытки обхода защиты без блокировки пользователя
Архитектура
Система состоит из двух основных компонентов:
Клиентская часть (JavaScript)
Библиотека, выполняющаяся в браузере пользователя
Серверная часть (PHP)
Обеспечивает верификацию капчи, проверку IP по черным спискам и предоставление информации о геолокации
Требования
Клиентская часть
Современные браузеры с поддержкой JavaScript:
- Chrome 60+
- Firefox 60+
- Safari 12+
- Edge 16+
Серверная часть
Веб-сервер с PHP 7.4+ и поддержкой SSL
Установка и настройка MKF AntiBot
В этом руководстве описан процесс установки и базовой настройки системы MKF AntiBot на ваш сайт. Система поддерживает два режима работы: режим защиты и режим мониторинга, которые можно настроить в зависимости от ваших потребностей.
Подключение скрипта
Для установки MKF AntiBot необходимо добавить скрипт в раздел
<head>
вашего HTML-документа:
<!-- Конфигурация MKF AntiBot -->
<script>
window.MKFAntiBotConfig = {
// Базовая конфигурация
debug: false,
logo: "/path/to/your-logo.png",
captchaKey: "your-smartcaptcha-key",
serverURL: "https://your-server.com/api/antibot/",
// Дополнительные настройки будут добавлены ниже
};
</script>
<!-- Подключение библиотеки MKF AntiBot -->
<script src="/path/to/mkf-antibot.js" defer></script>
Скрипт должен быть размещен до загрузки других скриптов аналитики и отслеживания, чтобы система могла корректно управлять их загрузкой.
Базовая конфигурация
Основные параметры конфигурации системы:
Параметр | Тип | Описание |
---|---|---|
debug |
Boolean | Включает режим отладки с подробным логированием в консоль |
logo |
String | Путь к логотипу, который будет отображаться на экране загрузки и капчи |
captchaKey |
String | Ключ Яндекс SmartCaptcha для клиентской части |
serverURL |
String | URL-адрес серверной части системы для проверки IP, капчи и т.д. |
strictMode |
Boolean | Строгий режим проверки (по умолчанию true) |
cookieName |
String | Имя куки для хранения токена верификации (по умолчанию "mkf_antibot_verified") |
cookieExpiration |
Number | Срок действия куки в днях (по умолчанию 30) |
Пример базовой конфигурации:
window.MKFAntiBotConfig = {
debug: false,
logo: "https://example.com/logo.png",
captchaKey: "your-smartcaptcha-key",
serverURL: "https://api.example.com/mkf-antibot/",
strictMode: true,
cookieName: "mkf_antibot_verified",
cookieExpiration: 30
};
Режим защиты
В режиме защиты система блокирует контент страницы при обнаружении бота, отображает капчу и контролирует загрузку скриптов аналитики. Это основной режим работы, обеспечивающий максимальную защиту от автоматизированного трафика и сохраняющий чистоту данных аналитики.
- Блокировка контента страницы при обнаружении подозрительной активности
- Отображение капчи для верификации
- Предотвращение загрузки скриптов аналитики до подтверждения человеческого пользователя
- Защита форм от автоматического заполнения
- Мониторинг смены IP и страны во время сессии
Режимы защиты контента:
Пример настройки режима защиты:
window.MKFAntiBotConfig = {
debug: false,
logo: "/logo.png",
captchaKey: "your-smartcaptcha-key",
serverURL: "https://your-server.com/api/antibot/",
// Настройки защиты форм
formsProtection: {
enabled: true,
formIds: ['contactForm', 'subscribeForm'] // ID форм для защиты
},
// Настройки защиты контента
contentProtection: {
mode: 'visual', // Режим защиты контента: 'visual' или 'full'
preserveScripts: true,
preserveContext: true
},
// Настройки поведенческого анализа
behaviorAnalysis: {
enabled: true
},
// Настройки отслеживания детектов
detectionTracking: {
enabled: true
}
};
В режиме защиты система контролирует загрузку скриптов аналитики. Если обнаружен бот, аналитика не загружается, что защищает ваши данные от искажения.
Режим мониторинга
Режим мониторинга позволяет отслеживать ботов без блокировки контента. В этом режиме система распознает ботов, но не препятствует их доступу к сайту, а только отправляет данные о них в аналитику.
- Распознавание ботов без блокировки контента
- Отправка данных о ботах в системы аналитики
- Возможность сбора данных о "ботовской" аудитории для оптимизации рекламы
- Опциональная защита форм без блокировки
- Возможность отображения визуального индикатора режима мониторинга
Пример настройки режима мониторинга:
window.MKFAntiBotConfig = {
debug: false,
logo: "/logo.png",
captchaKey: "your-smartcaptcha-key",
serverURL: "https://your-server.com/api/antibot/",
// Включение режима мониторинга
monitoringMode: {
enabled: true, // Включаем режим мониторинга
trackToAnalytics: true, // Отправлять события в аналитику
blockForms: false, // Не блокировать формы при обнаружении бота
stealthMode: false, // Показывать визуальные индикаторы обнаружения
logDetections: true, // Расширенное логирование обнаружений
detectionThreshold: 50, // Порог для регистрации события обнаружения
visualIndicator: true, // Показывать индикатор режима мониторинга
samplingRate: 100 // Процент ботов для отслеживания (100 = все)
},
// Защита форм (опционально)
formsProtection: {
enabled: true,
formIds: ['contactForm']
},
// Настройки поведенческого анализа
behaviorAnalysis: {
enabled: true
}
};
В режиме мониторинга аналитика загружается для всех пользователей, включая ботов, что позволяет собирать данные о их поведении для дальнейшего анализа и оптимизации.
Интеграция с аналитикой
MKF AntiBot предлагает встроенный механизм управления скриптами аналитики. В режиме защиты система контролирует загрузку скриптов аналитики и загружает их только после верификации пользователя, что предотвращает искажение аналитических данных.
Встроенная загрузка скриптов аналитики
Вы можете настроить систему для загрузки скриптов аналитики через конфигурацию:
window.MKFAntiBotConfig = {
// Базовая конфигурация...
// Настройка аналитики
analytics: [
{
name: 'Yandex.Metrika',
type: 'js',
async: true,
code: `(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(12345678, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});`,
noscript: '<div><img src="https://mc.yandex.ru/watch/12345678" style="position:absolute; left:-9999px;" alt=""></div>'
},
{
name: 'Google Analytics',
type: 'js',
async: true,
code: `(function() {
var script = document.createElement('script');
script.async = true;
script.src = 'https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXXX';
document.head.appendChild(script);
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXXXXXX');
})();`,
noscript: '<iframe><src="https://www.googletagmanager.com/ns.html?id=G-XXXXXXXXXXX" height="0" width="0" style="display:none;visibility:hidden"></iframe>'
],
// Настройка отправки событий в аналитику
analyticsTracking: {
enabled: true,
yandexMetrikaId: '12345678',
trackForms: true,
trackBehavior: true
}
};
В режиме защиты эти скрипты будут загружены только после верификации пользователя, а в режиме мониторинга — для всех посетителей.
Проверка работоспособности
После установки системы убедитесь, что она корректно работает:
-
Откройте консоль разработчика в браузере (F12)
-
Проверьте наличие логов от MKF AntiBot:
[MKF AntiBot]: Initializing MKF Anti Bot System... [MKF AntiBot]: BotD initialized [MKF AntiBot]: Starting detection process...
-
Проверьте наличие куки верификации после успешного прохождения проверок:
document.cookie.includes('mkf_antibot_verified'); // Должно вернуть true
-
В режиме мониторинга проверьте наличие визуального индикатора (если включен):
[MKF AntiBot]: Monitoring mode enabled with visual indicator
Если вы использовали опцию debug: true
, вы увидите
подробные логи в консоли, которые помогут выявить возможные
проблемы.
Проверка IP (IPChecker)
Модуль IPChecker — компонент MKF AntiBot, отвечающий за быструю проверку IP-адреса пользователя при загрузке страницы. Он обращается к серверной части системы для определения репутации IP-адреса на основе черных списков, репутационных баз данных и других источников информации. Модуль действует как первая линия защиты, предотвращая доступ к сайту с заведомо подозрительных IP-адресов.
Принцип работы
Получение IP-адреса
- Определение текущего IP-адреса клиента
- Обработка прокси и заголовков переадресации (на стороне сервера)
- Получение действительного IP, даже при использовании CDN
Проверка репутации
- Обращение к серверной части по защищенному каналу
- Проверка IP-адреса по встроенным спискам
- Получение статуса IP (чистый/заблокированный)
Реакция на результат
- Пропуск пользователя при чистом IP
- Показ капчи при подозрительном IP (в режиме защиты)
- Отправка данных в аналитику в режиме мониторинга
Параметры настройки
window.MKFAntiBotConfig = {
// Базовая конфигурация
debug: false,
serverURL: "https://your-server.com/api/antibot/", // Обязательный параметр
// Настройки проверки IP
ipChecking: {
enabled: true, // Включить/выключить модуль
timeout: 2000, // Таймаут запроса в миллисекундах
retryAttempts: 2, // Количество повторных попыток при ошибке
},
// Настройки режима мониторинга (если требуется)
monitoringMode: {
enabled: false, // Режим мониторинга без блокировки
trackToAnalytics: true // Отправлять события в аналитику
}
}
Интеграция с серверной частью
Модуль использует API серверной части через следующие эндпоинты:
Проверка IP-адреса
GET /check-ip?ip={ip}
-
ip
- Опциональный параметр, если не указан, используется IP клиента - Возвращает статус IP (clean/blocked)
{
"success": true,
"ip": "8.8.8.8",
"check_result": {
"status": "clean"
}
}
{
"success": true,
"ip": "1.2.3.4",
"check_result": {
"status": "blocked",
"reason": "malicious_activity",
"list": "tor_exit_nodes",
"confidence": 90
}
}
События и интеграция с аналитикой
Модуль генерирует следующие события:
-
mkfAntiBot:ipCheckComplete
— генерируется после завершения проверки IP -
mkfAntiBot:suspiciousIPDetected
— генерируется при обнаружении подозрительного IP
В режиме мониторинга в системы аналитики отправляются следующие данные:
// Пример данных, отправляемых в аналитику
{
event_category: 'Security',
event_action: 'suspicious_ip_detected',
event_label: 'monitoring_mode',
value: 100,
ip: '1.2.3.4',
details: {
status: 'blocked',
reason: 'malicious_activity',
list: 'tor_exit_nodes',
confidence: 90
},
timestamp: Date.now()
}
Типы проверок и блокировки
Серверная часть IPChecker выполняет несколько типов проверок:
Проверка по встроенным спискам
- Известные вредоносные IP-адреса
- Exit-ноды сети Tor
- IP-адреса ботнетов
- IP-адреса с историей атак
Проверка по репутационным базам
- Интеграция с внешними базами данных
- Оценка на основе истории активности IP
Дополнительные проверки
- Геолокация IP и проверка по заблокированным странам
- Проверка типа IP (центр обработки данных, облачный провайдер)
- Анализ PTR-записей для обнаружения потенциально вредоносных IP
Обработка ошибок
Модуль включает механизмы обработки ошибок для обеспечения надежной работы:
Таймауты запросов
Если запрос к серверу не выполняется в течение установленного времени, пользователю разрешается доступ
Повторные попытки
При временных ошибках соединения выполняются повторные запросы
Деградация функциональности
При недоступности сервера система переключается на локальные проверки
Расширенная интеграция с другими модулями
IPChecker эффективно взаимодействует с другими компонентами MKF AntiBot:
Интеграция с IPChangeDetector
Передает первоначальную информацию об IP для последующего сравнения
Взаимодействие с BehaviorAnalyzer
Помогает принимать решение о необходимости углубленного анализа поведения
Работа с Honeypot
Увеличивает защиту форм при обнаружении подозрительного IP
Взаимодействие с SearchBotDetector
Передает информацию для дополнительной верификации поисковых ботов
Рекомендации по настройке
Базовые рекомендации
- Для большинства сайтов: Используйте настройки по умолчанию
- Для сайтов с высоким трафиком: Увеличьте таймаут до 3000-5000 мс для предотвращения ложных срабатываний при временных задержках
- Для критически важных ресурсов: Уменьшите количество повторных попыток до 1 для более быстрой реакции
Настройка для различных сценариев
ipChecking: {
enabled: true,
timeout: 3000,
retryAttempts: 1
}
ipChecking: {
enabled: true,
timeout: 2000,
retryAttempts: 2
}
ipChecking: {
enabled: true,
timeout: 2000,
retryAttempts: 2
},
monitoringMode: {
enabled: true,
trackToAnalytics: true,
logDetections: true
}
Серверная инфраструктура
Серверная часть IPChecker использует различные источники данных для принятия решений:
Встроенные списки блокировки
Списки IP-адресов хранятся в текстовых файлах в формате:
8.8.8.8 # Комментарий о причине блокировки
192.168.1.0/24 # Блокировка подсети
2001:0db8:85a3:0000:0000:8a2e:0370:7334 # Блокировка IPv6
Внешние источники данных
Серверная часть может интегрироваться с внешними источниками данных для улучшения качества проверки:
Технические ограничения
Модуль требует доступа к серверной части для проверки IP
При недоступности серверной части система переходит в деградированный режим
Некоторые внешние источники данных могут иметь ограничения по количеству запросов (rate limit)
При использовании CDN или обратных прокси необходима дополнительная настройка заголовков для корректного определения IP
Режим мониторинга и сбор статистики
При включенном режиме мониторинга модуль:
Собирает статистику
- Количество проверенных IP
- Количество обнаруженных подозрительных IP
- Распределение по странам и типам блокировки
Отправляет данные в аналитику
- События о подозрительных IP
- Детальную информацию о причинах блокировки
- Статистику по эффективности проверок
Не блокирует доступ
- Позволяет собирать данные о потенциальных атаках без влияния на пользователей
- Помогает настроить систему перед переходом в режим защиты
Отличия между версиями API
Серверная часть IPChecker поддерживает несколько версий API:
Базовая версия
Простая проверка IP с минимальной информацией:
GET /check-ip?ip={ip}
Расширенная версия
Подробная информация о причинах блокировки и метаданные:
GET /check-ip?ip={ip}&extended=true
Пример ответа:
{
"success": true,
"ip": "1.2.3.4",
"check_result": {
"status": "blocked",
"reason": "malicious_activity",
"list": "tor_exit_nodes",
"confidence": 90,
"metadata": {
"first_seen": "2023-10-15T12:00:00Z",
"last_activity": "2023-11-20T08:15:22Z",
"attack_types": ["bruteforce", "scanning"],
"times_reported": 24
}
},
"geo": {
"country": "US",
"region": "California",
"city": "San Francisco"
}
}
Примеры использования модуля
Базовая проверка IP-адреса
// Получаем IP-адрес клиента
const ip = await window.MKFAntiBotInstance.getClientIP();
// Проверяем IP
const result = await window.MKFAntiBotInstance.ipChecker.check(ip);
// Проверяем результат
if (result.isSuspicious) {
console.log('Подозрительный IP:', result.ip);
console.log('Детали:', result.details);
}
Ручная проверка произвольного IP-адреса
// Проверяем конкретный IP
const result = await window.MKFAntiBotInstance.ipChecker.check('8.8.8.8');
console.log('Результат проверки:', result);
Дополнительные примечания
Производительность
Модуль оптимизирован для быстрой проверки и минимального влияния на время загрузки страницы
Защита API
Серверная часть защищена от злоупотребления с помощью ограничения частоты запросов и проверки источника
Совместимость
Модуль работает во всех современных браузерах и не требует дополнительных библиотек
Отказоустойчивость
Система разработана с учетом возможных проблем с сетью и недоступности API
Детектор смены IP (IPChangeDetector)
Модуль IPChangeDetector — специализированный компонент MKF AntiBot, разработанный для выявления подозрительных изменений IP-адреса во время пользовательской сессии. Он обнаруживает использование VPN, прокси-серверов, переключение между сетями и другие подозрительные изменения, которые могут указывать на автоматизированную активность или попытки обхода защиты.
Принцип работы
Инициализация и сохранение состояния
- Сохранение начального IP-адреса и его параметров при загрузке страницы
- Шифрование и хранение данных в браузере пользователя
- Восстановление состояния при последующих посещениях
Периодическая проверка IP-адреса
- Регулярный опрос сервера для получения текущего IP-адреса
- Определение типа соединения (обычное, VPN, прокси, Tor, датацентр)
- Сбор метаданных (страна, регион, город, провайдер)
Анализ изменений
- Сравнение текущего IP с исходным и предыдущими
- Оценка риска на основе нескольких факторов (смена страны, типа IP и т.д.)
- Анализ временных паттернов изменения IP
Реакция на подозрительные изменения
- Обнаружение и оценка критичности изменений
- Отображение капчи при критических изменениях
- Отправка данных в аналитику в режиме мониторинга
Параметры настройки
window.MKFAntiBotConfig = {
// Включение и настройка детектора смены IP
ipChangeDetection: {
enabled: true, // Включить/выключить модуль
checkInterval: 5000, // Интервал проверки IP в миллисекундах
maxChecks: 1000, // Максимальное количество проверок за сессию
suspiciousChangesThreshold: 2, // Порог подозрительных изменений
// Пороговые значения времени
timeThresholds: {
minTimeBetweenChanges: 30000, // Минимальное время между сменами IP (30 сек)
suspiciousRapidChanges: 300000, // Подозрительно частые смены (5 минут)
},
// Веса для разных типов изменений
weights: {
countryChange: 100, // Смена страны
regionChange: 50, // Смена региона
cityChange: 30, // Смена города
ispChange: 40, // Смена провайдера
proxyDetected: 70, // Обнаружен прокси
vpnDetected: 70, // Обнаружен VPN
torDetected: 90, // Обнаружен TOR
datacenterSwitch: 60, // Переключение на датацентр
typeChange: 80 // Смена типа IP (например, с жилого на хостинг)
}
}
}
Дополнительные настройки режима мониторинга
Модуль поддерживает интеграцию с режимом мониторинга, позволяя отслеживать подозрительные изменения IP без блокировки пользователей:
window.MKFAntiBotConfig = {
// Базовая конфигурация...
// Режим мониторинга
monitoringMode: {
enabled: true, // Включить режим мониторинга
trackToAnalytics: true, // Отправлять события в аналитику
stealthMode: false // Скрытый режим без визуальных индикаторов
},
// Конфигурация детектора смены IP
ipChangeDetection: {
enabled: true,
// Остальные настройки...
}
}
Типы изменений IP и их обнаружение
Модуль обнаруживает и классифицирует различные типы изменений IP-адреса:
Географические изменения
- Смена страны (самый высокий вес)
- Смена региона
- Смена города
Изменения типа соединения
- Переключение с обычного IP на VPN
- Переключение с обычного IP на прокси
- Переключение с обычного IP на Tor
- Переключение с обычного IP на IP датацентра
Изменения провайдера
- Смена интернет-провайдера
- Смена автономной системы (AS)
Временные паттерны
- Слишком частые изменения
- Равномерные изменения через точные интервалы
- Быстрые последовательные изменения
- Периодические изменения в одинаковом шаблоне
События
Модуль генерирует следующие события:
Интеграция с аналитикой
При обнаружении подозрительных изменений IP в системы аналитики отправляются следующие данные:
// Пример данных, отправляемых в аналитику
{
event_category: 'Security',
event_label: 'critical_ip_change_detected',
event_action: 'critical_ip_change',
value: changes.totalScore,
changes: {
details: {
countryChange: {
from: 'RU',
to: 'US'
},
proxyDetected: true,
typeChange: {
from: 'residential',
to: 'datacenter'
}
},
timePatterns: {
score: 40,
patterns: {
tooFrequent: true,
uniformChanges: false,
rapidSuccession: true
},
timeSinceLastChange: 15000
},
totalScore: 270,
initialIP: '192.168.1.1',
lastIP: '8.8.8.8',
newIP: '1.1.1.1'
},
suspiciousChanges: 3,
monitoringMode: true
}
Хранение и шифрование данных
Шифрование WebCrypto API
- Шифрование данных с использованием AES-GCM
- Уникальный ключ для каждой сессии
- Защита от атак подмены данных
Безопасное хранение
- Использование sessionStorage для хранения в рамках сессии
- Предотвращение доступа к данным через другие скрипты
- Автоматическая очистка при закрытии браузера
Интеграция с серверной частью
Модуль использует API серверной части для получения информации об IP:
Запрос информации об IP с параметрами для получения расширенной информации
Возвращает подробную информацию о стране, регионе, городе, типе соединения, флагах (прокси, VPN)
Рекомендации по настройке
Базовые рекомендации
Используйте настройки по умолчанию (checkInterval: 5000
)
Уменьшите интервал проверки до 3000 мс и снизьте порог до 1 подозрительного изменения
Увеличьте интервал проверки до 10000 мс для снижения нагрузки на сервер
Уменьшите вес изменений региона и города, так как мобильные пользователи могут часто менять сеть
Специфические настройки
suspiciousChangesThreshold: 1
и увеличенные
веса для всех типов изменений
Уменьшить вес countryChange
до 70, так как
законные пользователи могут использовать VPN
Увеличить все веса на 50% для максимальной защиты от несанкционированного доступа
Противодействие специфическим угрозам
Увеличьте веса vpnDetected
и
proxyDetected
до 100
Уменьшите значение minTimeBetweenChanges
до
20000 и увеличьте вес timePatterns
Увеличьте вес torDetected
до 100 и уменьшите
порог подозрительных изменений до 1
Взаимодействие с другими модулями
Интеграция с BehaviorAnalyzer
Комбинированный анализ поведения и изменений IP для более точного обнаружения ботов
Взаимодействие с Honeypot
Усиление защиты форм при обнаружении подозрительных изменений IP
Работа с Captcha
Автоматический показ капчи при обнаружении критических изменений IP
Взаимодействие с SearchBotDetector
Исключение проверок для легитимных поисковых ботов
Технические ограничения
Модуль требует доступа к серверной части для получения информации об IP
При использовании встроенных прокси некоторых браузеров (например, Opera Turbo) возможны ложные срабатывания
При отключении JavaScript модуль не функционирует
Некоторые корпоративные сети с динамическим переключением между прокси могут вызывать ложные срабатывания
Режимы работы для разных сценариев
ipChangeDetection: {
enabled: true,
checkInterval: 3000,
suspiciousChangesThreshold: 1,
weights: {
countryChange: 150,
vpnDetected: 100,
torDetected: 120,
datacenterSwitch: 100
}
}
ipChangeDetection: {
enabled: true,
checkInterval: 5000,
suspiciousChangesThreshold: 2,
weights: {
// Веса по умолчанию
}
}
ipChangeDetection: {
enabled: true,
checkInterval: 5000,
suspiciousChangesThreshold: 1
},
monitoringMode: {
enabled: true,
trackToAnalytics: true,
logDetections: true
}
Примеры обнаружения угроз
Сценарий: Пользователь внезапно переключается с российского IP на американский
Сценарий: Пользователь меняет IP в пределах одного города каждые 10 секунд
Сценарий: Пользователь переключается с домашнего IP на IP датацентра в другой стране
Защита форм (Honeypot)
Модуль Honeypot — продвинутый компонент MKF AntiBot, предназначенный для защиты веб-форм от автоматизированного заполнения и отправки. Модуль использует несколько стратегий защиты, включая скрытые поля-ловушки, анализ поведения при заполнении и мониторинг времени взаимодействия с формой.
Принцип работы
Инициализация и защита форм
- Нахождение форм на странице по селектору или ID
- Создание невидимых или замаскированных полей-ловушек
- Добавление поведенческих анализаторов для полей формы
- Применение дополнительных защитных атрибутов
Скрытые ловушки (Honeypots)
- Создание полей, которые должны оставаться пустыми
- Маскировка этих полей разными способами (CSS, атрибуты, DOM-манипуляции)
- Динамическое изменение свойств ловушек для противодействия автоматизации
- Обнаружение любых взаимодействий с ловушками
Поведенческий анализ
- Отслеживание фокуса на полях формы
- Анализ скорости и паттернов заполнения
- Проверка последовательности заполнения полей
- Отслеживание исправлений и корректировок при вводе
- Анализ использования клавиши Tab для навигации
Обфускация и защита
- Периодическая мутация атрибутов ловушек
- Случайная генерация имен классов и атрибутов
- Защита от удаления и модификации ловушек
- Шифрование данных ловушек
Реакция на подозрительную активность
- Подсчет "подозрительного счета" на основе множества факторов
- Блокирование отправки формы при превышении порога
- Отображение капчи при подозрительной активности
- Опциональный режим мониторинга без блокировки
Параметры настройки
window.MKFAntiBotConfig = {
// Настройки защиты форм
formsProtection: {
enabled: true, // Включение/отключение защиты форм
formIds: ['contactForm'], // ID форм для защиты (пустой массив = все формы)
excludeFormIds: [], // ID форм, которые не нужно защищать
selector: "form", // CSS-селектор для поиска форм
protected: true, // Включить защиту всех найденных форм
// Основные настройки
scoreThreshold: 100, // Порог подозрительности для блокировки
adaptiveMode: true, // Адаптивный режим защиты
strictMode: false, // Строгий режим проверки
// Настройки анализа поведения
behavioralAnalysis: {
mouseSampling: 50, // Интервал сэмплирования мыши (мс)
mouseSamplesRequired: 10, // Минимальное количество сэмплов
maxLinearMovement: 0.8, // Максимальная линейность движения
minNaturalSpeedVariation: 0.3, // Мин. вариация скорости для естественности
minFocusTime: 100, // Минимальное время фокуса на поле (мс)
maxFocusTime: 20000, // Максимальное время фокуса на поле (мс)
minTypingInterval: 50, // Минимальный интервал между нажатиями (мс)
maxTypingInterval: 1000, // Максимальный интервал между нажатиями (мс)
minCorrectionsRatio: 0.1, // Мин. соотношение исправлений к вводу
maxFieldSpeed: 300, // Макс. скорость заполнения поля (символов/мин)
fieldSequenceChecks: true, // Проверка последовательности заполнения
tabUsageAnalysis: true, // Анализ использования клавиши Tab
mousePatternAnalysis: true // Анализ паттернов движения мыши
},
// Настройки ловушек
traps: {
count: {
min: 2, // Минимальное количество ловушек
max: 5 // Максимальное количество ловушек
},
types: ["hidden", "visible", "disguised"], // Типы используемых ловушек
complexity: {
min: 1, // Минимальная сложность ловушек
max: 3 // Максимальная сложность ловушек
},
autoRestore: true, // Авто-восстановление удаленных ловушек
mutation: true // Динамическое изменение ловушек
}
// Другие настройки опущены для краткости
}
}
Типы полей-ловушек
Скрытые (hidden)
- Полностью скрыты от пользователя с помощью CSS
- Позиционирование за пределами экрана
- Нулевые размеры
- Свойство display: none
- Использование z-index для размещения под другими элементами
Видимые (visible)
- Визуально отсутствуют, но технически присутствуют в DOM
- Использование атрибутов aria-hidden
- Скрытие через visibility: hidden
- Использование clip-path для обрезки содержимого
Замаскированные (disguised)
- Выглядят как обычные поля, но имеют специальные атрибуты
- Ловушки с полупрозрачностью
- Миниатюрные размеры
- Поля с искаженными стилями
- Ловушки с пользовательскими подсказками
Уровни сложности ловушек
Уровень 1 — Базовый
- Простые ловушки с базовыми методами скрытия
- Основные техники CSS
- Простые DOM-элементы
- Подходит для большинства случаев
Уровень 2 — Продвинутый
- Продвинутые ловушки с комбинацией нескольких техник
- Многослойное скрытие
- Сложные селекторы и атрибуты
- Подходит для защиты важных форм
Уровень 3 — Максимальный
- Сложные ловушки с динамическими свойствами
- Многослойное скрытие с мутацией
- Шифрование данных и атрибутов
- Для критически важных форм и противодействия сложным ботам
События
Интеграция с аналитикой
При обнаружении подозрительной активности в системы аналитики отправляются следующие данные:
// Пример данных, отправляемых в аналитику
{
event_category: 'Security',
event_action: 'form_bot_detected_monitoring',
event_label: 'form_10293874',
value: 350, // Подозрительный счет
formId: 'contactForm',
fieldsWithoutFocus: 3,
suspiciousFields: 2,
totalFilledLength: 127,
threshold: 100,
factors: {
honeypotFilled: 500,
scriptInjection: 150,
noFocusInput: 100
},
monitoringMode: true
}
Факторы подозрительности
Ловушки и DOM
- honeypotFilled: Заполнение поля-ловушки (вес 500)
- honeypotModified: Модификация поля-ловушки (вес 500)
- domManipulation: Манипуляции с DOM (вес 100)
- trapRemoval: Удаление ловушки (вес 500)
Временные факторы
- tooFastFilling: Слишком быстрое заполнение (вес 50)
- tooSlowFilling: Слишком медленное заполнение (вес 20)
- uniformTiming: Равномерные временные интервалы (вес 50)
- instantSubmit: Мгновенная отправка формы (вес 80)
- noFocusTime: Отсутствие времени фокуса (вес 50)
Поведенческие факторы
- linearMovement: Линейность движения мыши (вес 60)
- uniformSpeed: Равномерность скорости движения (вес 50)
- noCorrections: Отсутствие исправлений при вводе (вес 40)
- wrongSequence: Неправильная последовательность заполнения (вес 50)
- tabMissing: Отсутствие использования Tab (вес 30)
Технические факторы
- automationDetected: Обнаружены признаки автоматизации (вес 100)
- scriptInjection: Программное заполнение полей (вес 150)
- eventSimulation: Симуляция событий (вес 90)
- apiUsage: Использование нестандартных API (вес 80)
- invalidEvents: Недействительные события (вес 70)
Рекомендации по настройке
Общие рекомендации
Используйте настройки по умолчанию (scoreThreshold: 100
)
Увеличьте количество ловушек (traps.count.max
),
включите все типы ловушек и увеличьте их сложность
Уменьшите scoreThreshold
до 150 и используйте
преимущественно скрытые ловушки
Включите
behavioralAnalysis.fieldSequenceChecks
и
увеличьте вес wrongSequence
Настройка по типам форм
formsProtection: {
scoreThreshold: 100,
traps: {
count: { min: 2, max: 4 },
types: ["hidden", "visible"],
complexity: { min: 1, max: 2 }
}
}
formsProtection: {
scoreThreshold: 150,
traps: {
count: { min: 3, max: 5 },
types: ["hidden", "visible", "disguised"],
complexity: { min: 1, max: 3 }
},
behavioralAnalysis: {
fieldSequenceChecks: true,
tabUsageAnalysis: true
}
}
formsProtection: {
scoreThreshold: 200,
strictMode: true,
traps: {
count: { min: 4, max: 6 },
types: ["hidden", "visible", "disguised"],
complexity: { min: 2, max: 3 },
autoRestore: true,
mutation: true
}
}
formsProtection: {
scoreThreshold: 80,
traps: {
count: { min: 1, max: 3 },
types: ["hidden"],
complexity: { min: 1, max: 2 }
}
}
Противодействие специфическим типам ботов
Характеристики: Базовые скрипты автоматизации, заполнение всех видимых полей
complexity.min: 1
)
Характеристики: Скрипты с обходом простых ловушек, анализом HTML перед заполнением
mutation: true
)
trapRemoval
и domManipulation
Характеристики: Продвинутые боты, имитирующие действия пользователя и события браузера
behavioralAnalysis
) и увеличьте веса
поведенческих факторов
linearMovement
,
uniformSpeed
, uniformTiming
,
включить mousePatternAnalysis: true
Дополнительные примечания
Адаптивность
Модуль автоматически подстраивается под структуру форм на странице и оптимизирует стратегию защиты
Интеграция с другими модулями
Для самых надежных результатов рекомендуется использовать в сочетании с модулем поведенческого анализа (BehaviorAnalyzer)
Персистентность
Защита остается активной даже после перезагрузки страницы благодаря механизмам верификации
Режим мониторинга
В режиме мониторинга система собирает детальную статистику о поведении ботов для дальнейшей оптимизации защиты
Анализатор поведения (BehaviorAnalyzer)
Модуль BehaviorAnalyzer — продвинутый компонент MKF AntiBot, который анализирует действия пользователя в реальном времени для выявления автоматизированной активности. Он отслеживает движения мыши, клавиатуры, тач-события и другие поведенческие паттерны, характерные для ботов.
Принцип работы
Сбор данных
- Траектории и скорость движения мыши
- Паттерны нажатия клавиш
- Тач-события и жесты
- Скроллинг и использование колесика мыши
- Фокус и взаимодействие с элементами
Анализ паттернов
- Выявление механических линейных движений
- Обнаружение равномерной скорости без естественных колебаний
- Определение отсутствия микрокоррекций и естественных ошибок
- Анализ неестественно точных движений и нажатий
- Выявление аномальной скорости реакции
Оценка и реакция
- Расчет метрик естественности поведения
- Сравнение с пороговыми значениями
- Принятие решения о подозрительности активности
- Запуск верификации при превышении порогов
- Сбор статистики и отправка событий в аналитику
Параметры настройки
window.MKFAntiBotConfig = {
// Базовая конфигурация поведенческого анализа
behaviorAnalysis: {
enabled: true, // Включение/отключение модуля
checkInterval: 1000, // Интервал проверки в мс
},
// Пороговые значения для определения ботов
thresholds: {
timeWindow: 3000, // Временное окно для анализа в мс
overallScore: 0.45, // Общий порог подозрительности
linearityScore: 0.7, // Порог линейности движений
entropyScore: 0.6, // Порог энтропии движений
patternScore: 0.5, // Порог повторяемости паттернов
suspiciousEventsThreshold: 2 // Количество подозрительных событий для реакции
},
// Режим мониторинга
monitoringMode: {
enabled: false, // Режим мониторинга без блокировки
trackToAnalytics: true // Отправка событий в аналитику
}
}
Расширенные параметры анализа
behaviorAnalysis: {
// Анализ движений мыши
mouse: {
sampleRate: 30, // Частота сбора данных о мыши (мс)
minSamples: 5, // Минимальное количество сэмплов для анализа
maxLinearRatio: 0.6, // Максимально допустимая линейность движения
minSpeedVariation: 0.3, // Минимальная вариация скорости
maxAcceleration: 5000, // Максимальное ускорение
pauseThreshold: 100, // Порог для определения паузы (мс)
jitterThreshold: 5, // Порог микродвижений
maxUniformSegments: 0.6, // Максимальная доля равномерных сегментов
minTimeVariation: 0.25, // Минимальная вариация интервалов
maxCorrelation: 0.9 // Максимальная корреляция паттернов
}
}
behaviorAnalysis: {
// Анализ касаний (для тач-устройств)
touch: {
minPressure: 0.1, // Минимальное давление
maxPressure: 0.9, // Максимальное давление
minTouchTime: 50, // Минимальное время касания (мс)
maxTouchTime: 2000, // Максимальное время касания (мс)
pressureVariation: 0.2, // Вариация давления
radiusVariation: 0.15, // Вариация радиуса касания
angleThreshold: 20 // Порог изменения угла движения
}
}
// Веса для анализа
weights: {
// Веса для движений мыши
linearMovement: 150, // Линейные движения
uniformSpeed: 120, // Равномерная скорость
patternRepetition: 150, // Повторяющиеся паттерны
suspiciousVelocity: 100, // Подозрительная скорость
mouseAcceleration: 80, // Ускорение мыши
mouseJitter: 40, // Микродвижения мыши
suddenStop: 45, // Резкие остановки
perfectPrecision: 90, // Идеальная точность движений
// Весовые коэффициенты для других факторов
fastAutomation: 100, // Быстрая автоматизация
instantFill: 100, // Мгновенное заполнение
noFocusInput: 100 // Ввод без фокуса
}
Метрики поведения
Метрики движения мыши
- linearityScore: Оценка линейности движений (0-1)
- entropyScore: Оценка энтропии/случайности движений (0-1)
- patternScore: Оценка повторяемости паттернов (0-1)
- jitterScore: Оценка микродвижений (0-1)
- overallScore: Общая оценка естественности движений (0-1)
Метрики тач-событий
- naturalityScore: Оценка естественности касаний (0-1)
- pressureScore: Оценка естественности давления (0-1)
- patternScore: Оценка повторяемости паттернов (0-1)
- overallScore: Общая оценка естественности касаний (0-1)
Общие метрики
- overall: Итоговая оценка естественности поведения (0-1)
- suspiciousEvents: Количество зафиксированных подозрительных событий
- interactionTime: Общее время взаимодействия с сайтом (мс)
События
Интеграция с аналитикой
При обнаружении подозрительного поведения в системы аналитики отправляются следующие данные:
// Пример данных, отправляемых в аналитику
{
event_category: 'Security',
event_action: 'behavior_bot_detected',
event_label: 'critical_behavior_monitoring',
value: metrics.overall * 100,
type: 'critical',
overall: metrics.overall,
mouseScore: metrics.mouse.overallScore,
linearity: metrics.mouse.linearityScore,
pattern: metrics.mouse.patternScore,
entropy: metrics.mouse.entropyScore,
threshold: threshold,
monitoringMode: true
}
Визуализация поведенческих паттернов
Линейные движения
Боты часто выполняют почти идеальные линейные движения мышью без естественных отклонений, что выявляется модулем как один из ключевых признаков автоматизации.
Равномерная скорость
Человеческие движения имеют естественные колебания в скорости, в то время как боты поддерживают стабильную скорость движения курсора, что фиксируется как подозрительное поведение.
Повторяющиеся паттерны
Система выявляет повторяющиеся идентичные паттерны движений мыши, которые практически невозможны при человеческом взаимодействии, но типичны для автоматизированных действий.
Рекомендации по настройке
Выбор пороговых значений
Установите overallScore
на уровне 0.35-0.40,
это обеспечит высокую степень защиты, но может вызывать
больше ложных срабатываний
Используйте значения overallScore
0.45-0.50,
что обеспечит хороший баланс между защитой и удобством для
пользователей
Установите значение overallScore
0.55-0.60, что
позволит блокировать только явно подозрительное поведение
Специфические настройки
Снизьте значения весов (weights) для менее агрессивной
блокировки и увеличьте
suspiciousEventsThreshold
до 3-4
Используйте более строгие настройки анализа мыши:
maxLinearRatio: 0.5
,
minSpeedVariation: 0.4
Включите monitoringMode.enabled
и
trackToAnalytics
для сбора данных без
блокировки
Особенности работы на разных устройствах
Особенности: Полноценный анализ движений мыши, клавиатурного ввода и взаимодействия с элементами
Особенности: Автоматическое переключение на анализ тач-событий с учетом специфики мобильного взаимодействия
Особенности: Гибридный анализ с учетом специфики пера и сенсорного экрана
Дополнительные примечания
Адаптивный анализ
Модуль имеет адаптивную систему анализа, которая учитывает особенности разных устройств и автоматически подстраивается под режим взаимодействия.
Мобильные устройства
На мобильных устройствах активируется анализ тач-событий вместо движений мыши, с учетом специфики сенсорного взаимодействия.
Режим мониторинга
Для настройки под конкретный сайт рекомендуется начать с режима мониторинга для сбора статистики о поведении пользователей.
Поисковые боты
Модуль автоматически отключается в случае обнаружения легитимного поискового бота через интеграцию с SearchBotDetector.
Синергия с другими модулями
При использовании с модулем защиты форм (Honeypot) достигается синергетический эффект защиты, значительно повышающий эффективность.
Детектор поисковых ботов (SearchBotDetector)
Модуль SearchBotDetector предназначен для идентификации и верификации легитимных поисковых роботов, таких как Googlebot, Yandex Bot, Bing Bot и другие. Это позволяет системе MKF AntiBot пропускать официальные поисковые роботы, не требуя от них прохождения капчи.
Принцип работы
Идентификация
- Проверка User Agent на соответствие паттернам известных поисковых ботов
- Первичный анализ заголовков запроса
- Проверка наличия в базе известных ботов
Верификация IP
- Проверка IP-адреса на принадлежность к официальным диапазонам, используемым поисковыми системами
- Сравнение с актуальными данными диапазонов IP-адресов
- Анализ соответствия между User Agent и IP-адресом
DNS-проверка
- Обратное DNS-разрешение для подтверждения подлинности бота
- Проверка соответствия доменного имени официальным доменам поисковых систем
- Анализ соответствия PTR-записи и декларируемого поискового бота
Кеширование
- Сохранение результатов проверки для оптимизации производительности
- Использование TTL для контроля актуальности кешированных данных
- Автоматическое обновление кеша при истечении срока действия
Параметры настройки
window.MKFAntiBotConfig = {
// Включение и основные настройки детектора поисковых ботов
searchBotConfig: {
enabled: true, // Включить/выключить модуль
cacheTTL: 3600, // Время жизни кеша в секундах
debug: false, // Режим отладки
// Для тестирования (только в режиме разработки)
testMode: false, // Режим тестирования
testIP: null // Тестовый IP-адрес
}
}
Поддерживаемые поисковые боты
- Googlebot
- APIs-Google
- Mediapartners-Google
- AdsBot-Google
- AdsBot-Google-Mobile-Apps
Yandex
- YandexBot
- YandexMobileBot
- YandexDirectDyn
- YandexScreenshotBot
- YandexImages
- YandexVideo
- YandexMedia
Bing
- bingbot
- msnbot
Другие
- DuckDuckBot
- Baiduspider
- YahooSeeker
- ia_archiver (Alexa)
- facebookexternalhit
Расширенная конфигурация
window.MKFAntiBotConfig = {
searchBotConfig: {
enabled: true,
cacheTTL: 7200, // Увеличенное время кеширования (2 часа)
debug: true, // Подробное логирование
// Настройка ограничений
maxRequestsPerMinute: 60 // Максимальное количество запросов в минуту
},
// Добавление пользовательских ботов
customBots: {
myBot: {
patterns: ['MyCustomBot', 'MyCompanyCrawler'],
verify: {
domains: ['mycompany.com'],
ipRanges: ['192.168.1.0/24']
}
}
}
}
События
Интеграция с аналитикой
При работе в режиме мониторинга, модуль отправляет информацию о верифицированных ботах в системы аналитики:
// Пример данных, отправляемых в аналитику
{
event_category: 'Security',
event_label: 'searchbot_verified',
provider: 'google', // Поисковая система
ip: '66.249.64.123', // IP-адреса бота
hostname: 'crawler.googlebot.com', // Обратная DNS запись
timestamp: Date.now(),
monitoringMode: true
}
Процесс верификации ботов
Анализ User Agent
Первичная проверка заголовка User-Agent на соответствие известным паттернам поисковых ботов. Этот этап позволяет быстро отсеять большинство поддельных ботов, но недостаточен для полной верификации.
Проверка IP-диапазонов
Сравнение IP-адреса запроса с официальными диапазонами IP-адресов, используемыми поисковыми системами. Модуль регулярно обновляет информацию о диапазонах для обеспечения точности проверки.
Обратный DNS-запрос
Выполнение обратного DNS-запроса (PTR-запись) для IP-адреса и проверка соответствия доменного имени официальным доменам поисковых систем. Этот метод является наиболее надежным для верификации.
Пользовательские боты
Вы можете добавить собственные боты для верификации, указав их в конфигурации:
customBots: {
// Бот для внутреннего мониторинга
internalMonitor: {
patterns: ['CompanyMonitorBot/1.0', 'InternalCrawler'],
verify: {
domains: ['monitoring.company.com', 'crawler.company.com'],
ipRanges: ['10.0.0.0/8', '172.16.0.0/12']
}
},
// Бот для партнерской системы
partnerBot: {
patterns: ['PartnerScraper/2.0'],
verify: {
domains: ['partner-domain.com'],
ipRanges: ['203.0.113.0/24']
}
}
}
Рекомендации по настройке
Увеличьте значение cacheTTL
до 7200-14400
секунд (2-4 часа) для снижения нагрузки на DNS-сервер и
ускорения работы
Установите debug: true
для получения подробной
информации о проверках в консоли
Установите debug: false
и убедитесь, что
testMode
выключен для оптимальной
производительности
В режиме разработки можно установить
testMode: true
и указать
testIP
для имитации запросов от поисковых ботов
Взаимодействие с другими модулями
BotDetector
При верификации поискового бота, модуль BotDetector не выполняет дополнительные проверки, что позволяет избежать задержек для легитимных ботов
BehaviorAnalyzer
Поведенческий анализ автоматически отключается для верифицированных поисковых ботов
Honeypot
Модуль защиты форм не активируется для верифицированных поисковых ботов, что позволяет им индексировать контент форм
Важные замечания
Задержки DNS
Модуль использует DNS-запросы для верификации, что может вносить небольшую задержку при обработке запросов от новых IP. Используйте кеширование для оптимизации.
DNS-сервисы
Убедитесь, что ваш сервер имеет доступ к DNS-сервисам для корректной работы верификации.
Автоматическое обновление
Модуль поддерживает автоматическое обновление диапазонов IP, используемых поисковыми системами.
Спуфинг User Agent
Модуль защищен от спуфинга User Agent благодаря многоуровневой верификации с проверкой IP и обратным DNS-запросом.
Тестирование модуля
Для проверки работы модуля вы можете использовать режим тестирования:
// Настройка для тестирования Google Bot
window.MKFAntiBotConfig = {
searchBotConfig: {
enabled: true,
debug: true,
testMode: true,
testIP: '66.249.66.1', // IP-адрес Googlebot (для тестирования)
testUserAgent: 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'
}
}
После включения режима тестирования, вы увидите подробную информацию о процессе верификации в консоли браузера.
Модуль обнаружения ботов (BotDetector)
Модуль BotDetector - ключевой компонент системы MKF AntiBot, отвечающий за первичное обнаружение ботов при загрузке страницы. Он использует встроенную библиотеку botd.min.js для анализа браузерного отпечатка и поведенческих маркеров.
Принцип работы
Анализ характеристик браузера
- Параметры устройства и операционной системы
- Заголовки и свойства браузера
- Поддержка различных API
- Аномалии окружения выполнения JavaScript
Расширенный анализ
- Признаки автоматизации
- Использование средств эмуляции
- Инструменты автоматизации тестирования
- Неконсистентность параметров браузера
Оценка и реакция
- Вычисление общего показателя подозрительности
- Сравнение с пороговыми значениями
- Принятие решения о необходимости верификации
- Инициация соответствующих защитных мер
Параметры настройки
window.MKFAntiBotConfig = {
// Режим отладки
debug: false,
// Пороговые значения для оценки подозрительности
thresholds: {
timeWindow: 3000, // Временное окно для анализа в мс
overallScore: 0.45 // Порог для определения бота (0-1)
},
// Настройка режима мониторинга
monitoringMode: {
enabled: false, // Включение режима мониторинга
trackToAnalytics: true // Отправлять события в аналитику
}
}
Дополнительные опции
timeWindow
Временное окно в миллисекундах, в течение которого система анализирует поведение пользователя для выявления подозрительных паттернов.
Диапазон значений: 1000-5000 мс
По умолчанию: 3000 мс
overallScore
Числовое значение от 0 до 1, определяющее порог для классификации пользователя как бота. Более низкие значения означают более строгую проверку.
Диапазон значений: 0.3-0.7
По умолчанию: 0.45
Расширенная конфигурация
window.MKFAntiBotConfig = {
debug: true, // Включаем подробное логирование
thresholds: {
timeWindow: 2000, // Уменьшенное окно для более быстрой реакции
overallScore: 0.35 // Более строгий порог (чем ниже, тем строже)
},
// Дополнительные настройки детекции
detectionTracking: {
enabled: true, // Включить сохранение детектов
retryAttempts: 3, // Количество попыток отправки
retryDelay: 1000 // Задержка между попытками в мс
}
}
События
Интеграция с аналитикой
При обнаружении бота в аналитику отправляется событие со следующими данными:
// Пример данных, отправляемых в аналитику
{
event_category: 'Security',
event_label: botResult.botType || 'unknown',
value: 100,
botType: botResult.botType,
details: botResult,
timestamp: Date.now()
}
Типы обнаруживаемых ботов
Headless браузеры
Обнаружение браузеров, запущенных в безголовом режиме (без графического интерфейса), таких как Puppeteer, Selenium в headless режиме, Playwright и других.
Инструменты автоматизации
Выявление инструментов веб-автоматизации, таких как Selenium WebDriver, Cypress, WebdriverIO и других инструментов для автоматизированного тестирования.
Браузерная эмуляция
Обнаружение попыток эмуляции браузера при помощи пользовательских скриптов, библиотек и фреймворков, которые не являются настоящими браузерами.
Рекомендации по настройке
Выбор пороговых значений
Установите overallScore
на уровне 0.35-0.40 для
высокого уровня защиты с возможным увеличением ложных
срабатываний
Используйте значения overallScore
0.45-0.50 для
оптимального соотношения безопасности и удобства
Установите значение overallScore
0.55-0.60 для
более мягкой проверки с минимумом ложных срабатываний
Включите monitoringMode.enabled
и
trackToAnalytics
для сбора данных без
блокировки пользователей
Настройка по типам сайтов
thresholds: {
timeWindow: 3000,
overallScore: 0.45
},
monitoringMode: {
enabled: false,
trackToAnalytics: true
},
detectionTracking: {
enabled: true
}
Этот профиль настроек обеспечивает хороший баланс между защитой данных о товарах от скрейпинга и комфортом для реальных покупателей.
thresholds: {
timeWindow: 4000,
overallScore: 0.55
},
monitoringMode: {
enabled: false,
trackToAnalytics: true
}
Для контентных сайтов часто важнее доступность для поисковых систем, поэтому используется более мягкая проверка.
thresholds: {
timeWindow: 2000,
overallScore: 0.35
},
detectionTracking: {
enabled: true,
retryAttempts: 3
}
Для финансовых сервисов рекомендуется максимальный уровень защиты с быстрой реакцией на подозрительную активность.
thresholds: {
timeWindow: 3500,
overallScore: 0.50
},
monitoringMode: {
enabled: false,
trackToAnalytics: true
}
Для форумов и сообществ важно защитить от спам-ботов, но при этом сохранить удобство для пользователей.
Взаимодействие с другими модулями
BehaviorAnalyzer
Передает данные о первичном обнаружении для дальнейшего поведенческого анализа и уточнения результатов
SearchBotDetector
Получает информацию о легитимных поисковых ботах для их пропуска без дополнительной верификации
IPChecker
Интегрируется с проверкой IP-адресов для комплексной оценки подозрительности посетителя
Технические детали
Браузерный отпечаток
Модуль использует более 50 различных параметров для создания уникального отпечатка браузера и выявления аномалий.
Обнаружение автоматизации
Проверяется наличие API автоматизации, веб-драйверов и других технических индикаторов неручного управления браузером.
Постоянное обновление
Библиотека обнаружения регулярно обновляется для противодействия новым методам обхода защиты.
Оптимизированная производительность
Проверки выполняются асинхронно с минимальным влиянием на загрузку страницы и пользовательский опыт.
Режимы работы MKF AntiBot
MKF AntiBot предлагает два основных режима работы: Режим защиты и Режим мониторинга. Каждый режим имеет свои особенности и предназначен для решения определенных задач. В этом разделе мы подробно рассмотрим оба режима, их настройки и сценарии использования.
Режим защиты
Режим защиты — это основной режим работы MKF AntiBot, предназначенный для активного противодействия ботам. В этом режиме система блокирует доступ к контенту сайта для подозрительных посетителей, требуя прохождения проверки капчей.
Как работает режим защиты
Первичная проверка
- Анализ отпечатка браузера
- Проверка IP-адреса по черным спискам
- Выполнение других базовых проверок
Блокировка контента
- Если посетитель определен как бот или вызывает подозрения
- Система блокирует доступ к контенту страницы
- Блокировка может быть visual или full в зависимости от настроек
Проверка капчей
- Отображение капчи для верификации
- Требуется прохождение для доступа к сайту
Управление аналитикой
- Скрипты аналитики не загружаются до прохождения верификации
- Предотвращение искажения данных аналитики ботами
Непрерывный мониторинг
- После прохождения капчи система продолжает отслеживать поведение
- Анализ движений мыши, клавиатуры и других паттернов
- Выявление подозрительной активности в реальном времени
Настройка режима защиты
Режим защиты включен по умолчанию, если не указано иное. Вот пример настройки:
window.MKFAntiBotConfig = {
debug: false,
logo: "/path/to/logo.png",
captchaKey: "your-smartcaptcha-key",
serverURL: "https://your-server/api/",
// Режим защиты активен, когда monitoringMode отключен или отсутствует
monitoringMode: {
enabled: false
},
// Настройки защиты контента
contentProtection: {
mode: 'visual', // или 'full'
preserveScripts: true,
preserveContext: true,
safeInitialization: true,
initializationDelay: 100,
scriptTimeout: 5000,
skipPatterns: ["mkf-antibot.js", "google-analytics", "gtag", "metrika"]
},
// Защита форм
formsProtection: {
enabled: true,
formIds: [], // пустой массив = защита всех форм
selector: "form",
scoreThreshold: 150,
adaptiveMode: true,
strictMode: false
},
// Обнаружение ботов
botdUrl: "https://openfpcdn.io/botd/v1",
thresholds: {
timeWindow: 3000,
overallScore: 0.45
},
// Обнаружение смены IP
ipChangeDetection: {
enabled: true,
checkInterval: 5000,
maxChecks: 1000,
suspiciousChangesThreshold: 2
},
// Поведенческий анализ
behaviorAnalysis: {
enabled: true
}
};
Режимы защиты контента
Visual (визуальный)
- Накладывает защитный слой поверх контента страницы
- Скрывает контент визуально, но оставляет его доступным в DOM
- Обеспечивает быстрое восстановление после верификации
- Подходит для большинства сайтов и защиты от обычных ботов
Настройка: mode: 'visual'
Full (полный)
- Полностью удаляет контент страницы из DOM
- Обеспечивает максимальную защиту от скрейперов и продвинутых ботов
- Предотвращает доступ к данным через JavaScript
- Требует больше времени для восстановления контента
- Рекомендуется для сайтов с конфиденциальной информацией
Настройка: mode: 'full'
Дополнительные параметры защиты контента
Параметр | Описание |
---|---|
preserveScripts |
Сохранять скрипты при блокировке контента |
preserveContext |
Сохранять глобальный контекст JavaScript |
safeInitialization |
Безопасный режим инициализации |
initializationDelay |
Задержка инициализации в миллисекундах |
scriptTimeout |
Таймаут ожидания загрузки скриптов |
skipPatterns |
Шаблоны URL для скриптов, которые не будут блокироваться |
Сценарии использования режима защиты
Сайты с формами обратной связи
Предотвращение спама и автоматических отправок форм, что повышает качество получаемых данных и снижает нагрузку на обработку заявок.
Интернет-магазины
Защита от парсинга цен и других данных, предотвращает автоматический сбор информации о товарах, ценах и наличии конкурентами.
Порталы с платным контентом
Предотвращение автоматического скрейпинга материалов и обхода платного доступа, защита интеллектуальной собственности.
Сайты с важными метриками
Защита аналитики от искажения ботами, что обеспечивает точность данных для маркетингового анализа и оптимизации.
Режим мониторинга
Режим мониторинга — это альтернативный режим работы MKF AntiBot, при котором система обнаруживает ботов, но не блокирует им доступ к контенту. Вместо этого она отслеживает их активность и отправляет данные в системы аналитики.
Как работает режим мониторинга
Обнаружение без блокировки
- Система выполняет те же проверки, что и в режиме защиты
- Но не блокирует контент страницы при обнаружении бота
- Бот получает доступ к сайту, но его активность отслеживается
Загрузка аналитики для всех
- Скрипты аналитики загружаются для всех посетителей, включая ботов
- Это позволяет собирать данные о поведении ботов для дальнейшего анализа
Отправка событий в аналитику
- При обнаружении бота система отправляет специальные события в аналитику
- Это позволяет сегментировать трафик и определять долю ботов
Опциональная защита форм
- Даже в режиме мониторинга можно включить защиту форм
- Система будет собирать данные о подозрительных отправках
Визуальная индикация
- Опционально можно включить отображение индикатора режима мониторинга
- Видим только администраторам для контроля работы системы
Настройка режима мониторинга
Для включения режима мониторинга необходимо добавить соответствующие настройки в конфигурацию:
window.MKFAntiBotConfig = {
debug: false,
logo: "/path/to/logo.png",
captchaKey: "your-smartcaptcha-key",
serverURL: "https://your-server/api/",
// Включение режима мониторинга
monitoringMode: {
enabled: true, // Включить режим мониторинга
trackToAnalytics: true, // Отправлять события в аналитику
blockForms: false, // Не блокировать формы
stealthMode: false, // Не использовать скрытый режим
logDetections: true, // Расширенное логирование обнаружений
detectionThreshold: 50, // Порог для регистрации события
visualIndicator: true, // Показывать индикатор режима
samplingRate: 100 // Процент ботов для отслеживания
},
// Настройки отслеживания в аналитике
analyticsTracking: {
enabled: true,
yandexMetrikaId: '12345678',
trackForms: true,
trackBehavior: true
},
// Другие настройки аналогичны режиму защиты
formsProtection: { enabled: true },
behaviorAnalysis: { enabled: true },
ipChangeDetection: { enabled: true }
};
Параметры режима мониторинга
Параметр | Описание |
---|---|
enabled |
Включение режима мониторинга |
trackToAnalytics |
Отправлять события обнаружения ботов в аналитику |
blockForms |
Блокировать отправку форм ботами (даже в режиме мониторинга) |
stealthMode |
Скрытый режим без визуальных индикаторов |
logDetections |
Расширенное логирование обнаружений в консоль |
detectionThreshold |
Порог для регистрации события обнаружения (0-100) |
visualIndicator |
Показывать индикатор режима мониторинга на странице |
samplingRate |
Процент ботов для отслеживания (1-100) |
Сценарии использования режима мониторинга
Анализ ботового трафика
Сбор данных о ботах для дальнейшего анализа и понимания доли автоматизированного трафика на вашем сайте.
Оптимизация рекламных кампаний
Идентификация "ботовской" аудитории для исключения из таргетирования, что повышает эффективность рекламы и снижает расходы.
Тестирование системы
Проверка работы MKF AntiBot без блокировки реальных пользователей перед переходом в полноценный режим защиты.
Маркетинговые исследования
Сбор данных о конкурентных ботах и анализ их активности для понимания активности конкурентов.
Сравнение режимов
Функция | Режим защиты | Режим мониторинга |
---|---|---|
Блокировка контента | Да | Нет |
Отображение капчи | Да | Нет (опционально) |
Загрузка аналитики | Только для людей | Для всех посетителей |
Защита форм | Активная блокировка | Мониторинг без блокировки |
Защита от скрейпинга | Высокая | Низкая |
Чистота данных аналитики | Высокая | Средняя (с сегментацией) |
Сбор данных о ботах | Ограниченный | Полный |
Воздействие на UX | Может быть заметным | Минимальное |
Переключение между режимами
Вы можете динамически переключаться между режимами защиты и мониторинга с помощью JavaScript API:
// Включение режима мониторинга
if (window.MKFAntiBotInstance) {
window.MKFAntiBotInstance.setMonitoringMode(true, {
visualIndicator: true,
stealthMode: false
});
}
// Возврат к режиму защиты
if (window.MKFAntiBotInstance) {
window.MKFAntiBotInstance.setMonitoringMode(false);
}
Примеры использования динамического переключения
Сценарий: Временное включение мониторинга для анализа активности ботов на сайте
Сценарий: Проверка влияния разных режимов защиты на конверсию
Сценарий: Динамическое переключение режимов в зависимости от нагрузки на сайт
Серверная часть MKF AntiBot
Серверная часть MKF AntiBot — это компонент системы защиты от ботов, обрабатывающий запросы от клиентской части и предоставляющий API для работы с данными о потенциально опасных IP-адресах, верификации капчи и сохранения информации о подозрительной активности.
Введение
Серверная часть MKF AntiBot отвечает за следующие ключевые функции:
Проверка IP адресов
Проверка IP адресов посетителей по встроенным черным спискам и внешним базам данных для выявления потенциально опасных подключений.
Интеграция с капчей
Взаимодействие с сервисом Яндекс SmartCaptcha для верификации пользователей и отсечения автоматизированного трафика.
Хранение данных о подозрительной активности
Сохранение и обработка информации о подозрительных действиях, детекты поведения и другие данные для аналитики.
Информация об IP
Получение и предоставление данных о геолокации, типе соединения, AS и других параметрах IP-адресов.
Требования к хостингу и установка
Серверные требования
Технические требования
- PHP 7.4 или выше
- Доступ к файловой системе для хранения логов и данных
- SSL сертификат (обязательно для работы с капчей)
- Настроенные CORS заголовки
- Поддержка cURL
- Права на запись в директорию логирования
Структура каталогов
/
├── config.php - Основной файл конфигурации
├── public/
│ └── index.php - Точка входа API
├── core/
│ ├── BaseChecker.php - Базовый класс для проверок
│ ├── Database.php - Взаимодействие с данными
│ ├── IPAPIProvider.php - Провайдер IP-API
│ ├── IPDataProviderInterface.php - Интерфейс провайдеров данных IP
│ ├── IPInfoChecker.php - Проверка информации IP
│ ├── IPListChecker.php - Проверка IP по спискам
│ ├── IPWhoisProvider.php - Провайдер IPWhois
│ ├── RequestHandler.php - Обработчик HTTP запросов
│ └── SmartCaptchaVerifier.php - Верификация Яндекс SmartCaptcha
├── data/
│ ├── detections/ - Сохраненные детекты
│ └── ip_lists/ - Списки IP для проверки
└── logs/
└── access.log - Логи доступа
Процесс установки
-
Скопируйте все файлы на веб-сервер
-
Настройте веб-сервер так, чтобы корнем был каталог
/public
-
Установите необходимые права на директории:
chmod 755 /path/to/mkf-antibot/ -R # Базовые права для всех файлов chmod 775 /path/to/mkf-antibot/data/ -R # Права на запись для директории с данными chmod 775 /path/to/mkf-antibot/logs/ -R # Права на запись для директории с логами
Если веб-сервер работает под другим пользователем, может потребоваться:
chown www-data:www-data /path/to/mkf-antibot/data/ -R chown www-data:www-data /path/to/mkf-antibot/logs/ -R
-
Настройте конфигурацию в файле
config.php
-
Проверьте работоспособность, обратившись к API:
https://ваш-домен/
Конфигурация
Основные параметры (config.php)
return [
'debug' => true, // Режим отладки (true/false)
'version' => '1.0.0', // Версия API
'allowedDomains' => ['domain.com', 'sub.domain.com'], // Разрешенные домены для CORS
'allowedIPs' => ['127.0.0.1', '192.168.1.0/24'], // Разрешенные IP-адреса
'captchaKey' => 'your_smartcaptcha_key', // Секретный ключ Яндекс SmartCaptcha
'dbPath' => __DIR__ . '/data/detections', // Путь к директории с данными
// Настройки проверки IP
'ipInfo' => [
'ipapiKey' => null, // API ключ для IP-API (необязательно)
'providers' => ['ipapi', 'ipwhois'], // Используемые провайдеры (порядок важен)
'cacheTTL' => 3600, // Время кеширования в секундах
'verifySSL' => true, // Проверка SSL сертификатов
'timeout' => 5, // Таймаут запросов в секундах
'extendedFields' => true // Использовать расширенные поля
]
];
Параметры безопасности
Параметр | Описание |
---|---|
allowedDomains |
Массив доменов, которым разрешено обращаться к API (CORS) |
allowedIPs |
Массив IP-адресов или подсетей, которым разрешено обращаться к API |
debug |
В production должен быть установлен в false
|
verifySSL |
Рекомендуется оставить true для безопасных
соединений
|
API и эндпоинты
Проверка IP адреса на наличие в черных списках
Параметры: ip
(опционально, если не указан,
используется IP клиента)
{
"success": true,
"ip": "8.8.8.8",
"check_result": {
"status": "clean"
}
}
Верификация токена капчи от Яндекс SmartCaptcha
{
"token": "токен_от_смарткапчи",
"ip": "ip_клиента" // опционально
}
{
"success": true,
"code": 200,
"executionTime": 0.423
}
Сохранение информации о подозрительной активности (детект)
{
"type": "behavior|form|ip_change",
"data": {
// любые данные о подозрительной активности
},
"fingerprint": {
// данные браузерного отпечатка
}
}
Получение подробной информации об IP-адресе
Параметры:
-
ip
- опционально, если не указан, используется IP клиента -
extended
- расширенная информация (VPN, прокси, хостинг) -
fields
- список нужных полей через запятую
{
"success": true,
"ip": "8.8.8.8",
"data": {
"country": {
"code": "US",
"name": "United States"
},
"city": "Mountain View",
"isp": "Google LLC",
"type": "datacenter",
"flags": {
"isDatacenter": true,
"isHosting": true
}
},
"meta": {
"cached": true,
"source": ["ipapi", "ipwhois"],
"timestamp": "2024-02-15T12:00:00+00:00"
}
}
Получение статистики за указанный период
Параметры: period
- период статистики (24h, 7d,
30d)
{
"success": true,
"period": "24h",
"stats": [
{
"type": "behavior",
"count": 153,
"unique_ips": 87
},
{
"type": "form",
"count": 42,
"unique_ips": 15
}
]
}
Управление списками блокировки
Формат списков IP
Списки IP адресов хранятся в текстовом файле
data/ip_lists/blocked_ips.txt
в формате:
8.8.8.8 # Комментарий о причине блокировки
192.168.1.0/24 # Блокировка подсети
2001:0db8:85a3:0000:0000:8a2e:0370:7334 # Блокировка IPv6
Каждая строка содержит:
- IP адрес или подсеть (IPv4 или IPv6)
- Опциональный комментарий после символа
#
Программное добавление IP в список
$checker = new IPListChecker($config);
$checker->addIP('192.168.1.1', 'Подозрительная активность');
Автоматическое обновление списков
Для автоматического обновления списков можно создать скрипт, который будет запускаться через cron:
addIP(trim($ip), trim($comment));
}
echo "Список обновлен: " . count($ips) . " IP адресов\n";
Расширение функциональности
Система MKF AntiBot поддерживает возможность расширения функциональности через добавление собственных провайдеров данных об IP-адресах.
Создание собственного провайдера IP данных
Создание класса провайдера
-
Создайте новый класс, реализующий интерфейс
IPDataProviderInterface
-
Разместите его в директории
core/
проекта
Реализация методов интерфейса
-
Реализуйте метод
getData()
для получения данных об IP -
Реализуйте метод
isAvailable()
для проверки доступности провайдера -
Реализуйте метод
getName()
для идентификации провайдера
Интеграция с системой
-
Обновите
require_once
вindex.php
для включения нового класса -
Добавьте провайдер в конфигурацию в массив
providers
- Добавьте необходимые параметры для вашего провайдера в конфигурацию
Пример собственного провайдера
config = $config;
$this->apiKey = $config['customApiKey'] ?? null;
}
public function getData(string $ip, bool $extended = false): array
{
// Запрос к внешнему API или внутренней базе данных
// ...
// Форматирование ответа в соответствии с требованиями системы
return [
'country' => [
'code' => 'US',
'name' => 'United States'
],
'region' => 'California',
'city' => 'San Francisco',
'location' => [
'lat' => 37.773972,
'lon' => -122.431297
],
'timezone' => 'America/Los_Angeles',
'isp' => 'Example ISP',
'type' => 'residential',
'asn' => [
'number' => 'AS123456',
'name' => 'Example Network',
'route' => '192.168.0.0/16'
]
];
}
public function isAvailable(): bool
{
// Проверка доступности провайдера
return true;
}
public function getName(): string
{
return 'custom';
}
}
Обновление конфигурации
'ipInfo' => [
'providers' => ['custom', 'ipapi', 'ipwhois'], // Добавляем свой провайдер в начало списка
'customApiKey' => 'ваш_ключ_api', // Дополнительные параметры для кастомного провайдера
// ...остальные настройки
]
Система будет использовать провайдеры в порядке, указанном в
массиве providers
, и переключаться на следующий при
ошибке или недоступности предыдущего. Поэтому порядок следования
провайдеров важен.
Системные компоненты
База данных и хранение
Система использует файловое хранилище для данных:
- detections/: Хранит информацию о детектах в формате JSON, организованную по месяцам (mm-YYYY.json)
- ip_lists/: Хранит списки заблокированных IP адресов
Провайдеры данных IP
Система поддерживает два встроенных провайдера данных об IP адресах:
-
IP-API (
IPAPIProvider.php
): Основной провайдер, бесплатный для некоммерческого использования -
IPWhois
(
IPWhoisProvider.php
): Резервный провайдер
Оба провайдера реализуют интерфейс
IPDataProviderInterface
и могут использоваться
взаимозаменяемо.
Система проверки капчи
Для верификации используется Яндекс SmartCaptcha, интеграция
реализована в классе SmartCaptchaVerifier
.
Логирование и мониторинг
Система поддерживает логирование в файл
(logs/access.log
). Уровень детализации зависит
от параметра debug
в конфигурации.
Решение проблем
Диагностика
Проверка доступности API
-
Обратитесь к корневому URL (
/
), должен вернуться JSON с информацией о системе - Убедитесь, что возвращается статус 200 OK
Проверка прав доступа
-
Убедитесь, что директории
data
иlogs
имеют права на запись (775) - Проверьте, что пользователь веб-сервера является владельцем этих директорий
-
Для проверки можно создать тестовый файл:
touch /path/to/mkf-antibot/data/test.txt
Проверка логов
-
Изучите содержимое
logs/access.log
для выявления ошибок - Включите режим отладки в конфигурации для получения более подробной информации
Частые ошибки и их решение
Причины: Проблемы с настройками CORS или ограничениями IP
-
Проверьте настройки
allowedDomains
иallowedIPs
в конфигурации -
Убедитесь, что запрос содержит правильный
Origin
заголовок - Временно расширьте список разрешенных доменов или IP для тестирования
Причины: Внутренние ошибки в коде, проблемы с правами доступа или конфигурацией
-
Включите режим отладки
debug: true
для получения детальной информации - Проверьте права доступа к файлам и директориям
- Проверьте совместимость PHP версии (требуется 7.4+)
- Проверьте логи PHP и веб-сервера
Причины: Неправильная настройка интеграции с Яндекс SmartCaptcha
-
Проверьте правильность ключа
captchaKey
в конфигурации - Убедитесь, что ваш домен добавлен в настройках капчи в Яндекс.Облаке
- Проверьте, что запросы к API капчи выполняются по HTTPS
Вопросы производительности
Увеличьте значение cacheTTL
для уменьшения
количества запросов к внешним сервисам геолокации
Регулярно очищайте и оптимизируйте черные списки IP адресов для уменьшения времени проверки
Настройте регулярное архивирование и очистку старых данных о детектах для экономии дискового пространства
Глоссарий и термины
Термин | Описание |
---|---|
IP-блокировка | Механизм блокировки запросов на основе IP адреса |
SmartCaptcha | Сервис Яндекса для проверки, что пользователь - не бот |
Детект | Запись о подозрительной активности |
Отпечаток браузера | Набор данных, уникально идентифицирующий браузер |
Rate Limiting | Ограничение количества запросов с одного IP в единицу времени |
CORS | Механизм, позволяющий ресурсам на веб-странице запрашивать данные с другого домена |