Skip to content
API
Captcha Grille
Botion

Botion Grid Captcha

Aperçu

Botion est un captcha de sélection en grille : la page affiche une image de référence et une grille 3×3 de tuiles. Le solveur doit renvoyer quelles cellules de la grille correspondent à la référence (indices de base 0, ordre ligne par ligne : de gauche à droite, de haut en bas).

🔲

Le champ task.image encode deux charges utiles Base64 jointes par | — d'abord l'image d'exemple, puis l'image de grille.

Botion captcha UI example

1. Créer une tâche

Format d'envoi d'image

Image d'exemple Botion request payload (sample | grid)

Image de grille Botion request payload (sample | grid)

Requête

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

Paramètres

Nom du paramètreType de donnéesRequis ?Description
clientKeystringyesAPI key
task.typestringyesGridCaptcha
task.subTypestringyesbotion
task.imagestringyesBASE64_SAMPLE_IMAGE|BASE64_GRID_IMAGE — d'abord l'image d'exemple, puis |, puis l'image de grille 3×3 (toutes deux en Base64, sans préfixe data:)
task.otherstringnotopk|grid_size. Par défaut 3|3 si omis

Exemple de requête

POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "GridCaptcha",
    "subType": "botion",
    "image": "BASE64_SAMPLE_IMAGE|BASE64_GRID_IMAGE",
    "other": "3|3"
  }
}

Réponse

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

{
  "errorId": 0,
  "taskId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

2. Obtenir le résultat

Requête

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

Paramètres

Nom du paramètreType de donnéesRequis ?Description
clientKeystringyesAPI key
taskIdstringyesTaskId obtenu à l'étape (1)

Exemple de requête

POST /getTaskResult HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
  "clientKey": "YOUR_API_KEY",
  "taskId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

Réponse

{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "click": "0,2,5"
  }
}

solution.click est une chaîne d'indices de cellules de base 0 (ordre ligne par ligne) séparés par des virgules à cliquer dans la grille 3×3.

Explication des statuts

  • errorId = 0 et status = ready : Résolu avec succès, lire les indices de cellules dans solution.click
  • errorId = 0 et status = processing : En cours de résolution, attendre 2 secondes et interroger à nouveau
  • errorId > 0 : Erreur système, vérifier errorCode et errorDescription

Exemples d'intégration

import requests
import base64
import time
 
def solve_botion(sample_path, grid_path, api_key='YOUR_API_KEY', other='3|3'):
    with open(sample_path, 'rb') as f:
        sample_b64 = base64.b64encode(f.read()).decode()
    with open(grid_path, 'rb') as f:
        grid_b64 = base64.b64encode(f.read()).decode()
 
    # Étape 1 : Créer la tâche
    create_resp = requests.post(
        'https://api.achicaptcha.com/createTask',
        json={
            'clientKey': api_key,
            'task': {
                'type': 'GridCaptcha',
                'subType': 'botion',
                'image': f'{sample_b64}|{grid_b64}',
                'other': other
            }
        }
    )
    result = create_resp.json()
 
    if result['errorId'] != 0:
        raise Exception(result['errorDescription'])
 
    task_id = result['taskId']
 
    # Étape 2 : Interroger le résultat
    while True:
        time.sleep(2)
        poll_resp = requests.post(
            'https://api.achicaptcha.com/getTaskResult',
            json={'clientKey': api_key, 'taskId': task_id}
        )
        result = poll_resp.json()
 
        if result['errorId'] != 0:
            raise Exception(result['errorDescription'])
 
        if result['status'] == 'ready':
            return result['solution']['click']  # e.g. "0,2,5"
 
# Utilisation
indices = solve_botion('sample.png', 'grid.png', 'YOUR_API_KEY')
print('Cellules à cliquer :', indices)

Codes d'erreur courants

Code d'erreurDescriptionNotes
0successSuccès
1processingEn cours de traitement
2missing required fieldsChamps requis manquants, vérifier les paramètres
3task not supportedType de tâche non supporté
4task creation failedÉchec de création de tâche
5client key does not existAPI key inexistante, vérifier la clé
6insufficient account balanceSolde insuffisant, ajouter des crédits
7task failed, please create a new taskTâche échouée, créer une nouvelle tâche
8task ID does not existID de tâche inexistant

Meilleures pratiques

Pour de meilleurs résultats lors de l'utilisation de l'API Achicaptcha pour Botion Grid Captcha, suivez ces principes :

1. Ordre des images

  • Envoyez toujours l'image d'exemple (référence) en premier, puis |, puis l'image de grille
  • N'incluez pas le préfixe data:image/...;base64, — Base64 brut uniquement
  • Assurez-vous que les deux images sont entièrement chargées et encodées avant l'envoi

2. Paramètre task.other

  • Le format est topk|grid_size (ex. 3|3)
  • Si omis, la valeur par défaut est 3|3, mais définissez-le toujours explicitement pour éviter un comportement inattendu
  • Un grid_size incorrect brisera le mappage d'indices de base 0 dans solution.click

3. Intervalle d'interrogation

  • Attendez au moins 2 secondes entre les vérifications de résultat
  • Ne surchargez pas l'API avec des requêtes consécutives
  • Définissez un délai d'expiration pour éviter les boucles infinies (recommandé : 60 secondes)

4. Traitement des résultats

  • solution.click est une chaîne d'indices de cellules de base 0 (ordre ligne par ligne, de gauche à droite, de haut en bas) séparés par des virgules
  • Divisez par , et convertissez en entiers avant de cliquer sur les cellules de grille correspondantes

5. Logique de nouvelle tentative

  • Implémentez des nouvelles tentatives pour les erreurs temporaires comme ERROR_NO_SLOT_AVAILABLE
  • Utilisez un recul exponentiel lors des nouvelles tentatives
  • Limitez le nombre maximum de tentatives

6. Sécurité de la clé API

  • Ne codez pas en dur votre clé API dans le code source
  • Utilisez des variables d'environnement ou un gestionnaire de secrets
  • N'exposez jamais la clé API côté client

Liens utiles :