Перейти к основному содержанию
В этой статье будет представлена инструкция по интеграции 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. Если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь обращаться в нашу техническую поддержку.