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

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

Как решать капчу с помощью Postman

Грегори Фишер
Грегори Фишер

Технический специалист

Введение

Postman — один из самых популярных инструментов для работы с API. Разработчики и QA-инженеры используют его каждый день для отправки запросов, проверки ответов и автоматизации рутинных задач.

Но что делать, если API, который вы тестируете, защищен капчей? Без валидного токена или текста с картинки сервер просто отклонит ваш запрос. К счастью, решить эту проблему можно прямо в Postman, используя API сервиса 2Captcha.

В этом руководстве мы покажем простой способ решения капч в Postman без написания сложных скриптов. Вы научитесь создавать коллекцию запросов, решать обычные текстовые капчи и recaptcha v2, использовать полученные решения в своих основных запросах и отправлять отчеты о результатах.

Что вам понадобится

Прежде чем мы начнем, убедитесь, что у вас есть всё необходимое:

  1. Установленный Postman. Скачать его можно с официального сайта.
  2. Аккаунт в сервисе 2Captcha. Просто зарегистрируйтесь на сайте.
  3. Ваш API-ключ, который можно найти в личном кабинете после входа.
  4. Небольшой баланс на счету для оплаты тестовых решений.

Как это работает: общий принцип

Решение капчи через API сводится к трем простым шагам.

Первый шаг — отправка капчи на решение. Вы делаете POST-запрос на эндпоинт createTask и отправляете изображение капчи или параметры recaptcha. В ответ вы получаете taskId — уникальный идентификатор вашей задачи.

Второй шаг — ожидание решения. Вы делаете POST-запросы на эндпоинт getTaskResult, передавая ваш taskId. API отвечает статусом задачи. Когда статус становится ready, в ответе приходит решение.

Третий шаг — использование решения. Вы берете полученный текст или токен и вставляете его в ваш основной запрос к целевому сайту.

В Postman мы создадим отдельные запросы для этих шагов и будем использовать переменные окружения для передачи данных между ними.

Шаг 1: Настройка окружения в Postman

Переменные окружения — это очень удобный способ хранить данные, которые используются в нескольких запросах. Мы будем использовать их для хранения вашего API-ключа и решений капч.

Создание окружения

В левом верхнем углу Postman перейдите в раздел Environments. Нажмите кнопку Add, чтобы создать новое окружение. Назовите его, например, captcha Solver.

Добавьте следующие переменные:

Переменная Initial Value Current Value
api_key ваш API-ключ ваш API-ключ
task_id
captcha_solution
api_hostname api.2captcha.com api.2captcha.com

Нажмите Save, чтобы сохранить окружение. В правом верхнем углу Postman обязательно выберите ваше новое окружение из выпадающего меню.

Теперь во всех наших запросах мы сможем использовать эти переменные, заключая их в двойные фигурные скобки, например {{api_key}}.

Шаг 2: Создание коллекции запросов

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

В левой панели нажмите на Collections, затем Create Collection. Назовите её captcha Solving. Мы будем добавлять наши запросы внутрь этой коллекции.

Шаг 3: Решение текстовой капчи

Текстовая капча — это изображение с искаженными буквами и цифрами. Для её решения мы используем тип задачи ImageToTextTask.

Запрос 1: Отправка капчи

В вашей коллекции нажмите на плюс, чтобы добавить новый запрос. Назовите его 1. Create Task (Image). Установите метод POST. Введите URL: https://api.2captcha.com/createTask

Перейдите на вкладку Body. Выберите raw и выберите JSON из выпадающего списка. Вставьте следующий код:

json Copy
{
    "clientKey": "{{api_key}}",
    "task": {
        "type": "ImageToTextTask",
        "body": "YOUR_BASE64_IMAGE"
    }
}

Важное замечание: в поле body вам нужно передать изображение капчи в формате Base64. Это длинная строка текста.

Как получить Base64 из изображения? Вы можете использовать любой онлайн-конвертер. Просто загрузите изображение капчи и скопируйте результат.

Или, если капча загружена на веб-странице, вы можете открыть консоль браузера (F12) и выполнить этот быстрый скрипт:

javascript Copy
fetch(document.querySelector('.captcha-image').src)
  .then(r => r.blob())
  .then(blob => {
    const reader = new FileReader();
    reader.onload = () => console.log(reader.result.split(',')[1]);
    reader.readAsDataURL(blob);
  });

Скопируйте полученную строку и вставьте её в поле body вместо YOUR_BASE64_IMAGE.

Нажмите Send. Вы получите ответ, который выглядит примерно так:

json Copy
{
    "errorId": 0,
    "taskId": "1234567890",
    "status": "processing"
}

Скопируйте значение taskId и вставьте его в переменную task_id в вашем окружении Postman.

Запрос 2: Получение результата

Создайте новый запрос в вашей коллекции и назовите его 2. Get Result. Установите метод POST. URL: https://api.2captcha.com/getTaskResult

На вкладке Body выберите raw и JSON, затем вставьте это:

json Copy
{
    "clientKey": "{{api_key}}",
    "taskId": "{{task_id}}"
}

Нажмите Send. Вы получите один из двух ответов.

Если задача всё еще решается:

json Copy
{
    "errorId": 0,
    "status": "processing"
}

Просто подождите несколько секунд и нажмите Send снова.

Если задача решена:

json Copy
{
    "errorId": 0,
    "status": "ready",
    "solution": {
        "text": "aB3dEf"
    },
    "cost": "0.0005",
    "createTime": 1692808229,
    "endTime": 1692808234
}

Скопируйте значение из solution.text (в этом примере это aB3dEf). Вставьте его в переменную captcha_solution в вашем окружении.

Использование решения

Теперь в вашем основном запросе к целевому сайту просто используйте переменную {{captcha_solution}}:

json Copy
{
    "username": "test_user",
    "password": "secret",
    "captcha": "{{captcha_solution}}"
}

Шаг 4: Решение recaptcha v2

recaptcha v2 — это знакомый чекбокс с надписью "Я не робот". Для неё не нужно скачивать изображения. Вам просто нужно передать URL страницы и sitekey.

Как найти sitekey

Откройте страницу с капчей в браузере. Нажмите F12 и перейдите на вкладку Elements. Найдите div с классом g-recaptcha. Значение в атрибуте data-sitekey — это то, что вам нужно.

Вот пример:

html Copy
<div class="g-recaptcha" data-sitekey="6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"></div>

В данном случае sitekey — это 6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-.

Запрос 1: Создание задачи

Создайте новый запрос с именем 1. Create Task (recaptcha v2). Установите метод POST. URL: https://api.2captcha.com/createTask

В Body, raw, JSON вставьте это:

json Copy
{
    "clientKey": "{{api_key}}",
    "task": {
        "type": "RecaptchaV2TaskProxyless",
        "websiteURL": "https://example.com/login",
        "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
    }
}

Обязательно замените websiteURL на реальный URL страницы с капчей, а websiteKey на найденный вами sitekey.

Нажмите Send. Скопируйте taskId из ответа и сохраните его в переменную окружения task_id.

Запрос 2: Получение результата

Используйте точно такой же запрос 2. Get Result, который вы создали для текстовой капчи. Просто убедитесь, что в переменной task_id актуальное значение.

Когда статус станет ready, ответ будет выглядеть так:

json Copy
{
    "errorId": 0,
    "status": "ready",
    "solution": {
        "gRecaptchaResponse": "03AGdBq26...длинная_строка_токена..."
    }
}

Скопируйте значение solution.gRecaptchaResponse и сохраните его в переменную captcha_solution.

Использование решения

В вашем запросе к целевому сайту передайте токен вот так:

json Copy
{
    "email": "user@example.com",
    "password": "secret",
    "g-recaptcha-response": "{{captcha_solution}}"
}

Шаг 5: Отправка отчетов о результатах

Чтобы помочь 2Captcha улучшить качество решений, важно сообщать о результатах. Если токен сработал, отправьте reportCorrect. Если нет — reportIncorrect.

Отчет о неверном решении

Создайте запрос с именем Report Incorrect. Установите метод POST. URL: https://api.2captcha.com/reportIncorrect

Body будет таким:

json Copy
{
    "clientKey": "{{api_key}}",
    "taskId": "{{task_id}}"
}

Отчет о верном решении

Создайте запрос с именем Report Correct. Установите метод POST. URL: https://api.2captcha.com/reportCorrect

Body точно такое же:

json Copy
{
    "clientKey": "{{api_key}}",
    "taskId": "{{task_id}}"
}

Просто запускайте соответствующий запрос после того, как проверите, успешно ли прошел ваш основной запрос к целевому сайту.

Полезные советы для новичков

Держите всё в порядке

Группируйте ваши запросы логично. Сначала создание задачи, затем опрос результата, а затем отчеты. Так за вашим рабочим процессом будет гораздо легче следить.

Проверяйте переменные

Перед отправкой запроса убедитесь, что в переменных окружения указаны правильные значения. Особенно это касается task_id, который меняется каждый раз, когда вы решаете новую капчу.

Сохраняйте примеры

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

Следите за балансом

Вы можете проверить остаток средств простым POST-запросом на https://api.2captcha.com/getBalance, передав в body только ваш clientKey.

Не медлите

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

Решение частых проблем

ERROR_WRONG_USER_KEY

Это означает, что ваш API-ключ неверен. Проверьте, что в переменной api_key указан правильный ключ из вашего личного кабинета 2Captcha.

ERROR_ZERO_BALANCE

У вас недостаточно средств. Пополните баланс аккаунта в личном кабинете.

ERROR_CAPTCHA_UNSOLVABLE

Капча слишком сложная или параметры указаны неверно. Для текстовых капч убедитесь, что изображение четкое. Для recaptcha перепроверьте, что websiteURL и websiteKey указаны правильно.

Статус застрял на Processing

Задача просто занимает немного больше времени. Подождите около 5-10 секунд и отправьте запрос Get Result снова. Обычно решение занимает до 20 секунд.

Целевой сайт отклоняет решение

Этому может быть несколько причин. Токен мог истечь, поэтому используйте его сразу. URL может быть неверным: для recaptcha websiteURL должен в точности совпадать с адресом страницы. Или сайт может требовать прокси: если он строго проверяет IP-адреса, вам нужно будет использовать тип RecaptchaV2Task с параметрами прокси вместо proxyless-версии.

Полезные ссылки

Заключение

Решение капч в Postman — это простой процесс, который сводится к трем шагам: создание задачи, получение результата и использование решения. Вам не нужно писать сложные скрипты для начала работы. Понимания базовых HTTP-запросов и переменных окружения более чем достаточно.

Мы рассмотрели, как настроить окружение Postman, решать текстовые капчи с помощью ImageToTextTask, решать recaptcha v2 с помощью RecaptchaV2TaskProxyless, находить sitekey на веб-странице, использовать решения в основных запросах и отправлять отчеты о результатах.

С этими базовыми знаниями вы сможете тестировать любой API, защищенный капчами. А когда вы будете готовы полностью автоматизировать процесс, всегда сможете позже изучить Pre-request Scripts.