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.

1. Créer une tâche
Format d'envoi d'image
Image d'exemple

Image de grille

Requête
POST https://api.achicaptcha.com/createTask
Paramètres
| Nom du paramètre | Type de données | Requis ? | Description |
|---|---|---|---|
clientKey | string | yes | API key |
task.type | string | yes | GridCaptcha |
task.subType | string | yes | botion |
task.image | string | yes | BASE64_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.other | string | no | topk|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ètre | Type de données | Requis ? | Description |
|---|---|---|---|
clientKey | string | yes | API key |
taskId | string | yes | TaskId 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 = 0etstatus = ready: Résolu avec succès, lire les indices de cellules danssolution.clickerrorId = 0etstatus = processing: En cours de résolution, attendre 2 secondes et interroger à nouveauerrorId > 0: Erreur système, vérifiererrorCodeeterrorDescription
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'erreur | Description | Notes |
|---|---|---|
| 0 | success | Succès |
| 1 | processing | En cours de traitement |
| 2 | missing required fields | Champs requis manquants, vérifier les paramètres |
| 3 | task not supported | Type de tâche non supporté |
| 4 | task creation failed | Échec de création de tâche |
| 5 | client key does not exist | API key inexistante, vérifier la clé |
| 6 | insufficient account balance | Solde insuffisant, ajouter des crédits |
| 7 | task failed, please create a new task | Tâche échouée, créer une nouvelle tâche |
| 8 | task ID does not exist | ID 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_sizeincorrect brisera le mappage d'indices de base 0 danssolution.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.clickest 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 :