O que é o Tencent Captcha (TenDI) e como resolvê-lo?
Tencent Captcha é um sistema de proteção de automação desenvolvido pela Tencent. Ele é amplamente usado em várias plataformas on-line, como compras on-line, mídia social e serviços financeiros, para proteger contra spam, fraude e outros tipos de abuso.
O principal tipo de verificador do Tencent Captcha é um controle deslizante, que solicita que o usuário mova o controle deslizante para que os elementos do quebra-cabeça se juntem:

Existem também captchas gráficos, nos quais você precisa clicar nos elementos desejados em sequência:

Alternativamente, o usuário é solicitado a descriptografar o captcha de áudio:

A Tencent também oferece verificação inteligente (ou "verificação inteligente"), semelhante ao que muitos outros sistemas oferecem, como o reCAPTCHA do Google. Essa verificação inteligente usa algoritmos de aprendizado de máquina e análise do comportamento do usuário para determinar se uma ação em um recurso da Web é genuína ou um ataque automatizado.
CapMonster Cloud ajuda a superar a maioria dos diferentes tipos de captchas, inclusive o Tencent Captcha. Para fazer isso, você precisa enviar uma solicitação ao servidor no formato JSON usando o método POST, que deve ter a seguinte aparência:
{
"clientKey": "dce6bcbb1a728ea8d871de6d169a2057",
"task": {
"type": "CustomTask",
"class": "TenDI",
"websiteURL": "https://domain.com",
"websiteKey": "189123456",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/123.0.0.0 Safari/537.36"
}
}
Parâmetros usados na consulta:
O exemplo de resposta no caso de uma solução bem-sucedida deve ser algo como isto (também no formato JSON):
{
"errorId":0,
"taskId":407533072
}
Um exemplo de obtenção do resultado de uma solução:
O getTaskResult é usado:
{
"errorId":0,
"status": "ready",
"solução": {
"data": {
"randstr": "@EcL",
"ticket": "tr03lHU nuW3neJZu.....7LrIbs*"
},
"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/123.0.0.0 Safari/537.36"
}
}
}
randstré uma string aleatória que faz parte da solução Tencent Captcha, usada para identificar e validar a solução de captcha.
ticket é um identificador exclusivo, que também faz parte da solução de captcha, usado para validar a correção da solução de captcha e obter acesso a conteúdo ou funcionalidade protegidos.
Para enviar uma solicitação ao servidor para solução automática, você precisa saber com antecedência o identificador exclusivo do captcha. É muito fácil encontrá-lo: carregue a página necessária com o captcha em seu navegador, chame o próprio captcha e abra as Ferramentas do desenvolvedor. Na guia Rede, entre as consultas, você deve encontrar uma linha que contenha a palavra-chave "aid" - esse é o identificador do captcha na página em questão. Ele tem a seguinte aparência:

Aqui estão alguns exemplos de scripts para resolver esse tipo de captcha no servidor CapMonster Cloud em JavaScript e Python.
// Criando uma tarefa a ser enviada ao servidor
função async solveTencentCaptcha(apiKey, pageUrl, captchaKey) {
const solveUrl = 'https://api.capmonster.cloud/createTask';
// Preparação de dados para a tarefa
const taskData = {
clientKey: apiKey,
task: {
type: 'CustomTask',
classe: 'TenDI',
websiteURL: pageUrl,
websiteKey: captchaKey,
userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/123.0.0.0 Safari/537.36'
}
};
try {
// Enviando uma solicitação POST para criar uma tarefa
const responseData = await postJson(solveUrl, taskData);
// Extração do ID do Captcha
return responseData.taskId;
} catch (error) {
Tratamento de erros ao enviar uma solicitação
console.error('Erro ao enviar uma solicitação:', error.message);
retorne null;
}
}
função async getCaptchaSolution(apiKey, taskId) {
// URL para solicitar os resultados da tarefa
const resultUrl = 'https://api.capmonster.cloud/getTaskResult';
// Preparação de dados para solicitação de resultados
const resultData = { clientKey: apiKey, taskId: taskId };
// Ciclo para consulta de resultados de tarefas com um limite de 15 tentativas
for (let i = 0; i < 15; i++) {
try {
Enviando uma solicitação POST para obter os resultados da tarefa
const responseData = await postJson(resultUrl, resultData);
// Verificando o status da tarefa
} catch (error) {
// Tratamento de erros na obtenção de resultados
console.error('Erro ao receber um resultado:', error.message);
}
// Aguardando 1 segundo antes da próxima tentativa
aguardar sleep(1000);
}
// Exibir uma mensagem de erro se o resultado não puder ser obtido em 15 tentativas
console.error('Falha ao obter um resultado em 15 tentativas');
return null;
}
// Função para enviar solicitações POST com dados JSON
função async postJson(url, data) {
const response = await fetch(url, {
método: 'POST',
cabeçalhos: { 'Content-Type': 'application/json' },
body: JSON.stringify(data)
});
return response.json();
}
// Função para pausar a execução por um tempo especificado
função assíncrona sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
// A função principal que inicia o processo de resolução do captcha
função async main() {
Const apiKey = 'YOUR_CAPMONSTER_API';
const pageUrl = 'https://example.com';
const captchaKey = '189939991';
// Solução de CAPTCHA
const taskId = await solveTencentCaptcha(apiKey, pageUrl, captchaKey);
console.log("Task ID:", taskId);
if (taskId) {
// Obtenção dos resultados da tarefa
const resultData = await getCaptchaSolution(apiKey, taskId);
if (resultData) console.log("REsult:", resultData);
}
}
main();
# Importação de bibliotecas essenciais
import requests
import time
# Função para enviar uma solicitação para criar uma tarefa de resolução de captcha
def solve_tencent_captcha(api_key, page_url, captcha_key):
#URL para enviar uma solicitação para criar uma tarefa
solve_url = 'https://api.capmonster.cloud/createTask'
# Preparação de dados para a tarefa
task_data = {
"clientKey": api_key,
"task": {
"type": "CustomTask",
"class": "TenDI",
"websiteURL": page_url,
"websiteKey": captcha_key,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/123.0.0.0 Safari/537.36"
}
}
Envio de uma solicitação POST
response = requests.post(solve_url, json=task_data)
# Recuperar dados da resposta e retornar o identificador da tarefa
response_data = response.json()
task_id = response_data.get('taskId')
return task_id
# Função para obter a solução de captcha
def get_captcha_solution(api_key, task_id):
# URL de recuperação do resultado da tarefa
result_url = 'https://api.capmonster.cloud/getTaskResult'
# Preparação de dados para solicitação de resultado
result_data = {
"clientKey": api_key,
"taskId": task_id
}
# Parâmetros para limitar o número de tentativas para obter um resultado
tentativas = 0
max_attempts = 15
# Ciclo para as solicitações de resultados repetidos
while attempts < max_attempts:
# Envio de uma solicitação POST para obter o resultado
response = requests.post(result_url, json=result_data)
response_data = response.json()
Verificação do status de uma resposta
se response_data['status'] == 'ready':
return response_data
# Aguardando 1 segundo antes da próxima solicitação
time.sleep(1)
tentativas += 1
# Exibir uma mensagem se o número máximo de tentativas tiver sido excedido
print("O número de tentativas para obter um resultado foi excedido")
return None
# Função principal
def main():
api_key = 'YOUR_CAPMONSTER_API'
page_url = 'https://example.com'
captcha_key = '189939991'
# Resolver o captcha e obter o ID da tarefa
task_id = solve_tencent_captcha(api_key, page_url, captcha_key)
print("ID da tarefa:", task_id)
# Se a tarefa for criada com sucesso, repita as consultas para obter o resultado
if task_id:
result_data = get_captcha_solution(api_key, task_id)
print("Result:", result_data)
# Iniciar a função principal quando o script for iniciado
se __name__ == "__main__":
main()
Confira nossas ferramentas e soluções para resolver facilmente o Tencent Captcha e outros tipos de CAPTCHAs:
CapMonster Cloud browser extension Chrome / Firefox
Note: Gostaríamos de lembrá-lo de que o produto é usado para automatizar testes em seus próprios sites e em sites aos quais você tem acesso legal.