AI-агенты для ресерча: как обойти Cloudflare и капчи при сборе данных из интернета

Я — Denis Shokhirev, Enterprise AI architect из Фрайбурга, Германия. В DennisCraft AI Studio за последние полгода я внедрил 14 production AI-агентов для B2B-клиентов из DACH, включая логистику и финтех. Каждый раз, когда агенту нужно собрать данные с сайтов, защищённых Cloudflare и капчей, начинается борьба не с ML, а с инфраструктурой защиты сайтов.

Почему Cloudflare и капчи — головная боль для AI-агентов

Сбор публичных данных для ресерча — стандартная задача: мониторинг цен, отслеживание изменений на сайтах, сбор контактных данных для B2B. Но уже на этапе парсинга даже открытых ресурсов агент сталкивается с Cloudflare, reCAPTCHA, hCaptcha. По моему опыту, более 60% востребованных сайтов в DACH регионе используют Cloudflare или аналогичные антибот-системы (по данным BuiltWith, 2023: ссылка).

Стандартные библиотеки вроде requests, Selenium или Puppeteer быстро попадают в блок-листы по поведению. Даже смена User-Agent и прокси не спасает. Поэтому приходится строить production-grade обходные схемы.

Архитектура обхода: как я выстраиваю пайплайн

1. Разделение ролей между агентами

В NextGen Pathways (мой патентованный агентный стек) я всегда выношу web-scraping в отдельный сервис. Агент-исследователь формирует задания, но не тянет данные напрямую — этим занимается специализированный worker, заточенный под обход антибот-защиты.

2. Использование реальных браузеров в headless-режиме

Cloudflare и капчи сейчас фокусируются на анализе поведения браузера. Поэтому основной инструмент — запуск реального Chrome или Firefox в headless-режиме через Puppeteer.


from pyppeteer import launch

async def fetch_with_browser(url):
    browser = await launch(headless=True, args=['--no-sandbox'])
    page = await browser.newPage()
    await page.goto(url, {'waitUntil': 'networkidle2', 'timeout': 30000})
    content = await page.content()
    await browser.close()
    return content

Pyppeteer (Python-обёртка над Puppeteer) позволяет симулировать поведение настоящего пользователя, включая скрипты, cookies и даже скроллинг.

3. Прокси + IP-ротация

Без ротации IP теперь почти невозможно пройти даже лёгкие фильтры. На практике использую платные residential прокси (например, Bright Data, Smartproxy), так как датацентр-прокси Cloudflare банит мгновенно.

ПровайдерТип проксиЦена (2024)Успешность обхода Cloudflare
Bright DataResidential$15/GBВысокая
SmartproxyResidential$13/GBВысокая
ProxyRackData Center$4/GBНизкая

4. Борьба с капчами

Если сайт требует прохождения reCAPTCHA, есть только два варианта: ручной ввод или сторонние антикапча-сервисы (например, 2Captcha, Anti-Captcha). Важно: для production-систем DACH использовать такие сервисы — серая зона по GDPR, так как данные утекают на внешние серверы.

В большинстве случаев я строю пайплайн так, чтобы при обнаружении капчи агент переходил к следующему ресурсу, а не пытался ломать защиту (fail gracefully). Но если источник критичен, используем решение через 2Captcha API:


import requests

def solve_captcha(api_key, site_key, url):
    s = requests.Session()
    # Отправляем задание на решение капчи
    resp = s.post("http://2captcha.com/in.php", data={
        'key': api_key,
        'method': 'userrecaptcha',
        'googlekey': site_key,
        'pageurl': url
    })
    captcha_id = resp.text.split('|')[1]
    # Получаем ответ (обычно 15-60 сек)
    for _ in range(20):
        r = s.get(f"http://2captcha.com/res.php?key={api_key}&action=get&id={captcha_id}")
        if r.text == 'CAPCHA_NOT_READY':
            time.sleep(5)
        else:
            return r.text.split('|')[1]

Но повторюсь: если проект под GDPR, всегда оцениваю риски передачи данных третьим лицам.

Интеграция с AI-агентами: автоматизация, очереди, контроль ошибок

1. Очереди задач и idempotency

Для управления заданиями по сбору данных использую Supabase (Postgres + queue). Каждый агент пишет задания в очередь; worker обрабатывает их и пишет результат обратно. Это позволяет избегать дублирования и чётко отслеживать ошибки по каждому запросу.


// TypeScript: постановка задачи в очередь Supabase
import { createClient } from '@supabase/supabase-js'

const supabase = createClient('https://project.supabase.co', 'public-anon-key')
await supabase
  .from('scrape_jobs')
  .insert([
    { url: 'https://site.com/data', status: 'pending', agent_id: 42 }
  ])

2. Контроль ошибок и fallback-стратегии

Если Cloudflare заблокировал IP, агент автоматически помечает задачу как "blocked" и пробует другой прокси. Если капча не решается за 60 секунд, задача уходит в "failed". Все ошибки логирую в отдельную таблицу для последующего анализа.

Тип ошибкиДействие агента
403 ForbiddenСменить прокси, повторить попытку
reCAPTCHAПопробовать 2Captcha, иначе skip
TimeoutУвеличить таймаут, либо skip

3. Безопасность: как не попасть под блокировку аккаунта

Если использовать один и тот же fingerprint браузера или куки, Cloudflare быстро вычисляет бота. В Pyppeteer можно кастомизировать параметры запуска, менять User-Agent и даже эмулировать человеческие действия (mouse move, scroll). Для критичных задач дополнительно внедряю задержки между действиями (random sleep 1-3 сек), чтобы не выбиваться из паттерна человеческой активности.

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

Законно ли обходить Cloudflare и капчи для сбора данных?

В большинстве юрисдикций сам парсинг публичных данных легален, если не нарушает ToS сайта и не собирает персональные данные. Но обход защиты может трактоваться как неэтичное поведение. Я всегда проверяю локальные законы и консультируюсь с юристом.

Какой язык лучше для скрапинга под Cloudflare?

Python + Pyppeteer или Playwright — оптимальный вариант по гибкости и поддержке плагинов. На Node.js есть n8n для оркестрации, но сам парсер лучше держать на Python.

Можно ли полностью автоматизировать обход капч?

Нет. Если капча сложная (например, с распознаванием объектов), даже антикапча-сервисы часто ошибаются. В таких случаях лучше искать другие источники данных или просить ручной ввод.

Насколько опасно использовать сторонние антикапча-сервисы для GDPR-проектов?

Высокий риск утечки данных и несоответствия требованиям GDPR, так как сервисы могут находиться вне ЕС и не гарантируют безопасность передачи. Я стараюсь минимизировать их использование или полностью отказаться в чувствительных проектах.

Какие метрики использовать для контроля эффективности обхода?

Я считаю процент успешных загрузок, среднее время обхода защиты, количество ошибок по типам (403, капча, таймауты). Эти данные позволяют оперативно менять стратегию обхода.

В вашей практике, какой способ обхода Cloudflare оказался самым стабильным: headless-режим с реальным браузером, прокси-ротация или комплексная стратегия? Мне важно мнение тех, кто внедряет это в проде. Я провожу бесплатный 30-мин аудит стека для DACH-компаний, строящих AI под регуляцию. Пишите в LinkedIn или @ger_dennis_ai.

Read more

Computer-Use-Agenten scheitern an Pixeln: wie Sie auf stabile UI-Referenzen über Accessibility Trees umstellen und fehleranfällige Desktop-Automatisierung nicht mehr ständig reparieren

von Denis Shokhirev, Enterprise AI Architect aus Freiburg im Breisgau Ich bin Denis Shokhirev, Agentic AI Systems Architect in Freiburg im Breisgau, Germany, und bei DennisCraft AI Studio setze ich produktive KI-Systeme für DACH-B2B-Kunden auf Basis von Claude, Supabase, n8n, Doppler und selbst betriebenem Postgres um. Die teuersten Fehler in

By Denis Shokhirev

Компьютерные агенты ломаются на пикселях: как перейти на stable UI refs через accessibility tree и перестать чинить flaky desktop automation

Я Denis Shokhirev, Agentic AI Systems Architect из Freiburg im Breisgau, Germany, и в DennisCraft AI Studio я собираю production AI-системы для DACH B2B на Claude, Supabase, n8n, Doppler и self-hosted Postgres. Самая дорогая поломка в desktop automation, которую я вижу у клиентов, почти никогда не связана с моделью: агент

By Denis Shokhirev