Как обойти капчу Tencent
Введение
Tencent Captcha (TCaptcha) — это современная система защиты от ботов, разработанная компанией Tencent. В отличие от традиционных капч с вводом текста, TCaptcha анализирует поведение пользователя и использует токены для верификации. В этом руководстве мы подробно разберём, как автоматизировать обход этой капчи с помощью API-сервисов решения капч.
Важно: Использование автоматического обхода капч должно соответствовать условиям использования целевого сайта и законодательству вашей юрисдикции.
Что такое Tencent Captcha
Tencent Captcha — это поведенческая капча, которая оценивает взаимодействие пользователя со страницей для определения, является ли он человеком. Основные особенности:
| Характеристика | Описание |
|---|---|
| Тип | Токен-базированная поведенческая капча |
| Визуализация | Слайдер, клик-паттерны, головоломки или невидимая проверка |
| Интеграция | Через JS-скрипт TCaptcha.js |
| Идентификатор | appId (CaptchaAppId) — уникальный ID приложения в Tencent Cloud |
Капча инициализируется на странице следующим образом:
js
new TencentCaptcha(CaptchaAppId, callback, options);
После успешного прохождения капча вызывает callback-функцию с объектом решения, содержащим ticket и randstr — эти данные необходимо передать на бэкенд сайта для верификации.
Подготовка: необходимые параметры
Для отправки задачи на решение через API вам понадобятся:
| Параметр | Обязателен | Описание |
|---|---|---|
| type | Да | Тип задачи: TencentTaskProxyless или TencentTask |
| websiteURL | Да | Полный URL страницы, где загружается капча |
| appId | Да | Значение параметра appId из исходного кода страницы |
| captchaScript | Нет* | URL скрипта капчи (по умолчанию: https://turing.captcha.qcloud.com/TCaptcha.js) |
| proxyType | Для TencentTask | Тип прокси: http, https, socks5 |
| proxyAddress | Для TencentTask | IP или хост прокси-сервера |
| proxyPort | Для TencentTask | Порт прокси |
| proxyLogin / proxyPassword | Нет | Данные авторизации прокси |
Важный момент: разные сайты могут использовать разные значения captchaScript. Поэтому перед отправкой запроса на решение капчи проверьте, совпадает ли он со значением «по умолчанию», указанным в нашей документации. В большинстве случаев сайты сейчас используют следующий captchaScript:
https://ca.turing.captcha.qcloud.com/TCaptcha-global.js
Как найти appId на странице
- Откройте DevTools (
F12) → вкладка Sources или Network - Найдите подключение скрипта
TCaptcha.jsили вызовnew TencentCaptcha(...) - Скопируйте значение первого аргумента — это и есть
appId
Пример из исходного кода:
html
<script>
var captcha = new TencentCaptcha('190014885', function(res) {
// callback
});
</script>
Здесь appId = '190014885' .
Типы задач
TencentTaskProxyless (рекомендуется)
Сервис использует собственный пул прокси для решения. Вам не нужно настраивать прокси вручную.
json
{
"clientKey": "ВАШ_API_КЛЮЧ",
"task": {
"type": "TencentTaskProxyless",
"appId": "190014885",
"websiteURL": "https://www.example.com/"
}
}
TencentTask (с вашим прокси)
Используйте, если целевой сайт блокирует запросы без прокси или требует конкретный гео-источник.
json
{
"clientKey": "ВАШ_API_КЛЮЧ",
"task": {
"type": "TencentTask",
"appId": "190014885",
"websiteURL": "https://www.example.com/",
"proxyType": "http",
"proxyAddress": "1.2.3.4",
"proxyPort": 8080,
"proxyLogin": "user",
"proxyPassword": "pass"
}
}
Пошаговая инструкция
Шаг 1: Создание задачи
Эндпоинт: https://api.2captcha.com/createTask
Отправьте POST-запрос с телом задачи (см. примеры выше).
Ответ:
json
{
"errorId": 0,
"taskId": "1234567890"
}
Сохраните taskId для опроса результата.
Шаг 2: Опрос статуса
Эндпоинт: https://api.2captcha.com/getTaskResult
json
{
"clientKey": "ВАШ_API_КЛЮЧ",
"taskId": "1234567890"
}
Опрашивайте каждые 5–10 секунд, пока status не станет "ready".
Шаг 3: Получение решения
Успешный ответ содержит токен:
json
{
"errorId": 0,
"status": "ready",
"solution": {
"appid": "190014885",
"ret": 0,
"ticket": "tr0344YjJASGmJGtohyWS_y6tJKiqVPIdFgl87vWlVaQoueR8D6DH28go-i-VjeassM31SXO7D0*",
"randstr": "@KVN"
},
"cost": "0.00299"
}
Шаг 4: Использование токена
Полученный объект solution необходимо передать в callback-функцию, указанную при инициализации капчи:
js
// Исходная инициализация на странице
const myCallback = (token) => {
// token содержит { appid, ret, ticket, randstr }
fetch('/api/verify', {
method: 'POST',
body: JSON.stringify(token)
});
};
var captcha = new TencentCaptcha('190014885', myCallback, {});
captcha.show();
// После получения решения от API:
let solution = JSON.parse(apiResponse);
myCallback(solution.solution); // ← передаём решение
Токен действителен ограниченное время (обычно 1–5 минут). Используйте его немедленно после получения.
Пример на Python
python
import time
import requests
from twocaptcha import TwoCaptcha
# Инициализация клиента
solver = TwoCaptcha('ВАШ_API_КЛЮЧ', server='rucaptcha.com')
try:
# Отправка задачи
result = solver.tencent(
app_id='190014885',
url='https://www.example.com/',
# proxy={
# 'type': 'HTTP',
# 'uri': 'login:pass@1.2.3.4:8080'
# }
)
print("Решение получено:")
print(result)
# Использование токена в вашем скрипте
ticket = result['ticket']
randstr = result['randstr']
# Пример отправки на целевой сайт
response = requests.post(
'https://www.example.com/api/verify',
json={
'appid': result['appid'],
'ticket': ticket,
'randstr': randstr
}
)
print(response.json())
except Exception as e:
print(f"Ошибка: {e}")
Библиотека
2captcha-pythonавтоматически опрашивает статус задачи и возвращает готовое решение.
Советы по интеграции
- Логирование: Сохраняйте taskId, время запроса и ответ для отладки.
- Повторные попытки: Реализуйте экспоненциальную задержку при ошибках.
- Прокси: Для TencentTask используйте резидентные прокси — они реже блокируются.
- User-Agent: Если сайт проверяет заголовки, передавайте актуальный User-Agent через прокси.
- Кэширование: Не пытайтесь решить одну и ту же капчу повторно — токен одноразовый.
Полезные ссылки
Заключение
Tencent Captcha представляет собой современную поведенческую систему защиты, в которой ключевую роль играет серверная верификация токена (ticket и randstr). Для корректной интеграции важно правильно извлекать appId, передавать параметры и обрабатывать результат проверки на стороне backend.
При реализации стоит учитывать срок жизни токена, требования к безопасности запросов и особенности конкретной конфигурации капчи на сайте. Грамотно настроенная интеграция позволяет обеспечить баланс между защитой от автоматизированных запросов и удобством пользователей.