Skip to content
API
Captcha do Tiktok

TikTok Captcha

Visão Geral

TikTok Captcha é um sistema de verificação usado pelo TikTok para proteger a plataforma contra bots e spam. Este captcha geralmente aparece ao registrar uma nova conta, fazer login ou quando atividade incomum é detectada.

🎵

Atualmente, extensões estão disponíveis para todos os 4 tipos de captcha em navegadores. Por favor, envie mensagem ao administrador para receber a extensão. Fornece todos os tipos de captcha para navegadores, emuladores e telefones.

Captcha de Rotação

1. Criar Tarefa

Requisição

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

Parâmetros

ParâmetroTipo de DadoObrigatório?Descrição
clientKeystringsimChave API
task.typestringsimTiktokCaptchaTask
task.imagestringsimBase64 da imagem
task.subTypeintsimTipo de captcha: 0 (Captcha de rotação no navegador), 1 (Captcha deslizante), 2 (Selecionar 2 objetos similares), 3 (Captcha de rotação no telefone, emulador), 5 (Selecionar objetos que satisfazem a pergunta)
task.otherstringnãoPara subType 5, este campo é obrigatório. A pergunta do captcha, por exemplo: "Qual destes objetos relincha"

Exemplo de Requisição

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

Response

Em caso de sucesso, o servidor retornará errorId = 0 e taskId

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

Exemplos de Imagens para Enviar ao Servidor de Resolução de Captcha

No navegador:

Field image = base64_outer_image|base64_inner_image

Rotate Captcha - Outer Image
Rotate Captcha - Inner Image

No emulador, telefone:

Campo image é base64 de 1 imagem, recortada para conter apenas a porção do captcha de rotação (com ambos os círculos, pode ter espaço em branco extra nas margens, comprimento da margem é flexível)

Captcha de Rotação no telefone

2. Obter Resultado

Requisição

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

Parâmetros

ParâmetroTipo de DadoObrigatório?Descrição
clientKeystringsimChave API do site
taskIdstringsimTaskId do passo (1)

Exemplo de Requisição

POST /getTaskResult HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
	"clientKey": "Your API_KEY",
	"taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}

Response

{
  "errorId": 0,
  "status": "ready",
  "solution": "x1,y1,x2,y2"
}

Significado da Resposta

  • errorId = 0 e status = ready: Resolvido com sucesso, leia o resultado em solution
  • errorId = 1 e status = processing: Captcha está sendo resolvido, aguarde 1-2 segundos e tente novamente
  • errorId diferente de 0 e 1: Erro do sistema, código de erro e descrição fornecidos
  • solution:
    • Para captcha de rotação no navegador: retorna o comprimento da distância de arrasto do controle deslizante
    • Para captcha de rotação no emulador, telefone: retorna o ângulo de rotação, o usuário calcula a distância de arrasto usando a fórmula: Distância de arrasto = (L / 180) * solution (onde L é a distância da posição inicial até a posição final do controle deslizante, medida a partir do centro do controle deslizante)
    • Para captcha deslizante: retorna a coordenada do eixo x para arrastar
    • Para captcha de selecionar 2 objetos similares: retorna par de coordenadas para clicar na imagem "x1,y1,x2,y2"
    • Para captcha de selecionar múltiplos objetos que satisfazem a pergunta: retorna coordenadas para clicar na imagem "x1,y1,x2,y2,x3,y3,..."

Exemplos de Integração

import requests
import time
import base64
 
def solve_tiktok_captcha(image_base64, sub_type, question=None, api_key='SUA_CHAVE_API'):
    # Passo 1: Criar tarefa
    task = {
        'type': 'TiktokCaptchaTask',
        'image': image_base64,
        'subType': sub_type
    }
    
    # Se subType = 5, adicionar campo other (pergunta)
    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', 'Unknown error'))
    
    task_id = result['taskId']
    
    # Passo 2: Obter resultado
    get_result_url = 'https://api.achicaptcha.com/getTaskResult'
    
    while True:
        time.sleep(2)  # Aguardar 2 segundos
        
        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':
            # Continuar aguardando
            continue
        
        # Outros erros
        raise Exception(result.get('errorDescription', 'Erro desconhecido'))
 
# Uso - Exemplo com captcha de selecionar 2 objetos (subType = 2)
with open('captcha_image.png', 'rb') as f:
    image_base64 = base64.b64encode(f.read()).decode('utf-8')
 
sub_type = 2  # 0: Rotação navegador, 1: Deslizante, 2: Selecionar 2 objetos, 3: Rotação telefone, 5: Selecionar por pergunta
solution = solve_tiktok_captcha(image_base64, sub_type, api_key='SUA_CHAVE_API')
print('Solução do captcha TikTok:', solution)  # "x1,y1,x2,y2"

Códigos de Erro Comuns

Códigos de Erro ao Criar Tarefa

Código de ErroDescriçãoObservações
0sucessoTarefa criada com sucesso
2campos obrigatórios ausentesCampos obrigatórios ausentes, verifique os parâmetros (image, subType)
3tarefa não suportadaTipo de tarefa não suportado
4falha na criação da tarefaFalha na criação da tarefa, tente novamente mais tarde
5chave do cliente não existeChave API não existe, verifique sua chave API
6saldo da conta insuficienteSaldo da conta insuficiente, adicione mais créditos

Códigos de Erro ao Obter Resultado

Código de ErroDescriçãoObservações
0sucessoSucesso, leia o resultado no campo solution
1processandoProcessando, aguarde 1-2 segundos e envie a requisição novamente
5chave do cliente não existeChave API não existe, verifique sua chave API
7tarefa falhou, por favor crie uma nova tarefaTarefa falhou, por favor crie uma nova tarefa
8ID da tarefa não existeID da tarefa não existe ou expirou

Melhores Práticas

Para obter os melhores resultados ao usar a API Achicaptcha, siga estes princípios:

1. Identificar o Tipo de Captcha e subType Correto

  • TikTok usa vários tipos de captcha
  • Detecte com precisão o tipo de captcha sendo exibido
  • Envie o subType correto na requisição:
    • 0: Captcha de rotação no navegador
    • 1: Captcha deslizante
    • 2: Selecionar 2 objetos similares
    • 3: Captcha de rotação no telefone, emulador
    • 5: Selecionar objetos que satisfazem a pergunta (requer campo other)

2. Formatar Imagens Corretamente

  • Captcha de rotação no navegador: Envie base64_outer_image|base64_inner_image
  • Captcha de rotação no telefone/emulador: Envie base64 de 1 imagem (contendo apenas a porção do captcha de rotação)
  • Outros tipos: Envie base64 da imagem correspondente
  • Certifique-se de que as imagens estão codificadas no formato base64 adequado

3. Manipular Resultados Adequadamente

  • Para captcha de rotação no emulador/telefone: Calcule a distância de arrasto usando a fórmula: Distância de arrasto = (L / 180) * solution
    Como medir L para arrasto do captcha de rotação
    Meça L conforme mostrado acima: o comprimento para o cálculo do arrasto
  • Para captcha de selecionar objetos: Analise a string de coordenadas "x1,y1,x2,y2" para obter os pontos de clique
  • Para captcha deslizante: Use a coordenada x retornada para arrastar o controle deslizante

4. Intervalo de Polling

  • Aguarde pelo menos 1-2 segundos entre as verificações de resultado
  • Não sobrecarregue a API com muitas requisições consecutivas
  • Tenha um timeout para evitar loops infinitos (recomendado 120 segundos)

5. Tratamento de Erros

  • Verifique errorId = 1 e status = processing para continuar aguardando
  • Trate outros erros adequadamente
  • Implemente lógica de nova tentativa para erros temporários

6. Segurança da Chave API

  • Não codifique a chave API diretamente no código
  • Use variáveis de ambiente
  • Não exponha a chave API no lado do cliente

Links Úteis: