← All Articles

Ось найкращi налаштування Cloudflare /crawl для будь-якого вебсайту

Налаштування конфiгурацiї ендпоiнта Cloudflare /crawl для рiзних типiв сайтiв

Ендпоiнт /crawl у Cloudflare Browser Rendering – це один з найшвидших способiв витягування контенту вебсайтiв у масштабi, але стандартнi налаштування не є оптимальними для бiльшостi випадкiв використання. Пiсля проведення краулiв на десятках сайтiв – вiд магазинiв Shopify до React SPA та сайтiв документацiї – ось налаштування, якi стабiльно дають найкращi результати.

Цей посiбник охоплює, що робить кожне налаштування, коли його змiнювати, та конкретнi команди, якi найкраще працюють для поширених типiв сайтiв.

Найважливiше рiшення: режим рендерингу

Кожен краул починається з одного вибору: чи повинен Cloudflare завантажувати сторiнку в headless-браузерi, чи просто отримати необроблений HTML?

render: false (--no-render) отримує HTML без виконання JavaScript. Це швидко, безкоштовно пiд час бета-перiоду та створює чистий вивiд для будь-якого сайту, який подає контент у початковiй HTML-вiдповiдi.

render: true (за замовчуванням) завантажує кожну сторiнку в headless-екземплярi Chromium, виконує JavaScript, чекає стабiлiзацiї сторiнки, а потiм витягує контент. Це повiльнiше, споживає браузернi години та коштує грошi пiсля безкоштовних 10 годин/мiсяць.

Коли кожен режим має сенс

Тип сайту Рекомендований режим Причина
Магазини Shopify --no-render Товари, колекцiї та сторiнки рендеряться на серверi
Сайти WordPress --no-render Контент мiститься в початковiй HTML-вiдповiдi
Статичнi сайти та блоги --no-render Немає контенту, залежного вiд JavaScript
Сайти Hugo, Jekyll, Astro --no-render Попередньо зiбраний HTML пiд час розгортання
React або Vue SPA render: true Контент завантажується через JavaScript пiсля початкового завантаження сторiнки
Сайти з лiниво завантажуваними даними render: true Вiдгуки, цiни та рекомендацiї можуть потребувати JS

Пiд час нашого тестування сайти Shopify повертали приблизно 90% iдентичного контенту мiж режимами рендерингу. Додатковий контент вiд рендерингу здебiльшого складався з динамiчних елементiв iнтерфейсу, таких як панелi кошика та вiджети рекомендацiй, а не значущих даних про товари. Ми розглядаємо повне порiвняння режимiв рендерингу з тестами “лоб у лоб” у статтi Переваги та недолiки ендпоiнта Cloudflare Crawl для магазинiв Shopify.

Правило: починайте з --no-render. Якщо в результатах бракує потрiбного контенту, перемикайтесь на режим рендерингу.

Прапорець --source контролює, як Cloudflare знаходить сторiнки для краулу.

--source sitemaps читає sitemap.xml сайту та краулить лише URL, перелiченi там. Це передбачувано, охоплює сторiнки, якi власник сайту вважає канонiчними, та уникає краулу дублiкатiв або малоцiнних сторiнок.

--source links починає з заданого URL та слiдує за посиланнями <a href>, знайденими на кожнiй сторiнцi. Це виявляє сторiнки так, як це робив би пошуковий рушiй, але може пропустити iзольованi сторiнки та може потрапити в пагiнацiю, фiльтри або iншi малоцiннi шаблони URL.

--source all (за замовчуванням) поєднує обидва методи.

Що використовувати

Використовуйте --source sitemaps, коли сайт має повну, добре пiдтримувану карту сайту. Бiльшiсть сайтiв Shopify та WordPress мають таку. Це найнадiйнiший варiант для повного витягування контенту сайту.

Використовуйте --source links або all, коли карта сайту вiдсутня, неповна, або ви хочете провести аудит внутрiшньої структури посилань сайту.

Блокування ресурсiв для краулiв з render-true

Це єдина найбiльш впливова оптимiзацiя для краулiв з render-true. За замовчуванням headless-браузер завантажує кожне зображення, шрифт, таблицю стилiв та медiафайл на кожнiй сторiнцi. Це марнотратно, коли вам потрiбен лише текстовий контент.

Додайте --block-resources image media font stylesheet до будь-якого краулу з render-true. Ефект значний:

  • Швидкiсть: час краулу зменшується з приблизно 7 секунд на сторiнку до приблизно 2 секунд на сторiнку
  • Вартiсть: споживання браузерних годин скорочується на 60-70%
  • Надiйнiсть: сторiнки, якi зависали б нескiнченно в очiкуваннi повiльних ресурсiв CDN, тепер завершуються нормально

Браузер все ще виконує JavaScript та будує DOM. Вiн просто пропускає завантаження ресурсiв, якi не впливають на текстовий контент.

Умова очiкування

Прапорець --wait-until вказує браузеру, коли припинити очiкування та витягти контент. За замовчуванням очiкується завершення всiєї мережевої активностi, що є повiльним та непотрiбним для витягування контенту.

--wait-until domcontentloaded вказує браузеру витягти контент, щойно DOM готовий. Для витягування тексту цього майже завжди достатньо. JavaScript, який завантажує контент, вже буде виконаний, але фоновi пiнги аналiтики та виклики рекламних мереж не затримуватимуть краул.

Рекомендованi команди за типом сайту

Магазин Shopify (повний сайт)

python crawl.py run https://example.com \
  --limit 500 \
  --format markdown \
  --no-render \
  --source sitemaps \
  -o results.json

Швидко, безкоштовно та охоплює весь каталог товарiв. Карти сайту Shopify є вичерпними, тому --source sitemaps забезпечує повне покриття без краулу в пагiнованi колекцiї або сторiнки результатiв пошуку.

Магазин Shopify (лише товари)

python crawl.py run https://example.com \
  --limit 1000 \
  --format markdown \
  --no-render \
  --include-patterns "https://example.com/products/**" \
  -o products.json

Прапорець --include-patterns обмежує краул URL-адресами, що вiдповiдають заданому шаблону. Корисно, коли вам потрiбнi лише сторiнки товарiв i ви хочете пропустити колекцiї, блог-пости та сторiнки полiтик.

WordPress або статичний блог

python crawl.py run https://example.com \
  --limit 500 \
  --format markdown \
  --no-render \
  --source sitemaps \
  -o results.json

Тi ж налаштування, що й для Shopify. Сайти WordPress рендеряться на серверi та мають надiйнi карти сайту. Генератори статичних сайтiв (Hugo, Jekyll, Eleventy, Astro) створюють попередньо зiбраний HTML, тому render-false захоплює все.

React або Vue SPA

python crawl.py run https://example.com \
  --limit 500 \
  --format markdown \
  --source sitemaps \
  --block-resources image media font stylesheet \
  --wait-until domcontentloaded \
  -o results.json

Render-true є режимом за замовчуванням, тому прапорець не потрiбен. Критичнi доповнення – це --block-resources та --wait-until domcontentloaded. Без них краул буде повiльним та дорогим.

Якщо SPA не має карти сайту, перемикнiться на --source links.

Сайт документацiї

python crawl.py run https://docs.example.com \
  --limit 500 \
  --format markdown \
  --no-render \
  --depth 5 \
  --exclude-patterns "*/changelog/**" "*/archive/**" \
  -o docs.json

Сайти документацiї часто мають глибокi структури посилань. Збiльшiть --depth, щоб слiдувати вкладеним iєрархiям сторiнок. Використовуйте --exclude-patterns, щоб пропустити сторiнки змiн, архiвнi версiї або iнший контент, який вам не потрiбен.

Тести продуктивностi

Цi цифри отриманi з реальних краулiв магазинiв Shopify та електронної комерцiї у березнi 2026 року. Назви сайтiв були анонiмiзованi.

Сайт Сторiнки Режим Розмiр контенту Браузерний час Загальний час
Магазин добавок (захищений вiд ботiв) 89/100 no-render 5.9 МБ ~3.5 хв
Бренд одягу (великий каталог) 500/500 no-render 77.1 МБ ~18 хв
Бренд одягу (великий каталог) 4/5 render-true 0.6 МБ 0.9с ~10с
DTC бренд для активного вiдпочинку 256/266 no-render 11.0 МБ ~5 хв
DTC бренд для активного вiдпочинку 256/266 render-true 12.5 МБ 1,338с ~25 хв
Магазин медичного одягу 1,200 no-render великий ~55 хв

Ключовi закономiрностi з даних:

  • No-render у 5-10 разiв швидший за render-true для того ж сайту
  • No-render споживає нуль браузерного часу (безкоштовно пiд час бета-тестування)
  • Реальний час масштабується лiнiйно з кiлькiстю сторiнок для краулiв з no-render
  • Сайти з директивами crawl-delay у robots.txt будуть повiльними незалежно вiд налаштувань, оскiльки краулер їх дотримується

Оптимiзацiя витрат

План Workers Paid коштує $5/мiсяць. Крiм цього, витрати пов’язанi з браузерними годинами, споживаними краулами з render-true.

Безкоштовний рiвень: 10 браузерних годин/мiсяць. Краул 500 сторiнок з render-true та блокуванням ресурсiв використовує приблизно 15-20 хвилин браузерного часу. Ви можете запускати 30+ оптимiзованих краулiв на мiсяць у межах безкоштовного рiвня.

Без блокування ресурсiв: той самий краул 500 сторiнок може використати 60+ хвилин браузерного часу, зменшуючи вашу безкоштовну ємнiсть приблизно до 10 краулiв на мiсяць.

Краули з no-render безкоштовнi пiд час бета-перiоду. Для серверно-рендерених сайтiв немає причин використовувати render-true.

Формула вартостi

Browser cost = (pages x seconds_per_page) / 3600 x $0.09

При 2 секундах на сторiнку (оптимiзований render-true): 500 сторiнок = 0.28 годин = $0.025

При 7 секундах на сторiнку (неоптимiзований): 500 сторiнок = 0.97 годин = $0.087

Рiзниця невелика за один краул, але накопичується при щоденних або щотижневих краулах на кiлькох сайтах.

Лiмiти, якi варто знати

Ресурс Лiмiт
Сторiнок за краул 100,000
Завдань краулу на день Необмежено (Workers Paid)
Браузернi години 10 год/мiсяць безкоштовно, потiм $0.09/год
API-запити 600/хвилину
Одночаснi браузери 30 на облiковий запис
Час життя завдання Макс. 7 днiв, результати доступнi 14 днiв

Поширенi проблеми та їх вирiшення

Помилки 403 на бiльшостi сторiнок: сайт має захист вiд ботiв (Cloudflare Bot Management, Akamai, Datadome). Це неможливо обiйти через ендпоiнт /crawl. Краул завершиться, але бiльшiсть сторiнок поверне помилки.

Краул з render-true зависає ближче до кiнця: одна або кiлька сторiнок мають повiльно завантажуванi ресурси, що блокують браузер. Додайте --block-resources image media font stylesheet та --wait-until domcontentloaded.

Вiдсутнiй контент у режимi no-render: сайт завантажує контент через JavaScript. Перемикнiться на render-true з оптимiзацiями блокування ресурсiв та очiкування.

Скрипт аварiйно завершується посеред краулу: завдання краулу продовжує працювати на серверах Cloudflare. Перевiрте статус та отримайте результати, коли воно завершиться:

python crawl.py status <job_id>
python crawl.py results <job_id> -o out.json

Порожнi результати з джерела sitemaps: карта сайту може бути вiдсутньою або заблокованою. Перемикнiться на --source links або --source all.

Вiдомi обмеження

Перед побудовою робочого процесу навколо ендпоiнта /crawl зверніть увагу на цi обмеження:

  • Некоректне розв’язання вiдносних URL: конвертер markdown Cloudflare неправильно розв’язує вiдноснi URL на кшталт //www.example.com/path, додаючи URL сторiнки на початку. Це створює некоректнi шляхи у вивoдi, особливо на сайтах Shopify.
  • Шаблонний контент на кожнiй сторiнцi: навiгацiйнi меню, мега-меню та футери з’являються в markdown для кожної сторiнки. Для типового сайту Shopify приблизно 90% контенту на сторiнку – це повторюваний шаблонний контент. Дивiться наш аналiз спiввiдношення шаблонного контенту на реальних краулах Shopify.
  • Вiдсутнiсть витягування структурованих даних: JSON-LD, schema.org та OpenGraph данi не парсяться в режимi no-render. Render-true захоплює базовi OG-теги в метаданих, але не повну схему.
  • Вiдсутнiсть визначення 404: краул обробляє лише живi URL. Мертвi посилання та зламанi внутрiшнi посилання не повiдомляються.
  • Один стартовий URL: API приймає один URL та розгалужується назовнi. Вiн не приймає список URL. Для пакетного отримання URL використовуйте ендпоiнти /markdown або /scrape.

Часто задаванi питання

Чи варто використовувати render true чи render false з Cloudflare /crawl?

Використовуйте render false (--no-render) для серверно-рендерених сайтiв, таких як Shopify, WordPress та статичнi сайти. Використовуйте render true лише для односторiнкових додаткiв, побудованих на React, Vue або Angular, де контент завантажується через JavaScript. Пiд час тестування сайти Shopify повертали приблизно 90% iдентичного контенту в обох режимах.

Скiльки коштує Cloudflare Browser Rendering /crawl?

План Workers Paid коштує $5/мiсяць. Краули з render-false не споживають браузерний час i є безкоштовними пiд час бета-тестування. Краули з render-true використовують браузернi години: 10 годин/мiсяць безкоштовно, потiм $0.09/година. Блокування зображень, шрифтiв та таблиць стилiв пiд час краулiв з render-true значно зменшує браузерний час.

Яке найкраще джерело виявлення URL для Cloudflare /crawl?

Використовуйте --source sitemaps для сайтiв з повними картами сайту, таких як Shopify та WordPress. Це забезпечує передбачуване, повне покриття. Використовуйте --source links або all, коли карта сайту може бути неповною або ви хочете виявляти сторiнки так, як це робив би пошуковий рушiй.

Чому мiй краул Cloudflare з render-true зависає на останнiх сторiнках?

Сторiнки з повiльно завантажуваними ресурсами, такими як великi зображення або сторонні скрипти, можуть блокувати headless-браузер на 60+ секунд. Вирiшiть це, додавши --block-resources image media font stylesheet та --wait-until domcontentloaded до вашої команди краулу.