Tencent CAPTCHA может заблокировать автоматизированный сценарий при регистрации, входе или отправке формы. Это часто происходит в Selenium, Playwright и других E2E-тестах.
Если вы контролируете конфигурацию приложения, используйте тестовый режим Tencent CAPTCHA. Если тест работает с реальной CAPTCHA или изменить конфигурацию нельзя, получите результат через Captcha Solver и передайте его callback страницы.
Ниже показана интеграция Tencent CAPTCHA с официальным Python SDK Captcha Solver.

Данные Tencent CAPTCHA#
Для создания задачи нужны:
websiteURL— URL страницы с CAPTCHA;appId— идентификатор Tencent CAPTCHA;clientKey— ключ доступа к Captcha Solver API.
Tencent CAPTCHA использует appId, а не websiteKey. Найдите appId в конфигурации виджета на странице.

Например:
new TencentCaptcha("YOUR_APP_ID", onSolved);
Замените YOUR_APP_ID на значение из конфигурации целевой страницы.
В Python SDK передайте ключ первым аргументом в CaptchaClient. В примерах ниже ключ хранится в переменной окружения CAPTCHA_API_KEY.
Выбор типа задачи#
Captcha Solver поддерживает два типа задач Tencent:
TencentTaskProxyless— решение без клиентского прокси;TencentTask— решение через клиентский прокси. ИспользуйтеTencentTaskProxyless, если решение не требует определённого прокси. ИспользуйтеTencentTask, если запрос на решение должен выполняться через ваш прокси.
Установка Python SDK#
SDK доступен в репозитории Captcha Solver Python SDK. Установите его напрямую из GitHub:
pip install git+https://github.com/captcha-solver-api/python-sdk.git
Сохраните clientKey в переменной окружения CAPTCHA_API_KEY.
Linux и macOS:
export CAPTCHA_API_KEY=your_client_key
Windows PowerShell:
$env:CAPTCHA_API_KEY="your_client_key"
Решение Tencent CAPTCHA без прокси#
Используйте TencentTaskProxyless, если клиентский прокси не требуется:
import os
from captcha_sdk import CaptchaClient
from captcha_sdk.tasks import TencentTaskProxyless
client = CaptchaClient(os.environ["CAPTCHA_API_KEY"])
solution = client.solve(
TencentTaskProxyless(
websiteURL="https://example.com/register",
appId="YOUR_APP_ID",
)
)
print(solution)
Замените:
https://example.com/registerна URL страницы с CAPTCHA;YOUR_APP_IDнаappIdиз конфигурации Tencent CAPTCHA. Методsolve()создаёт задачу, проверяет её статус и возвращает результат после завершения решения:
{
"appid": "...",
"ret": 0,
"ticket": "...",
"randstr": "..."
}
Передайте весь объект результата в callback страницы.
Решение через клиентский прокси#
Если запрос на решение должен использовать ваш прокси, создайте TencentTask:
import os
from captcha_sdk import CaptchaClient
from captcha_sdk.tasks import TencentTask
client = CaptchaClient(os.environ["CAPTCHA_API_KEY"])
solution = client.solve(
TencentTask(
websiteURL="https://example.com/register",
appId="YOUR_APP_ID",
proxyType="http",
proxyAddress="1.2.3.4",
proxyPort=8080,
proxyLogin="proxy_user",
proxyPassword="proxy_password",
)
)
print(solution)
Поддерживаются следующие типы прокси:
http;socks4;socks5. Если прокси не требует авторизации, параметрыproxyLoginиproxyPasswordможно не указывать.
Нестандартный URL скрипта Tencent CAPTCHA#
Если страница загружает скрипт Tencent CAPTCHA по нестандартному URL, укажите его в captchaScript:
import os
from captcha_sdk import CaptchaClient
from captcha_sdk.tasks import TencentTaskProxyless
client = CaptchaClient(os.environ["CAPTCHA_API_KEY"])
solution = client.solve(
TencentTaskProxyless(
websiteURL="https://example.com/register",
appId="YOUR_APP_ID",
captchaScript="https://example.com/custom/TCaptcha.js",
)
)
print(solution)
Используйте captchaScript только для страниц, которые действительно загружают Tencent CAPTCHA по пользовательскому URL.

Передача результата в callback#
Tencent CAPTCHA возвращает объект с результатом проверки:
const solution = {
appid: "...",
ret: 0,
ticket: "...",
randstr: "..."
};
Передайте этот объект в callback, указанный при инициализации CAPTCHA:
onSolved(solution);
onSolved здесь является только примером. Вызовите фактический callback, который страница зарегистрировала при создании TencentCaptcha.
В параметрах задачи используется appId, а в возвращаемом объекте поле называется appid. Это ожидаемое различие.
Captcha Solver возвращает результат, но не управляет отправкой формы. E2E-тест должен передать объект из Python-процесса в браузер и вызвать callback страницы. Способ передачи зависит от тестовой инфраструктуры. Например, Selenium или Playwright могут выполнить JavaScript в браузере и вызвать callback с полученным результатом.
Интеграция с E2E-тестом#
Для Tencent CAPTCHA последовательность действий выглядит так:
- Откройте страницу с CAPTCHA.
- Получите
appIdиз конфигурации страницы. - Создайте
TencentTaskProxylessилиTencentTask. - Вызовите
client.solve(). - Передайте возвращённый объект в callback страницы.
- Отправьте форму.
- Продолжите проверки теста.
Получайте решение непосредственно перед отправкой формы и передавайте его в ту же страницу, в которой была создана CAPTCHA.
Асинхронное решение#
Для асинхронной тестовой инфраструктуры используйте AsyncCaptchaClient:
import asyncio
import os
from captcha_sdk import AsyncCaptchaClient
from captcha_sdk.tasks import TencentTaskProxyless
async def solve_tencent():
client = AsyncCaptchaClient(os.environ["CAPTCHA_API_KEY"])
try:
return await client.solve(
TencentTaskProxyless(
websiteURL="https://example.com/register",
appId="YOUR_APP_ID",
)
)
finally:
await client.aclose()
solution = asyncio.run(solve_tencent())
print(solution)
solve() создаёт задачу, проверяет её статус и возвращает результат после завершения решения.
Проверка интеграции#
Перед запуском теста проверьте:
websiteURLуказывает на страницу с Tencent CAPTCHA;appIdсовпадает с конфигурацией виджета;CAPTCHA_API_KEYсодержит действительныйclientKey;captchaScriptиспользуется только при нестандартном URL скрипта;TencentTaskсодержитproxyType,proxyAddressиproxyPort;- callback получает весь объект результата;
- тест передаёт результат в ту же страницу, в которой была создана CAPTCHA.
Ресурсы#
- Captcha Solver Python SDK
- Синхронный пример Tencent
- Асинхронный пример Tencent
- Документация Tencent CAPTCHA
- Репозиторий для автоматизации Tencent CAPTCHA
Итог#
Для автоматизации Tencent CAPTCHA используйте один из двух типов задач:
TencentTaskProxyless— если клиентский прокси не нужен;TencentTask— если решение должно выполняться через ваш прокси. Передайте в задачуwebsiteURLиappId, вызовитеclient.solve()и передайте возвращённый объект callback страницы. Для асинхронных сценариев используйтеAsyncCaptchaClient. Если страница использует нестандартный URL скрипта Tencent CAPTCHA, укажитеcaptchaScript.