← Все статьи
2026-06-16 08:02 · 🤖 AI World

Один символ против ботов: Claude Code настраивает Cloudflare WAF

Саймон Уиллисон нашёл элегантное решение против агрессивных кроулеров: CAPTCHA в Cloudflare WAF включается только если в поисковом URL есть амперсанд. Claude Code помог написать правило — и заодно обнажил реальные лимиты Cloudflare MCP.

Один символ против ботов: Claude Code настраивает Cloudflare WAF

Один символ — «&» — разделяет живого человека и бота в поисковом запросе. Именно это обнаружил Саймон Уиллисон, когда искал способ защитить свой фасетный поиск от агрессивных кроулеров без того, чтобы превращать жизнь читателей в бесконечную CAPTCHA-пытку. Решение — одна строка в Cloudflare WAF. Помог её сформулировать Claude Code.

Контекст

Cloudflare давно переименовал свой CAPTCHA-механизм: теперь это Web Application Firewall → Custom rules → Managed Challenge. Смысл прежний — пропустить человека, остановить бота. Но проблема стандартных «тупых» правил в том, что они бьют по всем подряд: настоящий читатель видит «Подождите, проверяем…» наравне с кроулером.

Уиллисон столкнулся с типичным сценарием: его фасетный поисковик генерирует URL с несколькими параметрами — когда пользователь выбирает фильтры, в строке появляются амперсанды. Кроулеры обходят такие URL пачками, пытаясь проиндексировать все комбинации. А простой запрос /search/?q=term — один параметр, без амперсанда — почти всегда означает живого человека.

Это различие и стало основой для умного правила. Cloudflare WAF позволяет писать условия на собственном языке выражений. Итоговое правило выглядит так: (http.request.uri.path wildcard r"/search/*" and http.request.uri.query contains "&"). Только пути под /search/ и только если в query есть «&» — тогда Managed Challenge. Просто. Но найти это без понимания WAF-синтаксиса — не быстро.

Аналитика

Здесь работают два слоя. Первый — само техническое решение: разделение «простой запрос пользователя» vs «перебор комбинаций ботом» через морфологию URL — это паттерн, применимый далеко за пределами Cloudflare. Любой API, любой поиск с фильтрами сталкивается с этой проблемой. Амперсанд как маркер сложного запроса — простая, но сильная эвристика.

Второй слой — как Уиллисон пришёл к этому решению. Он прямо пишет: «после некоторой возни с Claude Code». Не документация, не Stack Overflow, не Cloudflare-саппорт — а итеративный диалог с LLM. Это показательно: Claude Code становится де-факто DevOps-ассистентом для разработчиков-одиночек и небольших команд, закрывая «длинный хвост» задач — тех, где нет готового туториала и нужно копать специфичную документацию.

Отдельно интересен эпизод с Cloudflare MCP. Уиллисон попробовал управлять WAF через MCP-сервер Cloudflare прямо из Claude Code — концептуально это «AI управляет инфраструктурой через инструменты». Оказалось, что MCP не умеет редактировать нужные правила. Claude Code переключился на прямой Cloudflare API. Паттерн «попробовал MCP → не хватает → перешёл на API» будет типичным ещё долго: MCP-экосистема растёт быстро, но покрытие функций пока неравномерное. Это честный сигнал о зрелости инструментов, а не провал идеи.

Кейсы применения в бизнесе

B2B SaaS стартап с поиском и фильтрами. Каталог, маркетплейс, любой фасетный UI — кроулеры обходят все комбинации фильтров и создают нагрузку на БД. WAF-правило: challenge только на URL с двумя и более параметрами. Это снижает нагрузку без ущерба для пользователей. Настройка — 30 минут с Claude Code в роли ассистента по синтаксису.

Корпорация с legacy и Cloudflare Enterprise. WAF уже стоит, но правила настраивались годами и трогать их страшно. Claude Code + Cloudflare API позволяет аудировать существующие правила, выявлять коллизии и предлагать точечные изменения без риска «сломать всё». Начать с аудита: попросить Claude разобрать текущий набор правил и объяснить каждое — это безопасный первый шаг.

SMB и локальный бизнес в КР и СНГ. Небольшой интернет-магазин или сервис на Cloudflare Free сталкивается с теми же кроулерами, но без DevOps-ресурса. Одно правило — это несколько кликов плюс одна строка синтаксиса. Claude в браузере поможет сформулировать выражение под конкретный сайт. Стоимость при Free-тарифе Cloudflare — нулевая, если не превышать лимиты бесплатного плана.

Кейсы в личной жизни

Разработчик с личным проектом или блогом. Поисковый функционал — частая цель кроулеров. Даже небольшой персональный сайт на Cloudflare получает трюк с амперсандом за 20 минут. Заодно — практика с WAF Expression Language: навык, который пригодится в production.

Контент-мейкер с архивом материалов. Статьи, подкасты, видео с поиском — агрессивный обход тормозит сайт в пиковые моменты. Claude Code + Cloudflare — быстрый способ защититься без найма специалиста. Сформулировать задачу в чате, получить правило, вставить в Dashboard.

Junior-разработчик или студент. Этот кейс — отличный учебный пример AI-assisted DevOps. Попробуйте: бесплатный аккаунт Cloudflare, тестовый домен, Claude Code — и задача «настрой WAF для защиты поиска». Час практики даёт реальный опыт работы с WAF + MCP + Cloudflare API в реальных условиях.

Как применить сегодня

  • Откройте Cloudflare Dashboard → Security → WAF → Custom rules. Добавьте правило: путь содержит ваш search-endpoint, query содержит «&». Действие — Managed Challenge.
  • Попросите Claude сформулировать WAF Expression под ваш URL-паттерн — скажите, как выглядят ваши search-URL с фильтрами.
  • Для программного управления WAF используйте Cloudflare API, а не MCP — пока покрытие MCP неполное. Claude Code умеет писать скрипты под Cloudflare API.
  • Проверьте правило в Cloudflare Expression Preview до активации: вставьте несколько тестовых URL и убедитесь, что challenge срабатывает только на нужные.
  • Мониторьте метрику Managed Challenge в Cloudflare Analytics первые 24 часа — убедитесь, что легитимный трафик не задет.
← Все статьи