CaptchaNo
[ АГЕНТЫ ]

Решение капчи для
агентов на CrewAI

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

python · crewai
import time
import requests

CAPTCHANO_KEY = "cn-YOUR_API_KEY"
HEADERS = {"Authorization": f"Bearer {CAPTCHANO_KEY}"}

def solve(task: dict) -> dict:
    """Block until solved; returns e.g. {"token": "...", "userAgent": "..."}."""
    r = requests.post(
        "https://api.captchano.com/v1/solve",
        params={"wait": 60},
        json=task,
        headers=HEADERS,
        timeout=75,
    )
    data = r.json()
    # A solve can outlast the 60 s wait: poll the task until it finishes.
    while data.get("status") in ("queued", "solving"):
        time.sleep(5)
        data = requests.get(
            f"https://api.captchano.com/v1/task/{data['id']}",
            headers=HEADERS,
            timeout=30,
        ).json()
    if data.get("status") != "ready":
        raise RuntimeError(data.get("error") or data)
    return data["solution"]

from crewai import Agent
from crewai.tools import tool

@tool("Solve captcha")
def solve_captcha(kind: str, sitekey: str, url: str) -> str:
    """Call when a captcha blocks the task. Returns the token to submit."""
    return solve({"type": kind, "sitekey": sitekey, "url": url})["token"]

researcher = Agent(role="Researcher", goal="...", backstory="...", tools=[solve_captcha])

Почему это нужно именно агентам

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

Что возвращает инструмент

  • Токен или cookie — в зависимости от типа проверки. Системы с оценкой сессии возвращают cookie и набор заголовков, с которыми она была получена.
  • Использованный user agent, чтобы агент мог воспроизвести его при отправке.
  • Стоимость решения, чтобы агент, работающий в рамках бюджета, мог её учитывать, а не тратить вслепую.

Как ограничить цикл

Задайте агенту бюджет решений на запуск. Каждый ответ сообщает свою стоимость, поэтому супервизор может прервать цикл, когда расходы превысят порог, а не узнать об этом из счёта. При цене $0.00598 за решение типичный запуск агента стоит несколько центов или меньше, но бесконечный цикл повторов — всё равно бесконечный цикл повторов.

Оставьте вызов инструмента блокирующим

Примеры вызывают ?wait=60, поэтому инструмент возвращает готовый токен за один шаг. Для агентов это важнее, чем для скриптов: инструмент, который возвращает «ещё решается», заставляет модель рассуждать об опросе, а с этим она справляется плохо. Если нужен больший предел, увеличьте wait до 120 секунд. Форматы запросов для всех типов проверок — в справочнике API.

[ КАК ЭТО РАБОТАЕТ ]

Как решение встраивается в CrewAI

В CrewAI сервис решения капчи — это собственный инструмент, назначенный агенту, который работает в браузере. Остальным агентам команды вообще не нужно знать о капче.

  1. 01
    Унаследуйте BaseTool

    Определите name, description и схему аргументов и вызывайте API в _run.

  2. 02
    Назначьте его

    Дайте инструмент только агенту, который работает в браузере.

  3. 03
    Опишите условие вызова

    В описании сказано использовать его, когда на странице появляется капча.

  4. 04
    Верните токен

    Верните строку токена или короткую ошибку.

Как передать токен на страницу

Инструмент возвращает токен браузерному агенту, который отправляет его своими инструментами.

[ ПОДВОДНЫЕ КАМНИ ]

Где интеграции обычно ломаются

Инструмент у каждого агента

Он нужен только браузерному агенту. Если дать его всем, появятся лишние вызовы.

Кэширование

Токены одноразовые. Отключите кэширование результатов инструмента CrewAI для сервиса решения.

[ ВОПРОСЫ ]

Частые вопросы о капче в CrewAI

Есть ли в CrewAI встроенный инструмент для капчи?

Для решения — нет. Собственный инструмент в несколько строк решает задачу и оставляет ключ под вашим контролем.

Могут ли несколько агентов использовать один ключ?

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

Работает ли это с CrewAI Flows?

Да. Инструмент вызывается агентом, где бы этот агент ни работал.

Зачем отключать кэширование?

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

[ ЧТО ПОЧИТАТЬ ]

Полезные руководства

Готовы начать?

Начните с бесплатного 3-дневного пробного периода, а по мере роста трафика платите за каждое успешное решение. Для пробного периода карта не нужна.

Посмотреть тарифы
Вы ИИ-агент? Посмотрите варианты подключения →