Налаштування обходу захисту від парсингу для 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Показано 1 з 1 послугУсі 1626 послуг
Налаштування обходу захисту від парсингу для 1С-Бітрікс
Проста
~1 робочий день
Часті питання

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

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування обходу захисту від парсингу для 1С-Bitrix

Джерело даних оновило захист — і парсер, який працював місяцями, перестав отримувати контент. Замість HTML з цінами приходить сторінка з капчею, JavaScript-викликом або пустим body. Це реальність промислового парсингу: системи захисту розвиваються, і парсер потребує адаптації. Розглянемо основні типи захистів і технічні підходи до їх обробки.

Типи захистів і їхні ознаки

JavaScript Challenge (Cloudflare, DataDome). Сервер повертає HTTP 503 з JS-кодом, який має виконатися в браузері і встановити cookie cf_clearance або datadome. Ознака: body містить <noscript> і window._cf_chl_opt або аналогічний обфускований скрипт.

Rate Limiting. HTTP 429 або 403 після N запитів за період. Може бути за IP, за cookie-сесією або за fingerprint. Ознака: запити працюють перші хвилини, потім блокуються.

Browser Fingerprinting. Сервер перевіряє TLS fingerprint (JA3), порядок HTTP-заголовків, наявність JavaScript API (navigator, canvas). Звичайний cURL з типовими налаштуваннями має характерний JA3, що відрізняється від браузерного.

Honeypot-посилання. Приховані через CSS посилання (display:none, visibility:hidden), за якими клікає лише бот. Перехід за таким посиланням — миттєва блокада IP.

Headless-браузер для JavaScript Challenge

Коли джерело вимагає виконання JS, HttpClient Bitrix безсилий — він не виконує JavaScript. Рішення — headless-браузер.

Puppeteer / Playwright запускаються як окремий сервіс (Node.js), парсер Bitrix звертається до нього через HTTP API. Схема:

  1. PHP-парсер відправляє URL на внутрішній сервіс: http://localhost:3000/render?url=...
  2. Node.js-сервіс відкриває сторінку в Chromium, чекає виконання JS, отримує cookies й відрендерений HTML.
  3. Повертає HTML і cookies у PHP.
  4. PHP-парсер використовує отримані cookies для наступних запитів через звичайний HttpClient — JS Challenge видає cookie на 15-30 хвилин.

Це дозволяє не гнати кожен запит через браузер (повільно й ресурсоємко), а отримати «пропуск» один раз і використовувати його для серії звичайних HTTP-запитів.

Важливо: headless-браузер потрібно маскувати. Стандартний Puppeteer визначається за navigator.webdriver = true, відсутністю плагінів, характерними розмірами вікна. Використовуйте puppeteer-extra з плагіном stealth або аналог для Playwright.

Ротація TLS fingerprint

Для обходу fingerprinting недостатньо змінювати IP. Потрібно змінювати TLS fingerprint. У PHP/cURL це робиться через опції:

  • CURLOPT_SSLVERSION — задає версію TLS.
  • CURLOPT_SSL_CIPHER_LIST — задає порядок шифрів, що формує JA3.

Бібліотека curl-impersonate (форк cURL) дозволяє емулювати TLS fingerprint конкретних браузерів (Chrome, Firefox, Safari). Встановлюється на сервер як заміна стандартному cURL.

Обробка капчі

Якщо джерело показує CAPTCHA, варіанти:

  • Сервіс розпізнавання (2Captcha, Anti-Captcha) — парсер відправляє зображення, отримує відповідь через API, підставляє у форму. Вартість: $2-3 за 1000 розв'язків. Затримка: 10-30 секунд.
  • Зниження частоти — часто капча з'являється як реакція на rate limiting. Зменшення частоти запитів і ротація проксі можуть повністю усунути капчу.

Інтеграція з 2Captcha з PHP-парсера:

$taskId = file_get_contents("http://2captcha.com/in.php?key={$apiKey}&method=base64&body=" . base64_encode($captchaImage));
// Очікування розв'язку (polling)
$result = file_get_contents("http://2captcha.com/res.php?key={$apiKey}&action=get&id={$taskId}");

Захист від honeypot

Перед переходом за посиланням перевіряйте computed styles елемента: display, visibility, opacity, position (поза viewport). Якщо парсер працює через DOM (DOMDocument у PHP), перевіряйте inline-стилі й класи. Якщо через headless-браузер — використовуйте getComputedStyle() для перевірки видимості.

Що налаштовуємо за один день

  1. Діагностика типу захисту на конкретному джерелі.
  2. Налаштування headless-рендерера (якщо JS Challenge) або ротація заголовків (якщо fingerprinting).
  3. Інтеграція з парсером Bitrix — отримання cookies/HTML.
  4. Тестування на реальному джерелі, підбір затримок.
  5. Документування поведінки захисту для подальшої підтримки.