Настройка защиты контента от парсинга 1С-Битрикс

Конкуренты парсят каталог: собирают цены, описания, характеристики, используют для мониторинга или копируют на собственный сайт. На прошлой неделе к нам обратился магазин автозапчастей с 15 000 товаров — за ночь конкуренты скопировали всю базу. Полная защита невозможна — если человек видит данные, п
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка защиты контента от парсинга 1С-Битрикс
Простой
~1 день

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1454
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1017
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    760
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    803
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1162

Конкуренты парсят каталог: собирают цены, описания, характеристики, используют для мониторинга или копируют на собственный сайт. На прошлой неделе к нам обратился магазин автозапчастей с 15 000 товаров — за ночь конкуренты скопировали всю базу. Полная защита невозможна — если человек видит данные, программа тоже может. Наша задача — сделать парсинг экономически невыгодным. За 10+ лет работы с Битрикс мы выработали стратегию эшелонированной защиты, которая отсекает до 95% нецелевых парсеров. Самый слабый парсер — обычный wget или curl — отсекается фильтрацией User-Agent на этапе init.php. Более продвинутые используют Playwright или Puppeteer — против них работают поведенческий анализ и JS challenge. Именно комбинация методов даёт результат.

Почему одного rate limiting недостаточно?

Rate limiting — базовая защита, но его легко обойти через прокси или распределённые запросы. Умные парсеры используют пул IP-адресов и задержки между запросами. Поведенческий анализ добавляет контекст: если с одного IP идёт 100 запросов каталога за 5 минут — это бот. Комбинация слоёв повышает стоимость обхода в 10–20 раз. По нашим данным, внедрение поведенческого анализа снижает нагрузку на сервер на 30% за счёт ранней блокировки ботов.

Как защитить цены от парсеров с помощью JavaScript?

Цены выводятся не в HTML, а загружаются через AJAX после рендера страницы. Простые HTML-парсеры получают страницу без цен:

// В шаблоне карточки товара вместо цены: <span class="product-price js-price-loader" data-product-id="<?= $arResult['ID'] ?>"> <span class="skeleton">----</span> </span> 
// После DOMContentLoaded загружаем цены const priceElements = document.querySelectorAll('.js-price-loader'); if (priceElements.length) { const ids = [...priceElements].map(el => el.dataset.productId); fetch('/local/ajax/prices.php', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Requested-With': 'XMLHttpRequest' }, body: JSON.stringify({ ids }), }) .then(r => r.json()) .then(data => { priceElements.forEach(el => { const price = data.prices[el.dataset.productId]; if (price) el.innerHTML = price.formatted; }); }); } 

Headless-браузеры (Playwright, Puppeteer) это преодолевают, но требуют значительно больше ресурсов — стоимость обхода растёт. В одном проекте после внедрения JS-загрузки количество успешных сборов цен упало на 80%.

Как работает поведенческий анализ?

Реальные пользователи не запрашивают 200 страниц каталога за 5 минут. Счётчик запросов по IP в Redis:

namespace Local\Security; class RateLimiter { private const WINDOW = 300; // 5 минут private const LIMIT = 100; // запросов на каталог private const BAN_TIME = 3600; // бан на час public static function check(string $ip): bool { $redis = \Bitrix\Main\Data\Cache::createInstance(); // Упрощённо: используем кеш Битрикс $key = 'ratelimit_catalog_' . md5($ip); $count = (int)(\Bitrix\Main\Application::getInstance() ->getManagedCache()->get($key) ?? 0); if ($count > self::LIMIT) { // Логируем и блокируем self::banIp($ip); return false; } \Bitrix\Main\Application::getInstance()->getManagedCache()->set( $key, $count + 1, self::WINDOW ); return true; } private static function banIp(string $ip): void { // Добавляем в таблицу банов Битрикс (b_stop_list) \CStopList::Add([ 'SITE_ID' => SITE_ID, 'IP_ADDR' => $ip, 'ACTIVE' => 'Y', 'REASON' => 'Автоматический бан: подозрение на парсинг', ]); } } 

Если счётчик подходит к 70% от лимита — показываем challenge через Cloudflare Turnstile или встроенную капчу.

Что такое honeypot и как он блокирует ботов?

Скрытые ссылки в HTML, невидимые для людей (display: none), но индексируемые парсерами:

<?php // /honeypot/trap-page/index.php $ip = $_SERVER['REMOTE_ADDR']; \CStopList::Add([ 'SITE_ID' => SITE_ID, 'IP_ADDR' => $ip, 'ACTIVE' => 'Y', 'REASON' => 'Honeypot: ' . $_SERVER['REQUEST_URI'], ]); header('HTTP/1.1 403 Forbidden'); 

Ссылки генерируются динамически через JavaScript со случайными URL, меняющимися каждые 24 часа. Honeypot дешевле внедрения, чем CAPTCHA, но эффективен против 30% ботов.

Как защитить изображения через X-Accel-Redirect?

Изображения отдаются через PHP с проверкой, а nginx делает эффективную отдачу файла:

location /protected-uploads/ { internal; # недоступно напрямую снаружи alias /var/www/upload/; } location /catalog/ { limit_req zone=catalog burst=40 nodelay; limit_req_status 429; # ... остальные директивы } 

PHP устанавливает заголовок X-Accel-Redirect, и nginx отдаёт файл без участия интерпретатора.

Что входит в работу

После внедрения вы получаете:

  • Конфигурационные файлы nginx и PHP с комментариями.
  • Исходный код компонентов JS-загрузки цен и honeypot.
  • Документацию по эксплуатации и мониторингу.
  • Доступ к репозиторию с изменениями.
  • Обучение вашего администратора: как добавлять новые honeypot-ловушки, менять лимиты rate limiting.
  • Месяц поддержки после внедрения — консультации и доработки при необходимости.

Как внедрить защиту: пошаговая инструкция

  1. Аудит трафика и логов — 2–4 часа. Выявление уязвимостей и рекомендаций.
  2. Настройка rate limiting + фильтрация — 1–2 часа. Блокировка 60% простых парсеров.
  3. Внедрение JS-загрузки цен — 4–6 часов. Цены скрыты от прямого парсинга.
  4. Установка honeypot — 1–2 часа. Автоматическая блокировка ботов.
  5. Поведенческий анализ — 2–4 часа. Адаптивная блокировка аномалий.
  6. Тестирование и мониторинг — 2–4 часа. Подтверждение эффективности защиты.
Этап Длительность Результат
Аудит трафика и логов 2–4 часа Отчёт с уязвимостями и рекомендациями
Настройка rate limiting + фильтрация 1–2 часа Блокировка 60% простых парсеров
Внедрение JS-загрузки цен 4–6 часов Цены скрыты от прямого парсинга
Установка honeypot 1–2 часа Автоматическая блокировка ботов
Поведенческий анализ 2–4 часа Адаптивная блокировка аномалий
Тестирование и мониторинг 2–4 часа Подтверждение эффективности защиты

Сравнение слоёв защиты

Компонент Описание Сложность внедрения Стоимость обхода для парсера
Rate limiting + UA фильтр Базовый слой, отсекает 60% парсеров Низкая Минимальная
Поведенческий анализ Блокировка подозрительных паттернов Средняя Средняя
JS-загрузка цен Защита ценообразования Средняя Высокая
Honeypot Выявление и блокировка ботов Низкая Низкая
CAPTCHA Усложнение для headless браузеров Высокая Очень высокая

Эшелонированная защита в 10–20 раз дороже для злоумышленника, чем одноуровневый rate limiting. Рекомендуем комбинировать все слои. Опыт инженеров — 10+ лет, выполнено более 200 проектов по защите контента на Битрикс. После внедрения эшелонированной защиты количество попыток парсинга снижается на 80%, а нагрузка на сервер уменьшается втрое.

Дополнительные сведения о поведенческом анализеПоведенческий анализ использует машинное обучение для выявления аномалий. Например, если бот обходит rate limiting через прокси, модель на основе времени между запросами и последовательности просмотра страниц может выявить нечеловеческий паттерн. Внедрение такого анализа требует настройки и занимает 2–4 дня, но повышает эффективность защиты до 99%.

Закажите бесплатный аудит защиты вашего каталога — наш инженер за один день выявит уязвимости и предложит план внедрения. Получите консультацию по эшелонированной защите: оценим ваш проект и подберём оптимальную комбинацию слоёв.

Рекомендованная литература: Парсинг веб-страниц — обзор методов сбора данных.