Skip to content
API
Captcha Geetest

Captcha Image Geetest

Aperçu

Geetest est un système de captcha populaire en Chine et dans les pays asiatiques, utilisant des défis interactifs tels que le glissement de puzzle et la reconnaissance d'images. Nous fournissons des services pour résoudre tous les types de Geetest Image (Geetest v3, Geetest v4, ...) sur les navigateurs, simulateurs et fermes de téléphones.

🧩

Cette documentation vous guide dans la gestion du Captcha Geetest qui exige que les utilisateurs identifient et cliquent sur des objets en séquence sur l'image de fond. Pour le captcha de type glissement, veuillez suivre les instructions pour le type glissement Captcha Tiktok.

Captcha Geetest

1. Créer une Tâche

Format de Soumission d'Image

Séparer les images d'icônes et les images de fond comme indiqué ci-dessous Exemple Image Clic

Requête

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

Paramètres

Nom du ParamètreType de DonnéesRequis ?Description
clientKeystringouiClé API
task.typestringouiGeetestImageCaptchaTask
task.imagestringouiListe d'images base64 suivant le principe : icône_1|icône_2|...|icône_n|fond (Chaînes Base64 séparées par |)
task.subTypeintouiType de captcha : 7 : Sélectionner les objets dans l'ordre

Exemple de Requête

POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
  "clientKey": "VOTRE_API_KEY",
  "task": {
    "type": "GeetestImageCaptchaTask",
    "image": "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT...|/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT...|/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT...",
    "subType": 7
  }
}

Remarque : Le paramètre image doit être une chaîne base64 d'images d'icônes et de fond, séparées par |. Ordre : icône_1|icône_2|icône_3|...|fond

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": "x1,y1,x2,y2,x3,y3"
}

Explication du Statut

  • errorId = 0 et status = ready : Résolu avec succès, lire le résultat dans solution
  • errorId = 1 et status = processing : Résolution du captcha en cours, attendre 1-2 secondes et réessayer
  • errorId autre que 0 et 1 : Erreur système, renvoie le code d'erreur et la description

Signification du Résultat

  • solution : Renvoie les coordonnées pour cliquer sur le captcha, format x1,y1,x2,y2,x3,y3,...
    • Chaque paire (x, y) représente les coordonnées en pixels pour cliquer sur l'image de fond
    • L'ordre de clic correspond à l'ordre des icônes affichées

Exemples d'Intégration

import requests
import time
 
def solve_geetest_image(base64_images, sub_type=7, api_key='YOUR_API_KEY'):
    # base64_images : "icône1|icône2|icône3|fond" - chaîne base64 séparée par |
    
    # Étape 1 : Créer une tâche
    create_task_url = 'https://api.achicaptcha.com/createTask'
    create_task_payload = {
        'clientKey': api_key,
        'task': {
            'type': 'GeetestImageCaptchaTask',
            'image': base64_images,
            'subType': sub_type
        }
    }
    
    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'] not in [0, 1]:
            raise Exception(result['errorDescription'])
        
        if result['status'] == 'ready':
            return result['solution']  # "x1,y1,x2,y2,x3,y3"
        
        # Si status == 'processing', continuer la boucle
 
# Utilisation
# Supposons que vous avez des images base64
icon1_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
icon2_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
icon3_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
background_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
 
base64_images = f'{icon1_base64}|{icon2_base64}|{icon3_base64}|{background_base64}'
solution = solve_geetest_image(base64_images, 7, 'YOUR_API_KEY')
print('Coordonnées Geetest:', solution)  # "x1,y1,x2,y2,x3,y3"
 
# Analyser les coordonnées et utiliser
coords = [int(c) for c in solution.split(',')]
for i in range(0, len(coords), 2):
    x, y = coords[i], coords[i + 1]
    print(f'Cliquer à ({x}, {y})')
    # Effectuer un clic aux coordonnées (x, y)

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 Geetest Image, suivez ces principes :

1. Préparer les Images au Format Correct

  • Toutes les images doivent être encodées en base64
  • Ordre des images : icône_1|icône_2|...|icône_n|fond
  • Les images Base64 sont séparées par le caractère |
  • S'assurer que l'image de fond est la dernière dans la chaîne

2. Utiliser les Résultats Correctement

  • Le résultat renvoyé est une chaîne de coordonnées : x1,y1,x2,y2,x3,y3,...
  • Chaque paire (x, y) correspond aux coordonnées en pixels sur l'image de fond
  • L'ordre de clic correspond à l'ordre des icônes affichées
  • Cliquer précisément aux coordonnées pour compléter le captcha

3. Intervalle de Polling

  • Attendre au moins 1-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)

4. Gestion des Erreurs

  • Vérifier errorId = 1 pour le statut de traitement
  • Réessayer pour les erreurs temporaires (errorId = 6, 7)
  • Créer une nouvelle tâche si la tâche actuelle échoue
  • Limiter le nombre maximum de tentatives de réessai

5. 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
  • Effectuer les appels API depuis le backend/serveur

Liens utiles :