Логотип «2Captcha»Перейти на главную страницу
Туториалы по обходу капчи

Эта статья была полезной?

Как обойти капчу в UiPath

Рубен Эрера
Рубен Эрера

Строю backend, IT-инфраструктуру и automation-сервисы для масштабируемых SaaS-продуктов.

Как решить и обойти капчу в UIPath

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

Стандартные активности UiPath (Type Into, Click) не работают с современными капчами (Turnstile, reCAPTCHA Enterprise). Готовые пакеты из Marketplace (вроде "Text Captcha Solver") часто заброшены разработчиками, содержат устаревшие зависимости или просто не работают.

Единственный стабильный архитектурный паттерн для автоматизации решения капчи in UiPath — использование прямых HTTP-запросов к API внешних решателей. Ниже — пошаговая реализация.

Что сделать до автоматизации

Не тратьте бюджет на распознавание, если проверку можно обойти инфраструктурно. Перед написанием кода проверьте три гипотезы:

  1. Whitelisting: Если целевая система — внутренняя или партнерская, запросите у InfoSec добавление IP робота в белый список.
  2. API First: Проверьте наличие официального API у сервиса. Это исключает UI-взаимодействие и капчу как класс.
  3. Session Persistence: Многие защиты (Cloudflare) реагируют на «чистый» профиль браузера. Настройте робота на работу с профилем, где сохранены cookies (cf_clearance). Если бот выглядит как авторизованный пользователь, капча может не появиться.

Если это невозможно (публичный парсинг), реализуем uipath captcha solver через API.

Настройка HTTP-клиента

Для работы потребуется пакет UiPath.WebAPI.Activities.
В качестве бэкенда для решения используйте любой сервис со стандартным API:

  • 2Captcha — поддерживает все типы (v2, v3, Turnstile, GeeTest).
  • SolveCaptcha — альтернативный провайдер.

Логика: POST Task -> Polling Loop -> Inject JS.

Шаг 1: Создание задачи (Create Task)

Робот должен забрать со страницы data-sitekey (через Get Attribute) и текущий URL.
Используйте активность HTTP Request:

  • Endpoint: https://api.2captcha.com/createTask (или аналогичный endpoint выбранного сервиса)
  • Method: POST
  • Body (JSON):
    json Copy
    {
      "clientKey": "YOUR_API_KEY",
      "task": {
        "type": "recaptcha2", 
        "websiteKey": "SITE_KEY_VARIABLE",
        "websiteURL": "URL_VARIABLE"
      }
    }

Важно по типам (type):

  • Google v2: recaptcha2
  • Cloudflare: turnstile
  • GeeTest v4: geetest_v4

Ответ парсим через Deserialize JSON. Если errorId === 0, сохраняем taskId.

Шаг 2: Поллинг (Wait Loop)

Сервис решает задачу 10–30 секунд. Мгновенный запрос результата вернет ошибку.
Реализуйте цикл Do While:

  1. Delay: 5–7 секунд (защита от rate limit).
  2. HTTP Request: POST на getTaskResult.
    json Copy
    {
      "clientKey": "YOUR_API_KEY",
      "taskId": "TASK_ID_FROM_STEP_1"
    }
  3. Условие выхода: jsonResponse("status").ToString == "ready".

Как только статус ready, забираем токен из solution.gRecaptchaResponse (или token для Turnstile).

Шаг 3: Инъекция (JS Injection)

Это критический этап. UiPath не умеет писать в скрытые поля (type="hidden") через Type Into.
Используйте активность Inject JS Script внутри Scope браузера.

Сниппет для reCAPTCHA / Turnstile:

javascript Copy
function(element, token) {
    // 1. Поиск скрытого поля
    // Для Google: 'g-recaptcha-response'
    // Для Cloudflare: 'cf-turnstile-response'
    var el = document.getElementById('g-recaptcha-response');
    
    if (el) {
        el.value = token;
    }
    
    // 2. ВАЖНО: Вызов callback
    // Если кнопка Submit не активировалась, ищем функцию в data-callback
    // window.onCaptchaSuccess(token); 
}

Input Parameter: Переменная с токеном.
После инъекции вызывайте клик по кнопке логина.

Типовые ошибки

При отладке uipath captcha automation возникают следующие проблемы:

Ошибка Причина Решение
No taskId / Error 1 Неверный JSON пейлоад Проверьте формат JSON в первом запросе. Часто забывают экранировать кавычки, если собирают строку вручную.
Status: Failed Неверный SiteKey websiteKey должен совпадать с тем, что в HTML коде страницы.
Зависание Processing Неверный тип задачи Вы шлете recaptcha2, а сайт использует Enterprise. Проверьте трафик в DevTools (Network tab), чтобы узнать точный тип капчи.
Токен есть, входа нет SPA Frameworks React/Angular не видят изменения value через JS. Нужно добавить в скрипт el.dispatchEvent(new Event('input')).

Использование нативных HTTP-запросов вместо сторонних пакетов гарантирует, что ваша логика не сломается при обновлении Studio или зависимостей проекта.