Ендпоінт /crawl у Cloudflare Browser Rendering – це один з найшвидших способів витягування контенту вебсайтів у масштабі, але стандартні налаштування не є оптимальними для більшості випадків використання. Після проведення краулів на десятках сайтів – від магазинів Shopify до React SPA та сайтів документації – ось налаштування, які стабільно дають найкращі результати.
Цей посібник охоплює, що робить кожне налаштування, коли його змінювати, та конкретні команди, які найкраще працюють для поширених типів сайтів.
Найважливіше рішення: режим рендерингу
Кожен краул починається з одного вибору: чи повинен Cloudflare завантажувати сторінку в headless-браузері, чи просто отримати необроблений HTML?
render: false (--no-render) отримує HTML без виконання JavaScript. Це швидко, безкоштовно під час бета-періоду та створює чистий вивід для будь-якого сайту, який подає контент у початковій HTML-відповіді.
render: true (за замовчуванням) завантажує кожну сторінку в headless-екземплярі Chromium, виконує JavaScript, чекає стабілізації сторінки, а потім витягує контент. Це повільніше, споживає браузерні години та коштує гроші після безкоштовних 10 годин/місяць.
Коли кожен режим має сенс
| Тип сайту | Рекомендований режим | Причина |
|---|---|---|
| Магазини Shopify | --no-render |
Товари, колекції та сторінки рендеряться на сервері |
| Сайти WordPress | --no-render |
Контент міститься в початковій HTML-відповіді |
| Статичні сайти та блоги | --no-render |
Немає контенту, залежного від JavaScript |
| Сайти Hugo, Jekyll, Astro | --no-render |
Попередньо зібраний HTML під час розгортання |
| React або Vue SPA | render: true |
Контент завантажується через JavaScript після початкового завантаження сторінки |
| Сайти з ліниво завантажуваними даними | render: true |
Відгуки, ціни та рекомендації можуть потребувати JS |
Під час нашого тестування сайти Shopify повертали приблизно 90% ідентичного контенту між режимами рендерингу. Додатковий контент від рендерингу здебільшого складався з динамічних елементів інтерфейсу, таких як панелі кошика та віджети рекомендацій, а не значущих даних про товари. Ми розглядаємо повне порівняння режимів рендерингу з тестами “лоб у лоб” у статті Переваги та недоліки ендпоінта Cloudflare Crawl для магазинів Shopify.
Правило: починайте з --no-render. Якщо в результатах бракує потрібного контенту, перемикайтесь на режим рендерингу.
Виявлення URL: Sitemaps проти Links
Прапорець --source контролює, як Cloudflare знаходить сторінки для краулу.
--source sitemaps читає sitemap.xml сайту та краулить лише URL, перелічені там. Це передбачувано, охоплює сторінки, які власник сайту вважає канонічними, та уникає краулу дублікатів або малоцінних сторінок.
--source links починає з заданого URL та слідує за посиланнями <a href>, знайденими на кожній сторінці. Це виявляє сторінки так, як це робив би пошуковий рушій, але може пропустити ізольовані сторінки та може потрапити в пагінацію, фільтри або інші малоцінні шаблони URL.
--source all (за замовчуванням) поєднує обидва методи.
Що використовувати
Використовуйте --source sitemaps, коли сайт має повну, добре підтримувану карту сайту. Більшість сайтів Shopify та WordPress мають таку. Це найнадійніший варіант для повного витягування контенту сайту.
Використовуйте --source links або all, коли карта сайту відсутня, неповна, або ви хочете провести аудит внутрішньої структури посилань сайту.
Блокування ресурсів для краулів з render-true
Це єдина найбільш впливова оптимізація для краулів з render-true. За замовчуванням headless-браузер завантажує кожне зображення, шрифт, таблицю стилів та медіафайл на кожній сторінці. Це марнотратно, коли вам потрібен лише текстовий контент.
Додайте --block-resources image media font stylesheet до будь-якого краулу з render-true. Ефект значний:
- Швидкість: час краулу зменшується з приблизно 7 секунд на сторінку до приблизно 2 секунд на сторінку
- Вартість: споживання браузерних годин скорочується на 60-70%
- Надійність: сторінки, які зависали б нескінченно в очікуванні повільних ресурсів CDN, тепер завершуються нормально
Браузер все ще виконує JavaScript та будує DOM. Він просто пропускає завантаження ресурсів, які не впливають на текстовий контент.
Умова очікування
Прапорець --wait-until вказує браузеру, коли припинити очікування та витягти контент. За замовчуванням очікується завершення всієї мережевої активності, що є повільним та непотрібним для витягування контенту.
--wait-until domcontentloaded вказує браузеру витягти контент, щойно DOM готовий. Для витягування тексту цього майже завжди достатньо. JavaScript, який завантажує контент, вже буде виконаний, але фонові пінги аналітики та виклики рекламних мереж не затримуватимуть краул.
Рекомендовані команди за типом сайту
Магазин Shopify (повний сайт)
python crawl.py run https://example.com \
--limit 500 \
--format markdown \
--no-render \
--source sitemaps \
-o results.json
Швидко, безкоштовно та охоплює весь каталог товарів. Карти сайту Shopify є вичерпними, тому --source sitemaps забезпечує повне покриття без краулу в пагіновані колекції або сторінки результатів пошуку.
Магазин 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 ви хочете пропустити колекції, блог-пости та сторінки політик.
WordPress або статичний блог
python crawl.py run https://example.com \
--limit 500 \
--format markdown \
--no-render \
--source sitemaps \
-o results.json
Ті ж налаштування, що й для Shopify. Сайти WordPress рендеряться на сервері та мають надійні карти сайту. Генератори статичних сайтів (Hugo, Jekyll, Eleventy, Astro) створюють попередньо зібраний 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 є режимом за замовчуванням, тому прапорець не потрібен. Критичні доповнення – це --block-resources та --wait-until domcontentloaded. Без них краул буде повільним та дорогим.
Якщо SPA не має карти сайту, перемикніться на --source links.
Сайт документації
python crawl.py run https://docs.example.com \
--limit 500 \
--format markdown \
--no-render \
--depth 5 \
--exclude-patterns "*/changelog/**" "*/archive/**" \
-o docs.json
Сайти документації часто мають глибокі структури посилань. Збільшіть --depth, щоб слідувати вкладеним ієрархіям сторінок. Використовуйте --exclude-patterns, щоб пропустити сторінки змін, архівні версії або інший контент, який вам не потрібен.
Тести продуктивності
Ці цифри отримані з реальних краулів магазинів Shopify та електронної комерції у березні 2026 року. Назви сайтів були анонімізовані.
| Сайт | Сторінки | Режим | Розмір контенту | Браузерний час | Загальний час |
|---|---|---|---|---|---|
| Магазин добавок (захищений від ботів) | 89/100 | no-render | 5.9 МБ | 0с | ~3.5 хв |
| Бренд одягу (великий каталог) | 500/500 | no-render | 77.1 МБ | 0с | ~18 хв |
| Бренд одягу (великий каталог) | 4/5 | render-true | 0.6 МБ | 0.9с | ~10с |
| DTC бренд для активного відпочинку | 256/266 | no-render | 11.0 МБ | 0с | ~5 хв |
| DTC бренд для активного відпочинку | 256/266 | render-true | 12.5 МБ | 1,338с | ~25 хв |
| Магазин медичного одягу | 1,200 | no-render | великий | 0с | ~55 хв |
Ключові закономірності з даних:
- No-render у 5-10 разів швидший за render-true для того ж сайту
- No-render споживає нуль браузерного часу (безкоштовно під час бета-тестування)
- Реальний час масштабується лінійно з кількістю сторінок для краулів з no-render
- Сайти з директивами crawl-delay у
robots.txtбудуть повільними незалежно від налаштувань, оскільки краулер їх дотримується
Оптимізація витрат
План Workers Paid коштує $5/місяць. Крім цього, витрати пов’язані з браузерними годинами, споживаними краулами з render-true.
Безкоштовний рівень: 10 браузерних годин/місяць. Краул 500 сторінок з render-true та блокуванням ресурсів використовує приблизно 15-20 хвилин браузерного часу. Ви можете запускати 30+ оптимізованих краулів на місяць у межах безкоштовного рівня.
Без блокування ресурсів: той самий краул 500 сторінок може використати 60+ хвилин браузерного часу, зменшуючи вашу безкоштовну ємність приблизно до 10 краулів на місяць.
Краули з no-render безкоштовні під час бета-періоду. Для серверно-рендерених сайтів немає причин використовувати render-true.
Формула вартості
Browser cost = (pages x seconds_per_page) / 3600 x $0.09
При 2 секундах на сторінку (оптимізований render-true): 500 сторінок = 0.28 годин = $0.025
При 7 секундах на сторінку (неоптимізований): 500 сторінок = 0.97 годин = $0.087
Різниця невелика за один краул, але накопичується при щоденних або щотижневих краулах на кількох сайтах.
Ліміти, які варто знати
| Ресурс | Ліміт |
|---|---|
| Сторінок за краул | 100,000 |
| Завдань краулу на день | Необмежено (Workers Paid) |
| Браузерні години | 10 год/місяць безкоштовно, потім $0.09/год |
| API-запити | 600/хвилину |
| Одночасні браузери | 30 на обліковий запис |
| Час життя завдання | Макс. 7 днів, результати доступні 14 днів |
Поширені проблеми та їх вирішення
Помилки 403 на більшості сторінок: сайт має захист від ботів (Cloudflare Bot Management, Akamai, Datadome). Це неможливо обійти через ендпоінт /crawl. Краул завершиться, але більшість сторінок поверне помилки.
Краул з render-true зависає ближче до кінця: одна або кілька сторінок мають повільно завантажувані ресурси, що блокують браузер. Додайте --block-resources image media font stylesheet та --wait-until domcontentloaded.
Відсутній контент у режимі no-render: сайт завантажує контент через JavaScript. Перемикніться на render-true з оптимізаціями блокування ресурсів та очікування.
Скрипт аварійно завершується посеред краулу: завдання краулу продовжує працювати на серверах Cloudflare. Перевірте статус та отримайте результати, коли воно завершиться:
python crawl.py status <job_id>
python crawl.py results <job_id> -o out.json
Порожні результати з джерела sitemaps: карта сайту може бути відсутньою або заблокованою. Перемикніться на --source links або --source all.
Відомі обмеження
Перед побудовою робочого процесу навколо ендпоінта /crawl зверніть увагу на ці обмеження:
- Некоректне розв’язання відносних URL: конвертер markdown Cloudflare неправильно розв’язує відносні URL на кшталт
//www.example.com/path, додаючи URL сторінки на початку. Це створює некоректні шляхи у виводі, особливо на сайтах Shopify. - Шаблонний контент на кожній сторінці: навігаційні меню, мега-меню та футери з’являються в markdown для кожної сторінки. Для типового сайту Shopify приблизно 90% контенту на сторінку – це повторюваний шаблонний контент. Дивіться наш аналіз співвідношення шаблонного контенту на реальних краулах Shopify.
- Відсутність витягування структурованих даних: JSON-LD, schema.org та OpenGraph дані не парсяться в режимі no-render. Render-true захоплює базові OG-теги в метаданих, але не повну схему.
- Відсутність визначення 404: краул обробляє лише живі URL. Мертві посилання та зламані внутрішні посилання не повідомляються.
- Один стартовий URL: API приймає один URL та розгалужується назовні. Він не приймає список URL. Для пакетного отримання URL використовуйте ендпоінти
/markdownабо/scrape.
Часто задавані питання
Чи варто використовувати render true чи render false з Cloudflare /crawl?
Використовуйте render false (--no-render) для серверно-рендерених сайтів, таких як Shopify, WordPress та статичні сайти. Використовуйте render true лише для односторінкових додатків, побудованих на React, Vue або Angular, де контент завантажується через JavaScript. Під час тестування сайти Shopify повертали приблизно 90% ідентичного контенту в обох режимах.
Скільки коштує Cloudflare Browser Rendering /crawl?
План Workers Paid коштує $5/місяць. Краули з render-false не споживають браузерний час i є безкоштовними під час бета-тестування. Краули з render-true використовують браузерні години: 10 годин/місяць безкоштовно, потім $0.09/година. Блокування зображень, шрифтів та таблиць стилів під час краулів з render-true значно зменшує браузерний час.
Яке найкраще джерело виявлення URL для Cloudflare /crawl?
Використовуйте --source sitemaps для сайтів з повними картами сайту, таких як Shopify та WordPress. Це забезпечує передбачуване, повне покриття. Використовуйте --source links або all, коли карта сайту може бути неповною або ви хочете виявляти сторінки так, як це робив би пошуковий рушій.
Чому мій краул Cloudflare з render-true зависає на останніх сторінках?
Сторінки з повільно завантажуваними ресурсами, такими як великі зображення або сторонні скрипти, можуть блокувати headless-браузер на 60+ секунд. Вирішіть це, додавши --block-resources image media font stylesheet та --wait-until domcontentloaded до вашої команди краулу.