Решение капчи для
агентов на Browser Use
У агента, встретившего проверку, нет в наборе инструментов ничего, что могло бы на неё ответить, поэтому он зависает или галлюцинирует обходной путь. Дайте ему сервис решения капчи как инструмент, и блокировка станет ещё одним вызовом.
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 browser_use import Agent, Tools, ActionResult
tools = Tools()
@tools.action("Solve a captcha that is blocking the current page")
def solve_captcha(kind: str, sitekey: str, url: str) -> ActionResult:
solution = solve({"type": kind, "sitekey": sitekey, "url": url})
return ActionResult(extracted_content=solution["token"])
agent = Agent(task="...", llm=llm, tools=tools)Почему это нужно именно агентам
Парсер, наткнувшийся на проверку, падает с ошибкой, и вы его чините. Агент проваливается молча: он рассуждает о заблокированной странице, придумывает правдоподобный следующий шаг и сообщает о прогрессе, которого не было. Такой сбой хуже, потому что он незаметен. Типизированный инструмент решения превращает неоднозначный тупик в детерминированный результат, по которому агент может ветвиться.
Что возвращает инструмент
- Токен или cookie — в зависимости от типа проверки. Системы с оценкой сессии возвращают cookie и набор заголовков, с которыми она была получена.
- Использованный user agent, чтобы агент мог воспроизвести его при отправке.
- Стоимость решения, чтобы агент, работающий в рамках бюджета, мог её учитывать, а не тратить вслепую.
Как ограничить цикл
Задайте агенту бюджет решений на запуск. Каждый ответ сообщает свою стоимость, поэтому супервизор может прервать цикл, когда расходы превысят порог, а не узнать об этом из счёта. При цене $0.00598 за решение типичный запуск агента стоит несколько центов или меньше, но бесконечный цикл повторов — всё равно бесконечный цикл повторов.
Оставьте вызов инструмента блокирующим
Примеры вызывают ?wait=60, поэтому инструмент возвращает готовый токен за один шаг. Для агентов это важнее, чем для скриптов: инструмент, который возвращает «ещё решается», заставляет модель рассуждать об опросе, а с этим она справляется плохо. Если нужен больший предел, увеличьте wait до 120 секунд. Форматы запросов для всех типов проверок — в справочнике API.
Как решение встраивается в Browser Use
Browser Use позволяет регистрировать собственные действия. Действие решения читает sitekey с текущей страницы, получает токен и подставляет его, поэтому агент может продолжить работу в том же браузере.
- 01Зарегистрируйте действие
Добавьте действие решения в инструменты агента с понятным описанием.
- 02Прочитайте текущую страницу
Действие читает sitekey и URL из уже имеющейся сессии браузера.
- 03Решите и подставьте
Вызовите API, затем подставьте токен на ту же страницу.
- 04Сообщите результат
Верните короткий результат, чтобы агент знал, что может продолжать.
Как передать токен на страницу
Действие выполняет JavaScript на странице самого агента, чтобы заполнить поле и вызвать callback.
Где интеграции обычно ломаются
Передавайте прокси, который использует браузер агента, чтобы токен и страница работали с одного IP.
Укажите в описании действия, что агенту не нужно самому кликать по виджету: этим занимается действие.
Частые вопросы о капче в Browser Use
Решает ли Browser Use капчу самостоятельно?
Он может кликнуть по чекбоксу, но не способен отвечать на задания с картинками, а автоматизированным браузерам их часто показывают. Собственное действие решения делает результат детерминированным.
Работает ли это с Browser Use cloud?
Действию нужны только исходящий HTTPS и возможность выполнять JavaScript на странице, поэтому оно работает везде, где работает ваш агент.
А что с Turnstile?
То же действие, другой type. Прочитайте sitekey Turnstile и отправьте type turnstile.
Как не дать агенту зациклиться?
Считайте решения на задачу и останавливайте агента при превышении лимита. Если удобнее бюджет расходов, каждый результат содержит свою стоимость.
Полезные руководства
Готовы начать?
Начните с бесплатного 3-дневного пробного периода, а по мере роста трафика платите за каждое успешное решение. Для пробного периода карта не нужна.