Saltar al contenido principal
Este documento presentará una forma de integración de la API de reconocimiento de imágenes Recaptcha2, que puede identificar el contenido ingresado por el usuario y la imagen del código de verificación Recaptcha2, y finalmente devolver las coordenadas de las pequeñas imágenes que necesitan ser clicadas para completar la verificación.

Proceso de solicitud

Para usar la API, primero debe ir a la página correspondiente de la API de reconocimiento de imágenes Recaptcha2 para solicitar el servicio correspondiente. Una vez en la página, haga clic en el botón “Acquire”, como se muestra en la imagen: Si aún no ha iniciado sesión o registrado, será redirigido automáticamente a la página de inicio de sesión que lo invita a registrarse e iniciar sesión. Después de iniciar sesión o registrarse, será redirigido automáticamente a la página actual. En la primera solicitud, se le otorgará un límite gratuito que le permitirá usar la API de forma gratuita.

Uso básico

Primero, entendamos la forma básica de uso. Necesitamos capturar la imagen del código de verificación Recaptcha2 del sitio web. La URL del sitio de ejemplo es: https://www.google.com/recaptcha/api2/demo, la página específica se muestra en la imagen a continuación:

Necesitamos hacer clic en la casilla de verificación del código de verificación para que aparezca la imagen del código de verificación. En la imagen anterior, la flecha amarilla apunta a un texto, que es el valor de question que se menciona a continuación. Primero, necesitamos pasar un campo image, que es la imagen específica del código de verificación Recaptcha2, la cual está indicada por la flecha roja en la imagen anterior. Además, la imagen debe ser escalada a un tamaño estándar (100x100, 300x300, 450x450), de esta manera el servicio podrá determinar el tipo de imagen. La compresión de la imagen debe hacerse por su cuenta. Este documento recomienda un sitio de compresión, donde puede ajustar el tamaño y la dimensión de la imagen. El resultado de la compresión se muestra en la imagen a continuación: También necesita ingresar el parámetro de contenido de reconocimiento relacionado con la imagen del código de verificación question. Solo proporcionamos la siguiente tabla de contenido como referencia:

Tabla de contenido en chino

{
  "/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": "楼梯"
}

Tabla de contenido en inglés

{
  "/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 también es lo mismo
  "/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"
}
De lo anterior, podemos establecer el parámetro question como el correspondiente a la boca de incendios /m/01pns0, el contenido específico es el siguiente:

Podemos ver que aquí hemos configurado los encabezados de la solicitud, que incluyen:
  • accept: el formato de respuesta que desea recibir, aquí se establece como application/json, es decir, formato JSON.
  • authorization: la clave para llamar a la API, que puede seleccionarse directamente después de la solicitud.
Además, se configuró el cuerpo de la solicitud, que incluye:
  • image: la imagen del código de verificación codificada en Base64.
  • question: ID de la pregunta, consulte la tabla, comienza con /m/.
Después de seleccionar, puede ver que también se generó el código correspondiente a la derecha, como se muestra en la imagen:

Haga clic en el botón “Try” para realizar la prueba, como se muestra en la imagen anterior, aquí obtuvimos el siguiente resultado:
{
  "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"
  }
}
El resultado devuelto tiene varios campos, que se describen a continuación:
  • solution, el resultado de la verificación después de procesar la imagen del código de verificación Recaptcha2.
    • size, el tamaño de la imagen del código de verificación Recaptcha2.
    • label, el contenido identificado de la imagen del código de verificación Recaptcha2.
    • confidences, la confianza en las áreas de reconocimiento de la imagen del código de verificación Recaptcha2, las áreas comienzan desde 0.
    • objects, las áreas que cumplen con el contenido de reconocimiento de la imagen del código de verificación Recaptcha2, las áreas comienzan desde 0.
    • type, el tipo de tarea de la imagen del código de verificación Recaptcha2, si hay múltiples áreas, es multi.
Podemos ver que obtuvimos el resultado de la verificación de la imagen del código de verificación Recaptcha2. Primero, dividimos la imagen del código de verificación en áreas, como se muestra en la imagen a continuación:

Podemos ver que las áreas comienzan desde 0. En el resultado, de objects obtuvimos 2, 5, 7, solo necesitamos simular clics en estas tres áreas del código de verificación para pasar la verificación. Además, si desea generar el código de integración correspondiente, puede copiarlo directamente, por ejemplo, el código CURL es el siguiente:
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..."
}'
El código de integración en Python es el siguiente:
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)

Manejo de errores

Al llamar a la API, si se encuentra con un error, la API devolverá el código de error y la información correspondiente. Por ejemplo:
  • 400 token_mismatched: Solicitud incorrecta, posiblemente debido a parámetros faltantes o inválidos.
  • 400 api_not_implemented: Solicitud incorrecta, posiblemente debido a parámetros faltantes o inválidos.
  • 401 invalid_token: No autorizado, token de autorización inválido o faltante.
  • 429 too_many_requests: Demasiadas solicitudes, ha superado el límite de tasa.
  • 500 api_error: Error interno del servidor, algo salió mal en el servidor.

Ejemplo de respuesta de error

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

Conclusión

A través de este documento, ha aprendido cómo usar la API de reconocimiento de imágenes Recaptcha2 para que los usuarios ingresen el contenido reconocido y la imagen del captcha Recaptcha2, y finalmente devuelva las coordenadas de la pequeña imagen que necesita ser clicada para completar la verificación. Esperamos que este documento le ayude a integrar y utilizar mejor esta API. Si tiene alguna pregunta, no dude en ponerse en contacto con nuestro equipo de soporte técnico.