Skip to content
API
Captcha Tiktok

Captcha TikTok

Aperçu

Le Captcha TikTok est un système de vérification utilisé par TikTok pour protéger la plateforme contre les bots et le spam. Ce captcha apparaît généralement lors de l'inscription d'un nouveau compte, de la connexion ou lorsqu'une activité inhabituelle est détectée.

🎵

Actuellement, des extensions sont disponibles pour les 4 types de captcha sur les navigateurs. Veuillez contacter l'administrateur par message pour recevoir l'extension. Fournit tous les types de captcha pour les navigateurs, émulateurs et téléphones.

Captcha Rotation

1. Créer une Tâche

Requête

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

Paramètres

ParamètreType de DonnéesRequis ?Description
clientKeystringouiClé API
task.typestringouiTiktokCaptchaTask
task.imagestringouiBase64 de l'image
task.subTypeintouiType de captcha : 0 (Captcha rotation sur navigateur), 1 (Captcha curseur), 2 (Sélectionner 2 objets similaires), 3 (Captcha rotation sur téléphone, émulateur), 5 (Sélectionner les objets qui satisfont la question)
task.otherstringnonPour subType 5, ce champ est requis. La question du captcha, par exemple : "Lequel de ces objets hennit"

Exemple de Requête

POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
	"clientKey": "VOTRE_API_KEY",
	"task": {
		"type": "TiktokCaptchaTask",
		"image": "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...(10460 chars omitted)...V7Q4rk8i3IvOS/eZexY2wFyvTDXyzAWT5qNlUXkiKiAJVRdUYlkBFEQQRQEC2yAghRCyCWQSyBZAsgWQW1kCyCoCCoqIqoFkVCiCKXVC3ooCKKKxIRkhCxZw+Zj8FjMPpFmJjHRYdL69ad0OidK+5LIM1V6WM3fQBZRD5TbagWWbCZZKsVRiqqCIIindVil0UJQEQ5XRV5oiHZA3sgKBzRBFSyIHS6AgWRQa3RCyAgHZFUahA5ofAdkVLoKgnOyKE6KgoBQUDVGSE2CBYWUVjyRU5qMtgAKCAAqKoGqErZVFCrHYAqjIBRAKoiAqj//Z",
		"subType": 2
	}
}

Réponse

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

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

Exemples d'Images à Envoyer au Serveur de Résolution de Captcha

Sur navigateur :

Champ image = base64_image_externe|base64_image_interne

Captcha Rotation - Image Externe
Captcha Rotation - Image Interne

Sur émulateur, téléphone :

Le champ image est le base64 de 1 image, recadrée pour ne contenir que la partie du captcha rotation (avec les deux cercles, peut avoir un espace blanc supplémentaire sur les marges, la longueur de la marge est flexible)

Captcha Rotation sur téléphone

2. Obtenir le Résultat

Requête

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

Paramètres

ParamètreType de DonnéesRequis ?Description
clientKeystringouiClé API du site web
taskIdstringouiTaskId de l'étape (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"
}

Signification de la Réponse

  • errorId = 0 et status = ready : Résolu avec succès, lire le résultat dans solution
  • errorId = 1 et status = processing : Le captcha est en cours de résolution, attendre 1-2 secondes et réessayer
  • errorId autre que 0 et 1 : Erreur système, code d'erreur et description fournis
  • solution :
    • Pour captcha rotation sur navigateur : renvoie la longueur de la distance de glissement du curseur
    • Pour captcha rotation sur émulateur, téléphone : renvoie l'angle de rotation, l'utilisateur calcule la distance de glissement en utilisant la formule : Distance de glissement = (L / 180) * solution (où L est la distance de la position de départ à la position finale du curseur, mesurée depuis le centre du curseur)
    • Pour captcha curseur : renvoie la coordonnée de l'axe x pour glisser
    • Pour captcha sélection 2 objets similaires : renvoie une paire de coordonnées pour cliquer sur l'image "x1,y1,x2,y2"
    • Pour captcha sélection objets multiples qui satisfont la question : renvoie les coordonnées pour cliquer sur l'image "x1,y1,x2,y2,x3,y3,..."

Exemples d'Intégration

import requests
import time
import base64
 
def solve_tiktok_captcha(image_base64, sub_type, question=None, api_key='YOUR_API_KEY'):
    # Étape 1 : Créer une tâche
    task = {
        'type': 'TiktokCaptchaTask',
        'image': image_base64,
        'subType': sub_type
    }
    
    # Si subType = 5, ajouter le champ other (question)
    if sub_type == 5 and question:
        task['other'] = question
    
    create_task_url = 'https://api.achicaptcha.com/createTask'
    create_task_payload = {
        'clientKey': api_key,
        'task': task
    }
    
    response = requests.post(create_task_url, json=create_task_payload)
    result = response.json()
    
    if result['errorId'] != 0:
        raise Exception(result.get('errorDescription', 'Erreur inconnue'))
    
    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 and result.get('status') == 'ready':
            return result['solution']
        
        if result['errorId'] == 1 and result.get('status') == 'processing':
            # Continuer à attendre
            continue
        
        # Autres erreurs
        raise Exception(result.get('errorDescription', 'Erreur inconnue'))
 
# Utilisation - Exemple avec captcha sélection 2 objets (subType = 2)
with open('captcha_image.png', 'rb') as f:
    image_base64 = base64.b64encode(f.read()).decode('utf-8')
 
sub_type = 2  # 0: Rotation navigateur, 1: Curseur, 2: Sélection 2 objets, 3: Rotation téléphone, 5: Sélection par question
solution = solve_tiktok_captcha(image_base64, sub_type, api_key='YOUR_API_KEY')
print('Solution captcha TikTok:', solution)  # "x1,y1,x2,y2"

Codes d'Erreur Courants

Codes d'Erreur lors de la Création de Tâche

Code d'ErreurDescriptionNotes
0succèsTâche créée avec succès
2champs requis manquantsChamps requis manquants, vérifier les paramètres (image, subType)
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, réessayer plus tard
5clé client inexistanteLa clé API n'existe pas, vérifier votre clé API
6solde de compte insuffisantSolde de compte insuffisant, ajouter plus de crédits

Codes d'Erreur lors de l'Obtention du Résultat

Code d'ErreurDescriptionNotes
0succèsSuccès, lire le résultat dans le champ solution
1en traitementEn traitement, attendre 1-2 secondes et renvoyer la requête
5clé client inexistanteLa clé API n'existe pas, vérifier votre clé API
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 ou a expiré

Meilleures Pratiques

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

1. Identifier le Type de Captcha et le subType Correct

  • TikTok utilise différents types de captcha
  • Détecter avec précision le type de captcha affiché
  • Envoyer le bon subType dans la requête :
    • 0 : Captcha rotation sur navigateur
    • 1 : Captcha curseur
    • 2 : Sélectionner 2 objets similaires
    • 3 : Captcha rotation sur téléphone, émulateur
    • 5 : Sélectionner les objets qui satisfont la question (nécessite le champ other)

2. Formater les Images Correctement

  • Captcha rotation sur navigateur : Envoyer base64_image_externe|base64_image_interne
  • Captcha rotation sur téléphone/émulateur : Envoyer le base64 de 1 image (contenant uniquement la partie du captcha rotation)
  • Autres types : Envoyer le base64 de l'image correspondante
  • S'assurer que les images sont encodées au format base64 approprié

3. Gérer les Résultats Correctement

  • Pour captcha rotation sur émulateur/téléphone : Calculer la distance de glissement avec la formule : Distance de glissement = (L / 180) * solution
    Comment mesurer L pour le glissement captcha rotation
    Mesurez L comme ci-dessus : la longueur à utiliser pour le calcul du glissement
  • Pour captcha sélection d’objets : Analyser la chaîne de coordonnées "x1,y1,x2,y2" pour obtenir les points de clic
  • Pour captcha curseur : Utiliser la coordonnée x renvoyée pour déplacer le curseur

4. 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
  • Avoir un timeout pour éviter les boucles infinies (recommandé 120 secondes)

5. Gestion des Erreurs

  • Vérifier errorId = 1 et status = processing pour continuer à attendre
  • Gérer les autres erreurs de manière appropriée
  • Implémenter une logique de réessai pour les erreurs temporaires

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 :