Funcaptcha Image
Visão Geral
O FunCaptcha (também conhecido como Arkose Labs Captcha) é um tipo de captcha interativo que requer que os usuários realizem ações como girar imagens, arrastar e soltar objetos para resolver desafios. É utilizado por muitos sites importantes como Roblox, Epic Games, Outlook, etc.
🎮
O FunCaptcha é projetado tanto para proteger contra bots quanto para criar uma experiência "divertida" para os usuários através de mini-jogos interativos.
1. Criar Solicitação
Solicitação
POST https://api.achicaptcha.com/createTask
Parâmetros
| Nome do parâmetro | Tipo de dados | Obrigatório? | Descrição |
|---|---|---|---|
clientKey | string | sim | Chave da API |
task.type | string | sim | FuncaptchaImageTask |
task.subType | string | sim | Valor igual a 1 |
task.image | string | sim | Base64 da imagem |
task.other | string | sim | Pergunta Exemplo: "Use the arrows to rotate the object to face in the direction of the hand" |
Exemplo de Solicitação
POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
{
"clientKey": "SUA_CHAVE_API",
"task": {
"type": "FuncaptchaImageTask",
"subType": "1",
"image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBD...",
"other": "Use the arrows to rotate the object to face in the direction of the hand"
}
}Resposta
Em caso de sucesso, o servidor retorna errorId = 0 e taskId
{
"errorId": 0,
"taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}2. Obter Resultado
Solicitação
POST https://api.achicaptcha.com/getTaskResult
Parâmetros
| Nome do parâmetro | Tipo de dados | Obrigatório? | Descrição |
|---|---|---|---|
clientKey | string | sim | Chave da API |
taskId | string | sim | TaskId obtido em (1) |
Exemplo de Solicitação
POST /getTaskResult HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
{
"clientKey": "SUA_CHAVE_API",
"taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}Resposta
{
"errorId": 0,
"status": "ready",
"solution": "1" // Índice da imagem para clicar (Começando do 0)
}Explicação do Status
errorId = 0estatus = ready: Resolvido com sucesso, leia o resultado emsolution.answer(array de índices de imagem)errorId = 0estatus = processing: Resolvendo captcha, aguarde 2 segundos e tente novamenteerrorId > 0: Erro do sistema, retorna código de erro e descrição do erro
Exemplos de Integração
import requests
import time
def solve_funcaptcha_image(image_base64, question, api_key='SUA_CHAVE_API'):
# Passo 1: Criar tarefa
create_task_url = 'https://api.achicaptcha.com/createTask'
create_task_payload = {
'clientKey': api_key,
'task': {
'type': 'FuncaptchaImageTask',
'subType': '1',
'image': image_base64,
'other': question
}
}
response = requests.post(create_task_url, json=create_task_payload)
result = response.json()
if result['errorId'] != 0:
raise Exception(result['errorDescription'])
task_id = result['taskId']
# Passo 2: Obter resultado
get_result_url = 'https://api.achicaptcha.com/getTaskResult'
while True:
time.sleep(2) # Aguardar 2 segundos
get_result_payload = {
'clientKey': api_key,
'taskId': task_id
}
response = requests.post(get_result_url, json=get_result_payload)
result = response.json()
if result['errorId'] != 0:
raise Exception(result['errorDescription'])
if result['status'] == 'ready':
return result['solution']
# Se status == 'processing', continuar o loop
# Uso
image_base64 = '/9j/4AAQSkZJRgABAQAAAQABAAD/2wBD...' # Base64 da imagem
question = 'Use the arrows to rotate the object to face in the direction of the hand'
solution = solve_funcaptcha_image(image_base64, question, 'SUA_CHAVE_API')
print('Solução do FunCaptcha:', solution)Códigos de Erro Comuns
| Código de Erro | Descrição | Notas |
|---|---|---|
| 0 | success | Sucesso |
| 1 | processing | Processando |
| 2 | missing required fields | Campos obrigatórios ausentes, verifique os parâmetros novamente |
| 3 | task not supported | Tipo de tarefa não suportado |
| 4 | task creation failed | Falha na criação da tarefa |
| 5 | client key does not exist | A chave da API não existe, verifique a chave novamente |
| 6 | insufficient account balance | Saldo da conta insuficiente, adicione mais créditos |
| 7 | task failed, please create a new task | Tarefa falhou, por favor crie uma nova tarefa |
| 8 | task ID does not exist | ID da tarefa não existe |
Melhores Práticas
Para obter os melhores resultados ao usar a API Achicaptcha para FunCaptcha Image, siga estes princípios:
1. Processamento de Imagem Base64
- Aceita apenas uma única imagem. Para usuários de celular, combine em uma imagem grande antes de enviar
- Garanta que a imagem esteja devidamente codificada no formato Base64
- Remova o prefixo
data:image/...;base64,se presente - Verifique se o tamanho da imagem é razoável (não muito grande)
2. Pergunta (Question)
- Forneça a pergunta exata do desafio FunCaptcha
- A pergunta ajuda o sistema a entender melhor o tipo de desafio
- Exemplo: "Use the arrows to rotate the object to face in the direction of the hand"
3. Intervalo de Polling
- Aguarde pelo menos 2 segundos entre as verificações de resultado
- Não inunde a API com muitas solicitações consecutivas
- Defina um tempo limite (timeout) para evitar loops infinitos (recomendado 60 segundos para tarefas de imagem)
4. Processamento do Resultado
- O resultado retornado é um número único (índice começando do 0)
- Use este resultado para enviar ao FunCaptcha
5. Lógica de Tentativa (Retry)
- Implemente tentativas para erros temporários como
ERROR_NO_SLOT_AVAILABLE - Use backoff exponencial ao tentar novamente
- Limite o número máximo de tentativas
6. Segurança da Chave API
- Não codifique a chave API diretamente no código
- Use variáveis de ambiente
- Não exponha a chave API no lado do cliente (client-side)
Links Úteis: