Налаштування захисту контенту від парсингу 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
    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%. Ешелонований захист кращий за однорівневий в 10–20 разів за вартістю обходу для зловмисника.

Замовте безкоштовний аудит захисту вашого каталогу — наш інженер за один день виявить вразливості та запропонує план впровадження. Отримайте консультацію з ешелонованого захисту: оцінимо ваш проект та підберемо оптимальну комбінацію шарів. Економія від впровадження складає до 5000 грн на місяць за рахунок зниження серверного навантаження та захисту даних.

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