Вызывайте API решения CAPTCHA из n8n

Автор: solvethree4 мин на чтение

Создайте задачу с помощью узла HTTP Request в n8n, затем выполните ветвление по её статусу. Если статус всё ещё pending или solving, подождите и запросите задачу с тем же ID — не отправляйте ещё один POST.

На этой странице

Настройка сайта и учётных данных

  1. 1.

    Активируйте профиль сайта

    Настройте целевое имя хоста в консоли solvethree и убедитесь, что его профиль активен для вашего рабочего пространства. Передача имени хоста и действия в задаче не создаёт профиль.

  2. 2.

    Создание учётных данных Header Auth в n8n

    Настройте отправку заголовка Authorization со значением Bearer , за которым следует API-ключ вашего рабочего пространства. Храните ключ в учётных данных, а не в JSON задачи.

Настройка запроса создания

Назовите узел HTTP Request Create task. Узел опроса будет ссылаться на это имя, чтобы получить исходный ID задачи.

Настройки узла создания задачи
Настройки узла создания задачи
ПолеНастройка
СпособPOST
URLhttps://api.solvethree.com/v1/tasks
АутентификацияОбщий тип учётных данных
Общий тип аутентификацииHeader Auth; выберите созданные учётные данные
Отправлять параметры запросаВключите; добавьте waitMs со значением 15000
Отправлять телоВключите; выберите JSON и используйте тело ниже
reCAPTCHA Enterprise · структура запроса
{
  "site": "accounts.example.com",
  "action": "login",
  "proxy": "http://user:[email protected]:8080",
  "requestId": "example_login_001"
}

Замените site, action и proxy на имя хоста, действие и прокси для вашего запроса. Передайте ровно одно из полей: proxy или proxyCandidates; в этом примере используется один прокси. Не добавляйте type или url. Тип reCAPTCHA по умолчанию — Enterprise v3.

Замените requestId из примера уникальным значением для каждой новой логической задачи. Не меняйте это значение, если потребуется восстановить задачу после тайм-аута. Допускается 1–64 символа: буквы ASCII, цифры, подчёркивания или дефисы.

waitMs должен находиться в строке запроса URL, а не в теле JSON. Установите тайм-аут HTTP-запроса больше запрошенного ожидания в 15 секунд, чтобы учесть сетевые задержки; 30 секунд — разумное начальное значение, а не гарантия времени решения. Учётные данные Header Auth обеспечивают аутентификацию, поэтому дублировать её в разделе «Отправлять заголовки» не нужно.

Ветвление по статусу, а не по успеху HTTP-запроса

Обрабатывайте неуспешные HTTP-ответы до проверки данных задачи. Для успешного ответа подключите узел IF или Switch и проверьте {{ $json.status }}.

Направляйте ответы создания и опроса через эти проверки
Направляйте ответы создания и опроса через эти проверки
СтатусСледующее действие
готовоВыйдите из цикла опроса и используйте решение.
failedОстановите опрос. Сохраните errorCode и error для диагностики.
pending или solvingПроверьте срок завершения опроса, затем подождите и запросите существующую задачу через GET.

Для готовой задачи reCAPTCHA отправьте полученный токен, используя возвращённые параметры идентификации userAgent и secChUa, а также прокси, через который удалось решить задачу. Готовая задача означает, что решение было сгенерировано; это не подтверждает, что сайт принял последующий запрос.

Стоимость неудачных решений возвращается. Выясните причину указанной ошибки, а не повторяйте запросы с неизменёнными данными и не считайте, что в рабочем пространстве недостаточно средств.

Подождите, затем выполните GET с исходным ID

  1. 1.

    Сохраните фиксированный срок завершения

    Перед запуском Create task сохраните в рабочем процессе срок завершения опроса — например, через две минуты после начала создания. Это правило остановки вашего рабочего процесса, а не ограничение API solvethree. Храните срок отдельно от HTTP-ответа, чтобы последующие ответы его не перезаписали.

  2. 2.

    Проверяйте условие перед каждым опросом

    Для статусов pending или solving используйте узел IF, чтобы сравнить текущее время с сохранённым сроком. Если срок истёк, завершите цикл и сохраните ID задачи. Иначе приостановите выполнение на две секунды с помощью узла Wait, затем снова проверьте срок перед GET.

  3. 3.

    Получение существующей задачи

    Настройте второй узел HTTP Request с параметрами ниже. Направьте его ответ обратно в ту же ветку проверки статуса. Никогда не направляйте ветку опроса обратно в Create task.

Настройки узла HTTP Request для опроса
Настройки узла HTTP Request для опроса
ПолеНастройка
СпособGET
URLhttps://api.solvethree.com/v1/tasks/{{ $('Create task').item.json.id }}
АутентификацияОбщий тип учётных данных
Общий тип аутентификацииHeader Auth; выберите те же учётные данные
Отправлять параметры запросаВключите; добавьте waitMs со значением 15000
Отправлять телоОтключите

Выражение для ID задачи — {{ $('Create task').item.json.id }}. Оно считывает id из указанного узла создания, даже если последний элемент содержит ответ опроса или другие данные рабочего процесса. Имя узла в выражении должно совпадать с именем в вашем рабочем процессе.

GET поддерживает ожидание до 15 секунд. Для этого HTTP-запроса предусмотрите такой же запас тайм-аута, как и для запроса создания. По истечении срока новые попытки опроса прекращаются; уже выполняющийся запрос может завершиться позже.

Эквивалентный GET-запрос вне n8n:

API задач · получение существующей задачи
curl --fail-with-body --max-time 30 \
  "https://api.solvethree.com/v1/tasks/$TASK_ID?waitMs=15000" \
  -H "Authorization: Bearer $SOLVETHREE_API_KEY"

Восстановление после тайм-аута POST без создания новой задачи

Тайм-аут соединения не доказывает, что создание не удалось. Если вы получили ID, запросите эту задачу. Если нет, повторите POST с теми же входными данными задачи и тем же requestId, чтобы восстановить существующую задачу. Повторное использование этого ID с другими входными данными задачи вызывает конфликт.

Аналогично, истечение срока опроса — это локальное условие остановки, а не статус неудачной задачи. Сохраните исходный ID, чтобы при последующем выполнении получить задачу, а не платить за ещё одно решение.

Запустите первую задачу.

Начните с $5 на балансе рабочего пространства.

Создать рабочее пространство
Вызывайте API решения CAPTCHA из n8n · solvethree