Skip to main content
У цій статті буде представлено інструкцію з інтеграції API для розпізнавання протоколу Recaptcha2, яка дозволяє користувачам не розпізнавати та не натискати на зображення коду Recaptcha2, а лише подавати Website Key для автоматичного декодування на бекенді та завершення верифікації.

Процес подачі заявки

Щоб використовувати API для розпізнавання протоколу Recaptcha2, спочатку перейдіть до консолі Ace Data Cloud для отримання вашого API Token, зберігши його для подальшого використання. Якщо ви ще не увійшли в систему або не зареєстровані, вас автоматично перенаправлять на сторінку входу, запрошуючи вас зареєструватися та увійти, після чого ви будете автоматично повернені на цю сторінку. Один API Token дозволяє викликати всі послуги платформи, без необхідності окремої заявки для кожної послуги. Перший запит на отримання токена надає безкоштовний ліміт, що дозволяє безкоштовно протестувати; при недостатньому ліміті ви можете поповнити загальний баланс на консолі.
📘 Повна документація: API для розпізнавання протоколу Recaptcha2 →

Основне використання

Спочатку розглянемо основний спосіб використання, а саме введення URL сайту, на якому потрібно обробити код, щоб отримати оброблений результат. Спочатку потрібно просто передати поле website_url, наш приклад сайту: https://www.google.com/recaptcha/api2/demo, нам потрібно отримати website_key на сторінці website_url, спочатку відкрийте цю веб-сторінку, натисніть F12 для входу в консоль, а потім у вкладці Element виконайте глобальний пошук за recaptcha-demo, ми можемо отримати наступний результат:

Тут data-sitekey відповідає рядку, який є значенням website_key, нижче наведені конкретні параметри результату:

Ми можемо бачити, що тут ми налаштували заголовки запиту, включаючи:
  • accept: формат відповіді, який ви хочете отримати, тут вказано application/json, тобто формат JSON.
  • authorization: ключ для виклику API, після заявки ви можете вибрати його зі списку.
Крім того, налаштовано тіло запиту, яке включає:
  • website_url: URL сайту, на якому потрібно обробити код.
  • website_key: ідентифікатор сайту в Recaptcha2.
  • proxy: необов’язковий, власний проксі (Bring Your Own Proxy). Після налаштування служба буде використовувати наданий вами проксі IP для розв’язання коду, щоб контролювати якість вихідного IP (наприклад, уникнути блокування цільовим сайтом через публічний проксі IP, що призводить до повернення 410 Gone). Формат: scheme://[user:pass@]host:port, scheme підтримує http/https/socks4/socks5, наприклад, http://user:pass@1.2.3.4:8080. Якщо не заповнити, буде використано проксі за замовчуванням платформи.
Після вибору ви також можете помітити, що праворуч згенеровано відповідний код, як показано на малюнку:

Натисніть кнопку «Спробувати», щоб провести тестування, як показано на малюнку, тут ми отримали наступний результат:
Результат повернення містить кілька полів, описаних нижче:
  • token, результат верифікації після обробки завдання Recaptcha2.
  • started_at, finished_at: час початку обробки запиту та отримання результату, Unix-час (секунди, з плаваючою комою).
  • elapsed: загальний час обробки (секунди).
Ми отримали результат верифікації обробки Recaptcha2, який можна використовувати для POST або імітації відправки на цільовий сайт, одноразового використання, термін дії 120 секунд, рекомендується використовувати протягом 60 секунд. Далі буде надано фрагмент Python-коду, який відправляє оброблений токен на цільовий сайт для проходження Recaptcha2. Спочатку нам потрібно дізнатися, як сайт надсилає POST-запити, щоб ми могли передати згенерований токен. Для цього потрібно відкрити консоль F12, потім вручну пройти перевірку, в результаті чого ми побачимо, що сайт надіслав POST-запит. Нам потрібно лише переглянути конструкцію цього POST-запиту, конкретний процес виглядає так:
  • Спочатку вручну пройти перевірку, конкретно, як показано на малюнку нижче:

  • Потім натиснути submit, спостерігаючи за змінами в мережі консолі, конкретно, як показано на малюнку нижче:

  • Проаналізуйте структуру POST-запиту, в кінці ви можете клацнути правою кнопкою миші на запиті, щоб скопіювати код CURL, конкретно, як показано на наступному зображенні:

З вище наведеного зображення видно, що URL цього POST-запиту: https://www.google.com/recaptcha/api2/demo, нам потрібно лише надіслати параметр g-recaptcha-response, після чого ми просто передаємо оброблений токен у нижче наведених даних, код CURL для перевірки токена виглядає так:
Код Python для перевірки токена виглядає так:
Потім ми запускаємо код і спостерігаємо, що консоль показує такий результат:

Врешті-решт, ми пройшли перевірку протоколу Recaptcha2. Крім того, якщо ви хочете згенерувати відповідний код для інтеграції, ви можете просто скопіювати його, наприклад, код CURL виглядає так:
Код для інтеграції на Python виглядає так:

Асинхронний режим (async)

За замовчуванням API є синхронним і блокує: один запит буде чекати, поки токен не буде оброблено, перш ніж повернути результат. Якщо ви займаєтеся ротацією кількох розв’язувачів (multi-solver rotation) і хочете «після подання завдання відразу отримати task_id, спочатку перейти до інших розв’язувачів, а потім повернутися для отримання результату», ви можете передати async: true у тілі запиту. Після передачі async: true інтерфейс відразу поверне task_id, не блокуючи очікування:
Якщо потрібно активно перевірити прогрес, ви можете використовувати цей task_id для запиту POST /captcha/tasks (рекомендується кожні 3-5 секунд). Цей інтерфейс не буде ініціювати або просувати обробку завдання; навіть якщо не запитувати, відключити інтернет або вийти з клієнта, сервер все ще буде продовжувати обробку:
Під час обробки буде повернуто status: processing:
Після завершення обробки буде повернуто status: ready і токен:
Опис тарифікації: в асинхронному режимі створення завдання та читання статусу «в обробці» не підлягають тарифікації; клієнт сплачує один раз при першому успішному читанні результату (як і в поточній поведінці та ціні синхронного режиму). Сервер самостійно просуває завдання, але не стягує плату за те, що завдання завершено раніше в фоновому режимі. Якщо завдання не буде успішно завершено протягом 120 секунд, воно буде зупинено з HTTP 504 timeout, без тарифікації. /captcha/tasks не відповідає за просування завдання.

Обробка помилок

При виклику API, якщо виникає помилка, API поверне відповідний код помилки та інформацію. Наприклад:
  • 400 token_mismatched: Неправильний запит, можливо, через відсутні або недійсні параметри.
  • 400 api_not_implemented: Неправильний запит, можливо, через відсутні або недійсні параметри.
  • 401 invalid_token: Неавторизовано, недійсний або відсутній токен авторизації.
  • 429 too_many_requests: Занадто багато запитів, ви перевищили ліміт запитів.
  • 500 api_error: Внутрішня помилка сервера, щось пішло не так на сервері.

Приклад відповіді з помилкою

Висновок

Завдяки цьому документу ви дізналися, як використовувати API для розпізнавання протоколу Recaptcha2, щоб користувачі не повинні були розпізнавати та натискати на зображення з капчею Recaptcha2, а лише подавати Website Key для автоматичного декодування на задньому плані, завершуючи перевірку. Сподіваємося, що цей документ допоможе вам краще інтегрувати та використовувати цей API. Якщо у вас є будь-які питання, будь ласка, не соромтеся звертатися до нашої технічної підтримки.