Перейти до основного вмісту
У цій статті буде представлено інструкцію з інтеграції API розпізнавання зображень Recaptcha2, яка дозволяє за допомогою введеного користувачем вмісту та зображення коду Recaptcha2 повернути координати малих зображень, на які потрібно натиснути, для завершення перевірки.

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

Щоб використовувати API, спочатку потрібно перейти на відповідну сторінку API розпізнавання зображень Recaptcha2 для подачі заявки на відповідну послугу. Після переходу на сторінку натисніть кнопку «Acquire», як показано на малюнку: Якщо ви ще не увійшли в систему або не зареєстровані, вас автоматично перенаправлять на сторінку входу, запрошуючи вас зареєструватися та увійти. Після входу або реєстрації ви автоматично повернетеся на поточну сторінку. При першій подачі заявки вам буде надано безкоштовний ліміт, який дозволяє безкоштовно використовувати цей API.

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

Спочатку розглянемо основний спосіб використання. Нам потрібно захопити зображення коду Recaptcha2 з веб-сайту. URL прикладного сайту: https://www.google.com/recaptcha/api2/demo, конкретна сторінка показана на малюнку нижче:

Нам потрібно натиснути на прапорець коду, щоб з’явилося зображення коду. На зображенні вище жовта стрілка вказує на текст, який є значенням question у наступному тексті. Спочатку потрібно просто передати поле image, яке є конкретним зображенням коду Recaptcha2, це зображення вказане червоною стрілкою на зображенні вище, і його потрібно масштабувати до стандартного розміру (100x100, 300x300, 450x450), щоб служба могла визначити тип зображення. Стиснення зображення потрібно виконати самостійно, у цій статті рекомендується сайт для стиснення, на якому ви можете стиснути зображення за розміром і вагою, результати стиснення показані на малюнку: Також потрібно ввести параметр вмісту, пов’язаний із зображенням коду, question, ми надаємо нижче цю таблицю вмісту для довідки:

Таблиця вмісту китайською

{
  "/m/0pg52": "出租车",
  "/m/01bjv": "巴士",
  "/m/02yvhj": "校车",
  "/m/04_sv": "摩托车",
  "/m/013xlm": "拖拉机",
  "/m/01jk_4": "烟囱",
  "/m/014xcs": "人行横道",
  "/m/015qff": "红绿灯",
  "/m/0199g": "自行车",
  "/m/015qbp": "停车计价表",
  "/m/0k4j": "汽车",
  "/m/015kr": "桥",
  "/m/019jd": "船",
  "/m/0cdl1": "棕榈树",
  "/m/09d_r": "山",
  "/m/01pns0": "消防栓",
  "/m/01lynh": "楼梯"
}

Таблиця вмісту англійською

{
  "/m/0pg52": "taxis",
  "/m/01bjv": "bus",
  "/m/02yvhj": "school bus",
  "/m/04_sv": "motorcycles",
  "/m/013xlm": "tractors",
  "/m/01jk_4": "chimneys",
  "/m/014xcs": "crosswalks", // pedestrian crossings  також підходить
  "/m/015qff": "traffic lights",
  "/m/0199g": "bicycles",
  "/m/015qbp": "parking meters",
  "/m/0k4j": "cars",
  "/m/015kr": "bridges",
  "/m/019jd": "boats",
  "/m/0cdl1": "palm trees",
  "/m/09d_r": "mountains or hills",
  "/m/01pns0": "fire hydrant",
  "/m/01lynh": "stairs"
}
З вище наведеного видно, що параметр question потрібно встановити на відповідний /m/01pns0, конкретний вміст наведено нижче:

Ми бачимо, що тут ми налаштували заголовки запиту, включаючи:
  • accept: формат відповіді, який ви хочете отримати, тут вказано application/json, тобто формат JSON.
  • authorization: ключ API, який ви отримали після подачі заявки, його можна вибрати зі списку.
Також налаштовано тіло запиту, яке включає:
  • image: кодування Base64 зображення коду.
  • question: ID питання, будь ласка, перевірте таблицю, починаючи з /m/.
Після вибору ви можете помітити, що праворуч також згенеровано відповідний код, як показано на малюнку:

Натисніть кнопку «Try», щоб провести тестування, як показано на малюнку, ми отримали наступний результат:
{
  "solution": {
    "size": 300,
    "label": "/m/01pns0",
    "confidences": [
      0,
      0.0007,
      1,
      0.0003,
      0.0046,
      1,
      0,
      1,
      0
    ],
    "objects": [
      2,
      5,
      7
    ],
    "type": "multi"
  }
}
У відповіді є кілька полів, описаних нижче:
  • solution, результат перевірки після обробки зображення коду Recaptcha2.
    • size, розмір зображення коду Recaptcha2.
    • label, вміст, розпізнаний на зображенні коду Recaptcha2.
    • confidences, впевненість у розпізнанні області зображення коду Recaptcha2, область нумерується з 0.
    • objects, області, що відповідають розпізнаному вмісту зображення коду Recaptcha2, область також нумерується з 0.
    • type, тип завдання зображення коду Recaptcha2, якщо є кілька областей, то multi.
Ми отримали результат перевірки зображення коду Recaptcha2, спочатку розділивши зображення коду на області, як показано на малюнку:

Можна побачити, що області нумеруються з 0, з результату objects ми отримали 2, 5, 7, нам потрібно просто симулювати натискання на ці три області, щоб пройти перевірку. Крім того, якщо ви хочете згенерувати відповідний код інтеграції, ви можете просто скопіювати згенероване, наприклад, код CURL виглядає так:
curl -X POST 'https://api.acedata.cloud/captcha/recognition/recaptcha2' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "question": "/m/01pns0",
  "image": "iVBORw0KGgoAAAANSUhEUgAAASoAAAEsCAIAAAD7AWllAAAAAX..."
}'
Код інтеграції на Python виглядає так:
import requests

url = "https://api.acedata.cloud/captcha/recognition/recaptcha2"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "question": "/m/01pns0",
    "image": "iVBORw0KGgoAAAANSUhEUgAAASoAAAEsCAIAAAD7AWllAAAAAX..."
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)

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

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

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

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Висновок

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