Skip to content
API
Funcaptcha

Image Funcaptcha

Aperçu

FunCaptcha (également connu sous le nom de Captcha Arkose Labs) est un type de captcha interactif qui exige que les utilisateurs effectuent des actions telles que faire pivoter des images, glisser-déposer des objets pour résoudre des défis. Il est utilisé par de nombreux sites web majeurs tels que Roblox, Epic Games, Outlook, etc.

🎮

FunCaptcha est conçu à la fois pour protéger contre les bots et créer une expérience "amusante" pour les utilisateurs grâce à des mini-jeux interactifs.

FunCaptcha FunCaptcha FunCaptcha

1. Créer une Tâche

Requête

POST https://api.achicaptcha.com/createTask

Paramètres

Nom du ParamètreType de DonnéesRequis ?Description
clientKeystringouiClé API
task.typestringouiFuncaptchaImageTask
task.subTypestringouiValeur égale à 1
task.imagestringouiBase64 de l'image
task.otherstringouiQuestion
Exemple : "Utilisez les flèches pour faire pivoter l'objet afin qu'il soit orienté dans la direction de la main"

Exemple de Requête

POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
  "clientKey": "VOTRE_API_KEY",
  "task": {
    "type": "FuncaptchaImageTask",
    "subType": "1",
    "image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBD...",
    "other": "Utilisez les flèches pour faire pivoter l'objet afin qu'il soit orienté dans la direction de la main"
  }
}

Réponse

En cas de succès, le serveur renvoie errorId = 0 et taskId

{
  "errorId": 0,
  "taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}

2. Obtenir le Résultat

Requête

POST https://api.achicaptcha.com/getTaskResult

Paramètres

Nom du ParamètreType de DonnéesRequis ?Description
clientKeystringouiClé API
taskIdstringouiTaskId obtenu de (1)

Exemple de Requête

POST /getTaskResult HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
  "clientKey": "VOTRE_API_KEY",
  "taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}

Réponse

{
  "errorId": 0,
  "status": "ready",
  "solution": "1" // Index de l'image à cliquer (Commençant à 0)
}

Explication du Statut

  • errorId = 0 et status = ready : Résolu avec succès, lire le résultat dans solution.answer (tableau d'indices d'images)
  • errorId = 0 et status = processing : Résolution du captcha en cours, attendre 2 secondes et réessayer
  • errorId > 0 : Erreur système, renvoie le code d'erreur et la description de l'erreur

Exemples d'Intégration

import requests
import time
 
def solve_funcaptcha_image(image_base64, question, api_key='YOUR_API_KEY'):
    # Étape 1 : Créer une tâche
    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']
    
    # Étape 2 : Obtenir le résultat
    get_result_url = 'https://api.achicaptcha.com/getTaskResult'
    
    while True:
        time.sleep(2)  # Attendre 2 secondes
        
        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']
        
        # Si status == 'processing', continuer la boucle
 
# Utilisation
image_base64 = '/9j/4AAQSkZJRgABAQAAAQABAAD/2wBD...'  # Base64 de l'image
question = 'Utilisez les flèches pour faire pivoter l\'objet afin qu\'il soit orienté dans la direction de la main'
solution = solve_funcaptcha_image(image_base64, question, 'YOUR_API_KEY')
print('Solution FunCaptcha:', solution)

Codes d'Erreur Courants

Code d'ErreurDescriptionNotes
0succèsSuccès
1en traitementEn traitement
2champs requis manquantsChamps requis manquants, vérifier à nouveau les paramètres
3tâche non prise en chargeType de tâche non pris en charge
4échec de création de tâcheÉchec de création de tâche
5clé client inexistanteLa clé API n'existe pas, vérifier à nouveau la clé API
6solde de compte insuffisantSolde de compte insuffisant, ajouter plus de crédits
7tâche échouée, veuillez créer une nouvelle tâcheTâche échouée, veuillez créer une nouvelle tâche
8ID de tâche inexistantL'ID de tâche n'existe pas

Meilleures Pratiques

Pour obtenir les meilleurs résultats lors de l'utilisation de l'API Achicaptcha pour FunCaptcha Image, suivez ces principes :

1. Traitement de l'Image Base64

  • N'accepte qu'une seule image. Pour les utilisateurs de téléphone, fusionner en une grande image avant l'envoi
  • S'assurer que l'image est correctement encodée au format Base64
  • Supprimer le préfixe data:image/...;base64, s'il est présent
  • Vérifier que la taille de l'image est raisonnable (pas trop grande)

2. Question

  • Fournir la question exacte du défi FunCaptcha
  • La question aide le système à mieux comprendre le type de défi
  • Exemple : "Utilisez les flèches pour faire pivoter l'objet afin qu'il soit orienté dans la direction de la main"

3. Intervalle de Polling

  • Attendre au moins 2 secondes entre les vérifications de résultat
  • Ne pas spammer l'API avec trop de requêtes consécutives
  • Définir un timeout pour éviter les boucles infinies (recommandé 60 secondes pour les tâches d'image)

4. Traitement du Résultat

  • Le résultat renvoyé est un nombre unique (index commençant à 0)
  • Utiliser ce résultat pour soumettre à FunCaptcha

5. Logique de Réessai

  • Implémenter un réessai pour les erreurs temporaires comme ERROR_NO_SLOT_AVAILABLE
  • Utiliser un backoff exponentiel lors du réessai
  • Limiter le nombre maximum de tentatives de réessai

6. Sécurité de la Clé API

  • Ne pas coder en dur la clé API dans le code
  • Utiliser des variables d'environnement
  • Ne pas exposer la clé API côté client

Liens utiles :