Scarnox · Blog

Капча AWS WAF: что это и как с ней работать

Капча AWS WAF — это челлендж, который выдаёт веб-файрвол Amazon Web Application Firewall, когда владелец сайта настроил проверку посетителей. Запрос, который файрвол считает подозрительным, получает страницу-челлендж вместо содержимого. Посетитель должен пройти проверку, прежде чем загрузится настоящая страница. Если вы столкнулись с ней во время тестов или сбора данных, нужно знать, как её распознать, что контролирует владелец сайта и что Scarnox может сделать сегодня. Этот гайд охватывает все три вопроса.

Что такое капча AWS WAF

AWS WAF — это движок правил, который стоит перед веб-приложением: на Amazon CloudFront, Application Load Balancer или API Gateway. Правила могут разрешить, заблокировать, только посчитать или проверить запрос. Челлендж может быть тихой JavaScript-проверкой или видимой капчей — в зависимости от настройки правила.

Важно, что решение принимает владелец сайта. Файрвол не знает, зачем вашему скрейперу данные. Он оценивает только трафик, который видит: частоту запросов, репутацию IP-адреса, заголовки и поведение клиента.

Как распознать её в коде

Челленджи AWS WAF часто можно узнать по ответам. Частый признак — заголовок ответа x-amzn-waf-action, а челлендж нередко отдаётся с HTTP-статусом 202 до появления настоящей страницы. Считайте это признаками, а не доказательством, потому что сайты настраивают файрвол по-разному:

import requests

def looks_like_aws_waf(resp: requests.Response) -> bool:
    # Признак по заголовку, а не доказательство. Проверьте на странице, которую тестируете.
    return "x-amzn-waf-action" in resp.headers

resp = requests.get("https://example.com/products", timeout=30)
if looks_like_aws_waf(resp):
    print("Challenge served. Stop, slow down, and check your request rate.")
else:
    print("Status", resp.status_code)

Также ищите в исходном коде страницы скрипт, загруженный с пути челленджа AWS WAF, и страницу, которая не показывает содержимое, пока не выполнится скрипт. Простой вызов requests часто получает страницу-челлендж, а не данные. Это ожидаемо.

Что может сделать владелец сайта

Если сайт ваш, консоль AWS WAF позволяет настроить правила, которые запускают челлендж. Самые полезные опции:

Если вы тестируете собственный сайт, самое чистое решение — белый список для ваших тестовых раннеров. Не пытайтесь обойти челлендж на сайте, который вам не принадлежит. Это защита владельца, и первой она сломает ваш доступ.

Где сейчас поддержка Scarnox

Так что если сайт, с которым вам разрешено работать, сегодня показывает челлендж AWS WAF, у вас есть варианты, описанные выше: замедлиться, добавить белый список, если сайт ваш, или попросить владельца о API или потоке данных. Вы можете создать аккаунт и начать с пробного баланса, карта не нужна. Так вы настроите поток PopularCaptcha уже сейчас и будете готовы, когда поддержка AWS WAF выйдет. Актуальные цены — на странице тарифов.

Тестирование собственного сайта за AWS WAF

Если вы владелец сайта и хотите, чтобы автотесты проходили файрвол, не ослабляя защиту для реальных посетителей, используйте собственные инструменты файрвола, а не обход челленджа:

Эти шаги сохраняют защиту и делают тестовый трафик предсказуемым, а это и есть нужный результат. Пересматривайте правила после каждого изменения настройки тестов: правило, которое было верным для прошлых раннеров, может блокировать новые.

Парсите ответственно

Если вы попали на страницу AWS WAF, потому что собираете данные:

Что дальше