Защищенные сайты

Современные сайты используют продвинутые системы обнаружения ботов. В этом руководстве объясняется, как FourA получает страницу на сайтах с проверкой клиента, и как повысить ваш процент успешных запросов.

Как работает защита от ботов

Сайты используют несколько уровней защиты:

  • Репутация IP: дата-центры и известные proxy-адреса блокируются
  • Сетевые отпечатки: каждый HTTP-клиент имеет уникальную сигнатуру рукопожатия, которую сайты могут определять
  • Отпечатки браузера: JavaScript проверяет признаки headless-браузера
  • Поведенческий анализ: паттерны запросов, тайминги и навигационный поток
  • Страницы проверки: визуальное задание, которое должен выполнить посетитель

В ответе указывается система, выполнившая проверку; Проверки сайтов содержит их список.

Самый быстрый путь: Auto

Если уровень защиты пока неизвестен, вызовите /api/auto/ с подстрокой validate.data.accept, присутствующей только на настоящей странице. Режим Auto перебирает ступени с учетом стоимости (ротируемый proxy, затем браузер через proxy; с forceProxy: false сначала идут дешевый прямой опрос и прямой рендеринг в браузере) и останавливается на первой ступени, возвращающей ответ, подходящий под ваши правила. При повторных вызовах к тому же хосту воспроизводится готовая сессия, поэтому второй запрос обходится дешево.

curl -X POST https://eu.api.foura.ai/api/auto/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://protected-site.com/product/42",
    "validate": {"data": {"accept": ["Add to cart"]}}
  }'

Автоматически распознает стандартные страницы проверок и продолжает попытки при их обнаружении. Ваша строка validate.data.accept перехватывает все остальное: неизвестную страницу проверки, login wall или страницу без нужного контента. Полное руководство смотрите в Smart Fetch guide.

Как FourA помогает на каждом уровне

Реалистичные сетевые запросы

Единый endpoint (POST /api/single/) воспроизводит параметры handshake, совпадающие с реальным браузером. Сайты отвечают на него так же, как на браузер, без накладных расходов на его запуск.

Включите unblocker, чтобы также подставлять реалистичные браузерные headers (User-Agent, Sec-Ch-Ua, Sec-Fetch-*, Accept-Encoding). unblocker включен по умолчанию; указывайте false только для отправки базовой сигнатуры клиента.

{
  "method": "GET",
  "url": "https://protected-site.com/data",
  "unblocker": true
}

Рендеринг в реальном браузере

Браузерный endpoint (POST /api/browser/) запускает полноценный экземпляр браузера Chrome. Он выполняет JavaScript страницы точно так же, как браузер обычного пользователя. unblocker в Browser проходит проверки, которые запрашивает страница перед загрузкой (Turnstile и аналогичные шлюзы); оставьте его включенным, если вам не нужна исходная страница с проверкой.

Ротация proxy

Proxy endpoint (POST /api/proxy/) автоматически выполняет ротацию резидентных и датацентровых proxy. Если один IP блокируется, следующая попытка использует другой. Используйте ignoreProxies в повторном запросе, чтобы пропустить уже использованные точки выхода; используйте maxTries (по умолчанию 5, максимум 90), чтобы настроить интенсивность попыток.

Выбор точек выхода по странам

Передайте exitCountries в /api/proxy/, чтобы ограничить выбор proxy теми, чья видимая целевому сервису страна входит в строгий список разрешенных. Значения представляют собой двухбуквенные коды (["CZ", "GB"]), очищенные от пробелов, приведенные к верхнему регистру и дедуплицированные. FourA никогда не переключается на незапрошенную страну; если в текущем пуле нет совпадений, response возвращает code: "no_eligible_proxy" с нормализованным списком в details.exitCountries, чтобы вы могли повторить попытку позже без ослабления ограничений. Выбор стран доступен начиная с тарифа Startup. На тарифе без этой функции запрос с exitCountries отклоняется с 403 и X-FourA-Limit: plan_limit_feature.

curl -X POST https://eu.api.foura.ai/api/proxy/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "maxTries": 5,
    "exitCountries": ["CZ", "GB"],
    "request": {"method": "GET", "url": "https://target.example/pricing"}
  }'

Ответ содержит exitCountry, если был запрошен scoping. Убедитесь, что он входит в ваш список разрешенных адресов, прежде чем доверять данным, а затем используйте возвращенный идентификатор proxy в любых последующих вызовах Browser, чтобы рендеринг JavaScript выполнялся через тот же выходной узел.

FourA сообщает, что вас заблокировало

Вам не нужно угадывать, какая система заблокировала request. Когда целевой ресурс выполняет проверку на ботов, ответ указывает ее название.

  • POST /api/single/ и POST /api/proxy/ возвращают объект defense: defense.vendor указывает систему, defense.solved сообщает, была ли пройдена проверка, а defense.present перечисляет все, что было распознано в этом ответе.
  • POST /api/browser/ возвращает defenseSolved, а также defenses.present и defenses.cleared.
{
  "status": 200,
  "data": "<!doctype html>...",
  "defense": {
    "vendor": "sgcaptcha",
    "solved": true,
    "present": ["sgcaptcha"],
    "cookie": "_I_=<clearance>"
  }
}

Из этого следуют два правила:

  1. solved: false означает, что тело ответа может содержать проверку, а не страницу. FourA никогда не выдает страницу проверки за контент, поэтому проверяйте флаг перед парсингом.
  2. Успешное прохождение проверки дает вам clearance. Если присутствует defense.cookie, отправьте его обратно в виде заголовка Cookie через тот же выходной узел и с тем же User-Agent, и последующие запросы полностью пропустят проверку.

FourA распознает распространенные системы проверок, включая собственные проверки eBay, Reddit, Amazon и Google Search. Распознавание шире, чем прохождение: система, которую мы можем определить, но не можем пройти, фиксируется в отчете и никогда не увеличивает стоимость запроса. Если возвращенная страница является страницей проверки этой системы, даже при HTTP 200, запрос не тарифицируется, а заголовок X-FourA-Check-Page указывает ее название. См. раздел Site checks для ознакомления со всеми полями, текущим соотношением пройденных и обнаруженных проверок, а также примером повторного использования.

Strategy by Protection Level

Unknown Protection

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

Low Protection (most sites)

Используйте единый endpoint с unblocker. Сетевого соответствия на уровне протокола достаточно.

curl -X POST https://eu.api.foura.ai/api/single/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"method": "GET", "url": "https://news-site.com/article", "unblocker": true}'

Средний уровень: страница с проверкой (challenge) или базовый фаервол

Используйте browser endpoint для прохождения JavaScript-проверок:

curl -X POST https://eu.api.foura.ai/api/browser/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://protected-site.com/data", "timeout_ms": 15000}'

Высокий уровень: поведенческие проверки и фингерпринтинг

Используйте endpoint proxy с несколькими повторными попытками:

curl -X POST https://eu.api.foura.ai/api/proxy/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "maxTries": 10,
    "request": {
      "method": "GET",
      "url": "https://heavily-protected.com/prices",
      "unblocker": true
    }
  }'

Для цепочек проверок ("Just a moment", страница проверки безопасности), когда требуется получить отрендеренную страницу после прохождения проверки, см. MCP Recipes. В рецепте "Protected page: proxy first, browser when JavaScript is needed" показана точная передача сессии от proxy к browser.

Best Practices

  1. Начинайте с auto для неизвестных целей. Передайте правило validate, позвольте системе выбрать самый дешевый уровень и проверьте meta.rung в ответе, чтобы узнать, какой движок сработал. После этого вызывайте нужный движок напрямую для повторного трафика.

  2. Используйте успешную сессию повторно. После вызова auto полученный session (proxy ID + cookies + userAgent) можно передать в /api/single/ или /api/browser/ для следующих страниц того же хоста по тарифу самого endpoint: 2 кредита на Single с unblocker, 5 на Browser (10 для интерактивной страницы).

  3. Соблюдайте rate limits. Даже с ротацией proxy отправка сотен запросов в секунду на один сайт вызовет поведенческую блокировку. Делайте паузу между запросами не менее 1-2 секунд.

  4. Оставляйте unblocker включенным. На Single и Proxy параметр unblocker: true (по умолчанию) отправляет реалистичный профиль браузера и заголовки. На Browser он включает автоматическое прохождение проверок. Отключайте его только тогда, когда вам намеренно нужен базовый клиентский профиль или исходная страница проверки.

  5. Отслеживайте долю успешных запросов. Проверяйте метрики в Dashboard, чтобы следить за динамикой успеха. Резкое падение обычно означает, что целевой сайт обновил защиту.

  6. Пропускайте заблокированные выходные узлы. Если вызов /api/proxy/ или /api/auto/ вернул proxy ID, который затем стал выдавать ошибки, передайте его в ignoreProxies при следующем запросе, чтобы FourA выбрал другой выходной узел.

  7. Проверяйте defense перед повторным запросом. Имя вендора защиты подскажет, стоит ли пробовать другой профиль браузера, требуется ли полный рендеринг или проверка относится к тем, которые нельзя пройти без сервиса решения проверок.

  8. Меняйте передаваемый браузер. Некоторые ресурсы принимают один браузер и блокируют другой. Задавайте browser, os или version на Single и Proxy, а актуальный список смотрите в GET /api/profiles. Подробности приведены в endpoint reference.

Limits

Некоторые сценарии требуют дополнительной обработки вне API:

  • Контент, защищенный авторизацией: FourA не управляет долгоживущими сессиями входа за вас. Браузерный endpoint принимает cookies для каждого запроса; передавайте свои сессионные cookie самостоятельно.
  • Интерактивные проверки: FourA распознает визуальные проверки и сообщает о них в defense.present, но не выполняет их. Turnstile обрабатывается через Browser.
  • Контент с региональными ограничениями: используйте exitCountries в /api/proxy/, чтобы зафиксировать выбор разрешенных стран. Сайты, которые дополнительно ограничивают доступ по ISP или ASN (некоторые лицензированные букмекеры, отдельные государственные сервисы), могут блокировать стандартные residential-выходы; запрос возвращает no_eligible_proxy, если в текущем пуле нет подходящего выхода.
  • Сайты с юридическими ограничениями: всегда проверяйте, что ваш сбор данных соответствует условиям использования целевого сайта и применимому законодательству.

Next Steps

  • Smart Fetch (Auto): подробный разбор /api/auto/
  • Choosing the Right Endpoint: руководство по выбору endpoints
  • Common Issues: устранение ошибок 403 и страниц верификации
  • API Endpoints: полный справочник параметров, включая exitCountries
  • Site checks: поле defense, список систем и воспроизведение clearance
  • MCP Recipes: шаблоны сценариев, включая цепочку proxy-first-then-browser
Обновлено: 27 сентября 2026 г.