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.

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

Requête
POST https://api.achicaptcha.com/createTask
Paramètres
| Nom du Paramètre | Type de Données | Requis ? | Description |
|---|---|---|---|
clientKey | string | oui | Clé API |
task.type | string | oui | GeetestImageCaptchaTask |
task.image | string | oui | Liste d'images base64 suivant le principe : icône_1|icône_2|...|icône_n|fond (Chaînes Base64 séparées par |) |
task.subType | int | oui | Type 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ètre | Type de Données | Requis ? | Description |
|---|---|---|---|
clientKey | string | oui | Clé API |
taskId | string | oui | TaskId 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 = 0etstatus = ready: Résolu avec succès, lire le résultat danssolutionerrorId = 1etstatus = processing: Résolution du captcha en cours, attendre 1-2 secondes et réessayererrorIdautre 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, formatx1,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'Erreur | Description | Notes |
|---|---|---|
| 0 | succès | Succès |
| 1 | en traitement | En traitement |
| 2 | champs requis manquants | Champs requis manquants, vérifier à nouveau les paramètres |
| 3 | tâche non prise en charge | Type de tâche non pris en charge |
| 4 | échec de création de tâche | Échec de création de tâche |
| 5 | clé client inexistante | La clé API n'existe pas, vérifier à nouveau la clé API |
| 6 | solde de compte insuffisant | Solde de compte insuffisant, ajouter plus de crédits |
| 7 | tâche échouée, veuillez créer une nouvelle tâche | Tâche échouée, veuillez créer une nouvelle tâche |
| 8 | ID de tâche inexistant | L'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 = 1pour 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 :