Saltar para o conteúdo principal
Este documento apresentará uma instrução de integração da API de Reconhecimento de Imagem Recaptcha2, que pode identificar o conteúdo inserido pelo usuário e a imagem do captcha Recaptcha2, retornando as coordenadas das pequenas imagens que precisam ser clicadas para completar a verificação.

Processo de Solicitação

Para usar a API, você precisa primeiro acessar a página correspondente da API de Reconhecimento de Imagem Recaptcha2 para solicitar o serviço correspondente. Após acessar a página, clique no botão “Acquire”, como mostrado na imagem abaixo: Se você ainda não estiver logado ou registrado, será redirecionado automaticamente para a página de login, convidando-o a se registrar e fazer login. Após o registro e login, você será redirecionado de volta para a página atual. Na primeira solicitação, haverá um crédito gratuito disponível, permitindo o uso gratuito da API.

Uso Básico

Primeiro, vamos entender a forma básica de uso. Precisamos capturar a imagem do captcha Recaptcha2 do site. O URL do site de exemplo é: https://www.google.com/recaptcha/api2/demo, a página específica é mostrada na imagem abaixo:

Precisamos clicar na caixa de seleção do captcha para que a imagem do captcha apareça. Na imagem acima, a seta amarela aponta para um texto, que é o valor do question mencionado a seguir. Primeiro, precisamos passar um campo image, que é a imagem específica do captcha Recaptcha2, indicada pela seta vermelha na imagem acima. Além disso, a imagem deve ser redimensionada para um tamanho padrão (100x100, 300x300, 450x450), para que o serviço possa determinar o tipo da imagem. A compressão da imagem deve ser feita por você mesmo. Este documento recomenda um site de compressão, onde você pode redimensionar e comprimir a imagem. O resultado da compressão é mostrado na imagem abaixo: Além disso, você precisa inserir o parâmetro de conteúdo de reconhecimento relacionado à imagem do captcha, question. Abaixo está uma tabela de conteúdo que pode ser usada como referência:

Tabela de Conteúdo em Chinês

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

Tabela de Conteúdo em 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 também é o mesmo
  "/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"
}
Como mencionado acima, definimos o parâmetro question como o correspondente ao hidrante de incêndio /m/01pns0, com o conteúdo específico mostrado abaixo:

Podemos ver que configuramos os Headers da Requisição, incluindo:
  • accept: o formato de resposta desejado, aqui preenchido como application/json, ou seja, formato JSON.
  • authorization: a chave da API, que pode ser selecionada diretamente após a solicitação.
Além disso, configuramos o Corpo da Requisição, incluindo:
  • image: a imagem do captcha codificada em Base64.
  • question: ID da pergunta, consulte a tabela, começando com /m/.
Após a seleção, você pode notar que o código correspondente foi gerado à direita, como mostrado na imagem abaixo:

Clique no botão “Try” para realizar o teste, como mostrado na imagem acima, e assim obtemos o seguinte 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"
  }
}
O resultado retornado contém vários campos, descritos a seguir:
  • solution, o resultado da verificação após o processamento da imagem do captcha Recaptcha2.
    • size, o tamanho da imagem do captcha Recaptcha2.
    • label, o conteúdo reconhecido da imagem do captcha Recaptcha2.
    • confidences, a confiança nas áreas reconhecidas da imagem do captcha Recaptcha2, começando do 0.
    • objects, as áreas que atendem ao conteúdo reconhecido da imagem do captcha Recaptcha2, começando do 0.
    • type, o tipo da tarefa da imagem do captcha Recaptcha2, sendo multi quando há várias áreas.
Podemos ver que obtivemos o resultado da verificação da imagem do captcha Recaptcha2. Primeiro, dividimos a imagem do captcha em áreas, como mostrado na imagem abaixo:

Podemos ver que as áreas começam do 0. A partir do resultado objects, obtemos 2, 5, 7, e precisamos simular o clique nessas três áreas do captcha para passar a verificação. Além disso, se você quiser gerar o código de integração correspondente, pode copiá-lo diretamente, por exemplo, o código CURL é o seguinte:
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..."
}'
O código de integração em Python é o seguinte:
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)

Tratamento de Erros

Ao chamar a API, se ocorrer um erro, a API retornará o respectivo código de erro e mensagem. Por exemplo:
  • 400 token_mismatched: Solicitação inválida, possivelmente devido a parâmetros ausentes ou inválidos.
  • 400 api_not_implemented: Solicitação inválida, possivelmente devido a parâmetros ausentes ou inválidos.
  • 401 invalid_token: Não autorizado, token de autorização inválido ou ausente.
  • 429 too_many_requests: Muitas solicitações, você excedeu o limite de taxa.
  • 500 api_error: Erro interno do servidor, algo deu errado no servidor.

Exemplo de Resposta de Erro

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

Conclusão

Através deste documento, você já entendeu como usar a API de reconhecimento de imagem Recaptcha2 para permitir que os usuários insiram o conteúdo reconhecido e a imagem do captcha Recaptcha2, retornando finalmente as coordenadas da pequena imagem que precisa ser clicada para completar a verificação. Esperamos que este documento possa ajudá-lo a integrar e usar melhor essa API. Se tiver alguma dúvida, entre em contato com nossa equipe de suporte técnico.