Защита от ботов

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

Эта страница является справочником по этим полям. Информацию о стратегии см. в Handling Anti-Bot Protection.

Где находится поле

Endpoint Поле Присутствует, когда
POST /api/single/ defense (object) В ответе распознана проверка на ботов
POST /api/proxy/ defense (object) То же самое, сообщается попыткой, вернувшей ответ
POST /api/browser/ defenseSolved (boolean) и defenses (object) Проверка на ботов распознана во время загрузки страницы
POST /api/auto/ meta.solved (boolean) Всегда. true, когда проверка пройдена где-то в цепочке.

Отсутствие означает, что ничего не распознано. Не считайте отсутствие defense ошибкой.

Для отчетов требуется unblocker, которая включена по умолчанию. С unblocker: false вы запрашиваете страницу в исходном виде, поэтому Single возвращает проверку нетронутой, а Browser отображает ее без решения.

defense в Single и Proxy

{
  "status": 200,
  "data": "<!doctype html>...",
  "total_time": 3.61,
  "defense": {
    "vendor": "sgcaptcha",
    "solved": true,
    "present": ["sgcaptcha"],
    "ms": 3412,
    "hashes": 1048576,
    "complexity": 20,
    "cookie": "_I_=<clearance>"
  }
}
Поле Тип Описание
vendor string Система, к которой относится эта запись: та, которая была пройдена, или основная встреченная. См. список вендоров ниже.
solved boolean true означает, что проверка была пройдена, а data является реальной страницей. false означает, что data может быть страницей проверки.
present string[] Каждая система, распознанная в этом ответе. Может содержать больше имен, чем vendor, и может содержать имена, которые еще никто не обходит.
ms number Миллисекунды, затраченные на прохождение проверки. Только при успешном прохождении.
hashes number Объем вычислительной работы, запрошенной challenge. Только при успешном прохождении.
complexity number Сложность, заявленная challenge. Только при успешном прохождении и только там, где challenge сообщает о ней.
answers number Сколько принятых ответов было предоставлено для challenge, которые требуют нескольких ответов, а не одного. Только при успешном прохождении.
cookie string Допуск, полученный при прохождении, готовый к повторному использованию. Только при успешном прохождении.

solved: false является случаем, на котором стоит сделать ветвление. FourA никогда не представляет нерешенный challenge в качестве контента, поэтому этот флаг является сигналом о том, что body требует эскалации, а не парсинга.

defenses в Browser

{
  "status": 200,
  "body": "<!doctype html>...",
  "userAgent": "Mozilla/5.0...",
  "defenseSolved": true,
  "defenses": {
    "present": ["cloudflare"],
    "cleared": ["cloudflare"]
  }
}
Поле Тип Описание
defenseSolved boolean true когда система была встречена во время загрузки, и допуск сохраняется на финальной странице. Этот флаг определяет, стоит ли вызов 15 или 30 кредитов.
defenses.present string[] Каждая система, распознанная в любой момент загрузки страницы, а не только в финальном ответе. Проверка это то, что уже произошло, и к моменту получения реальной страницы ответ на вызов давно исчезает.
defenses.cleared string[] Системы, допуск которых содержит финальная страница.

Имя в present, которое никогда не попадает в cleared, означает систему, которую FourA может распознать, но пока не может обойти. Они никогда не повышают цену вызова.

Вендоры

Значение vendor Система
cloudflare Проверки Cloudflare и управление ботами
sgcaptcha Проверка сайта SiteGround
datadome DataDome
perimeterx PerimeterX
akamai Akamai Bot Manager
incapsula Imperva Incapsula
awswaf Проверка AWS WAF
ebay-splashui Собственная проверка eBay
hcaptcha hCaptcha
recaptcha reCAPTCHA

Что проходится сегодня

Endpoint Обходит
Single, Proxy sgcaptcha, ebay-splashui. Обе проверки вычислительные, а не визуальные, поэтому браузер не задействуется.
Browser cloudflare, sgcaptcha

Все остальное в списке распознается и отображается в отчете, не более того. Это разделение смещается по мере того, как FourA учится обходить новые системы, поэтому читайте solved, а не полагайтесь только на эту таблицу.

Два примечания о граничных случаях:

  • hcaptcha и recaptcha также являются обычными виджетами форм. О них сообщается только тогда, когда ответ (response) действительно заблокировал вас (403, 429 или 503), поэтому страница оформления заказа с полем CAPTCHA в форме не сообщает о защите.
  • Нахождение за Cloudflare не является защитой. cloudflare появляется, когда в ответе есть реальная проверка или артефакт управления ботами, а не потому, что сайт использует Cloudflare.

Повторное использование допуска

В defense.cookie заключается весь смысл этого поля. Допуск привязан к выходу (exit), который его получил, и к User-Agent, который его получил, поэтому при повторном запуске через ту же пару проверка не запускается снова.

import requests

API = "https://eu.api.foura.ai"
H = {"X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json"}

# 1) First call pays for the clear.
first = requests.post(f"{API}/api/proxy/", headers=H, json={
    "maxTries": 5,
    "request": {"method": "GET", "url": "https://example.com/catalog"},
}).json()

defense = first.get("defense", {})
if defense.get("solved"):
    clearance = defense["cookie"]
    exit_id = first["proxy"]

    # 2) Follow-up pages skip the check: same exit, same clearance.
    for page in range(2, 6):
        r = requests.post(f"{API}/api/single/", headers=H, json={
            "method": "GET",
            "url": f"https://example.com/catalog?page={page}",
            "proxy": exit_id,
            "headers": [["Cookie", clearance]],
        }).json()
        print(page, r["status"])

Первый вызов несет затраты на прохождение защиты. Каждый повтор является обычным запросом по обычной цене.

Три вещи ломают повтор:

  1. Другой выход. Зафиксируйте ID proxy, который вернул ответ прохождения защиты. См. Повторное использование Proxy для запросов.
  2. Другой User-Agent. Ответы Browser возвращают userAgent, который они использовали. Отправьте его обратно вместе с cookie.
  3. Истечение срока. Прохождения имеют собственный срок жизни, устанавливаемый целью. Для SiteGround он составляет около 30 дней для всего сайта; прохождение Cloudflare обычно намного короче. Относитесь к прохождению как к кэшу: когда повторы снова начинают возвращать проверки, выполните один свежий вызов и получите новое прохождение.

Сколько это стоит

Пройденная проверка изменяет цену только для Browser:

Движок Базовая Пройденная защита
Single 1 (2 с unblocker) Без изменений
Proxy 5 (10 с unblocker) Без изменений
Browser 15 30

Browser взимает 30 только когда решатель был включен и система была действительно пройдена. Система, которая была распознана и не пройдена, стоит 15, так же как и страница без проверки вообще.

Сочетайте это с validate

defense сообщает вам, что проверка была встречена. validate сообщает FourA, как выглядит настоящая страница, что позволяет запросу завершиться неудачей, а не передать вам промежуточную страницу, которая случайно содержит HTTP 200.

{
  "method": "GET",
  "url": "https://example.com/product/42",
  "validate": {
    "data": {"accept": ["Add to cart"], "fail": ["Just a moment"]}
  }
}

В POST /api/auto/, validate предотвращает завершение работы при получении страницы проверки.

Связанные материалы

Обновлено: 12 августа 2026 г.