Scarnox · Blog

Обход капчи в легитимной автоматизации и тестировании

Обойти капчу легитимно — значит провести собственную автоматизацию через проверку, не нарушая правил сайта и не атакуя его пользователей. На практике это четыре случая: автоматизация собственного процесса, тестирование собственного сайта, создание доступных инструментов и сбор публичных данных в ответственном темпе. Самый быстрый честный путь обычно — вообще не провоцировать капчу. Когда избежать её нельзя, решатель через API, например Scarnox, может вернуть токен, который ожидает страница.

Этот гайд излагает подходы в том порядке, в котором их стоит пробовать, и отмечает границы, которые не стоит переходить.

Сначала выясните, почему появилась капча

Капча — это сигнал. Сайт решил, что запрос выглядит автоматизированным или рискованным. Прежде чем пытаться пройти проверку, выясните причину:

Устранение причины часто убирает капчу полностью, и это лучше, чем решать её на каждом запросе.

Попробуйте подходы, которые избегают проверки

  1. Используйте официальный API, если он есть. Многие сайты публикуют данные через API с собственными ключами и лимитами. Этот путь быстрее, стабильнее и явно разрешён.
  2. Замедлитесь и распределите запросы. Добавляйте задержки между запросами, ограничивайте параллельность и делайте паузу при предупреждениях. Ровный темп в несколько запросов в минуту выглядит для сайта совсем иначе, чем всплеск из сотен.
  3. Сохраняйте сессии. Переиспользуйте cookie и согласованный профиль браузера в рамках сессии, а не начинайте с нуля на каждой странице. Гайд по browser fingerprinting объясняет, почему это важно.
  4. Проверьте robots.txt и условия использования до старта, а не после блокировки. Следуйте тому, что просит сайт.

Используйте тестовые ключи и окружения

Если капча мешает вашему собственному staging-окружению, не направляйте тесты на продакшн, чтобы её обойти. Большинство провайдеров капчи, включая Google и Cloudflare, публикуют тестовые ключи для разработки. Эти ключи выдают валидный токен без реальной проверки и являются правильным инструментом для автотестов. Также можно попросить свою команду отключить капчу на staging-сервере. Гайд по капче в автотестах описывает такую настройку.

Решайте капчу через API, когда она стоит на пути легитимной работы

Некоторые капчи всё равно появятся в легитимной задаче, даже при хорошем темпе. Пример — задача мониторинга портала вашего поставщика. В таком случае уместным инструментом становится API решателя.

Scarnox — это API для решения капч. Сегодня единственный живой тип задачи — PopularCaptcha, proxyless. Ваш код отправляет sitekey и URL страницы и получает токен, который нужно передать вместе с формой:

import requests

r = requests.post(
    "https://api.scarnox.com/api/tasks/create",
    headers={"Authorization": "Bearer scarnox_YOURAPIKEY"},
    json={
        "captcha_type": "PopularCaptchaTaskProxyless",
        "site_key": "10000000-ffff-ffff-ffff-000000000001",
        "site_url": "https://example.com/login",
    },
    timeout=185,
)
data = r.json()
token = data["solution"]["token"] if data.get("errorId") == 0 else None

Токен живёт около двух минут, поэтому отправляйте его сразу. Полный пример есть в гайде о решении PopularCaptcha на Python. Другие типы капч, включая reCAPTCHA, Cloudflare Turnstile и Arkose, скоро появятся. Пока они не запущены, не рассчитывайте, что решатель с ними справится.

Доступность — тоже легитимная причина

Капчи — барьер для людей, которые пользуются экранными читалками, переключаются между устройствами или имеют когнитивные либо визуальные нарушения. Если вы разрабатываете инструменты доступности или действуете от имени пользователей, которые не могут пройти проверку, первый шаг — попросить владельца сайта о доступной альтернативе. Многие сайты её предлагают. Автоматизация капчи не заменяет этот разговор.

Что не является легитимным

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

Эти сценарии вредят реальным людям, нарушают условия сайтов и несут серьёзный юридический риск. Scarnox их не поддерживает, и этот гайд их не рассматривает.

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

Если ваш обход нужен для сбора публичных данных, помните:

Итог

Сначала избегайте капчи, устраняя причину. Для тестов используйте тестовые ключи. Для легитимных задач, которые всё равно упираются в проверку, используйте API решателя в рамках живых типов задач. Держитесь подальше от перечисленных выше сценариев и парсите в темпе, который выдержит сайт.

Что дальше