Эта статья была полезной?
Как решить Tencent капчу на OpenModel AI
Технический специалист
Введение
OpenModel AI — это платформа для работы с моделями искусственного интеллекта. Для защиты процессов аутентификации и регистрации сайт использует Tencent CAPTCHA. Это поведенческая капча, которая часто выглядит как слайдер или задание на сборку пазла.
В этом руководстве мы разберем, как получить необходимые параметры, решить капчу через API 2Captcha и корректно внедрить полученные токены (ticket и randstr) на страницу авторизации.
Параметры задачи
Для обхода Tencent CAPTCHA на OpenModel AI используется тип задачи TencentTaskProxyless (или TencentTask, если требуются ваши прокси).
json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "TencentTaskProxyless",
"appId": "196724674",
"websiteURL": "https://console.openmodel.ai/auth",
"captchaScript": "https://captchacdn.tencentcloudcs.com/TCaptcha-global.js"
}
}
Как найти параметры
websiteURL
Это полный адрес страницы, на которой появляется капча. В данном случае это страница авторизации: https://console.openmodel.ai/auth
appId (CaptchaAppId)
Это уникальный идентификатор приложения в Tencent Cloud.
- Откройте страницу авторизации и нажмите F12 (Инструменты разработчика).
- Перейдите на вкладку Network (Сеть).
- Обновите страницу или вызовите появление капчи.
- В фильтре введите tencent или captcha.
- Найдите запрос к API капчи или скрипт инициализации. В параметрах запроса (Query String Parameters) или в исходном коде страницы (в вызове new TencentCaptcha('...', ...)) вы найдете значение appId. Для OpenModel AI это 196724674.
captchaScript (КРИТИЧЕСКИ ВАЖНО)
Это URL JavaScript-библиотеки, которую использует сайт для отображения капчи.
ВАЖНО: Для корректного решения капчи на этом сайте необходимо передавать именно https://captchacdn.tencentcloudcs.com/TCaptcha-global.js. Использование стандартного скрипта по умолчанию или любого другого URL приведет к ошибке решения (ERROR_CAPTCHA_UNSOLVABLE) или отклонению токена сайтом.
Как найти:
- На вкладке Network отфильтруйте запросы по типу JS.
- Найдите запрос, загружающий библиотеку Tencent (обычно содержит TCaptcha или tencentcloudcs).
- Скопируйте полный URL этого скрипта и передайте его в параметр captchaScript.
Примеры кода
Python + requests (Получение токенов)
Этот код отправляет задачу в API и возвращает готовые токены ticket и randstr.
python
import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
from twocaptcha import TwoCaptcha
api_key = os.getenv('APIKEY_2CAPTCHA', 'YOUR_API_KEY')
solver = TwoCaptcha(api_key)
try:
result = solver.tencent(
app_id='196724674',
url='https://console.openmodel.ai/auth',
captcha_script='https://captchacdn.tencentcloudcs.com/TCaptcha-global.js'
)
print("Капча успешно решена!")
print(f"Ticket: {result['ticket']}")
print(f"Randstr: {result['randstr']}")
except Exception as e:
print(f"Произошла ошибка: {e}")
Python + Playwright (Автоматизация браузера)
При автоматизации браузера полученные токены необходимо внедрить в скрытые поля формы или вызвать callback-функцию, чтобы сайт распознал успешное прохождение проверки.
python
import asyncio
from playwright.async_api import async_playwright
from twocaptcha import TwoCaptcha
API_KEY = 'YOUR_API_KEY'
APP_ID = '196724674'
PAGE_URL = 'https://console.openmodel.ai/auth'
CAPTCHA_SCRIPT = 'https://captchacdn.tencentcloudcs.com/TCaptcha-global.js'
async def solve_and_inject():
solver = TwoCaptcha(API_KEY)
try:
# 1. Решаем капчу через API
result = solver.tencent(
app_id=APP_ID,
url=PAGE_URL,
captcha_script=CAPTCHA_SCRIPT
)
ticket = result['ticket']
randstr = result['randstr']
print(f"Капча решена! Ticket: {ticket}, Randstr: {randstr}")
async with async_playwright() as p:
browser = await p.chromium.launch(headless=False)
page = await browser.new_page()
await page.goto(PAGE_URL)
await page.wait_for_selector('iframe[src*="tencent"]', timeout=10000)
# 2. Внедряем токены в скрытые поля (стандартный метод для Tencent)
await page.evaluate(f"""
// Находим и заполняем стандартные скрытые поля Tencent
const ticketInput = document.querySelector('input[name="ticket"]') || document.getElementById('ticket');
const randstrInput = document.querySelector('input[name="randstr"]') || document.getElementById('randstr');
if (ticketInput) ticketInput.value = '{ticket}';
if (randstrInput) randstrInput.value = '{randstr}';
// Если сайт использует callback, пытаемся его вызвать
if (typeof window.onTencentCaptchaSuccess === 'function') {{
window.onTencentCaptchaSuccess({{ ret: 0, ticket: '{ticket}', randstr: '{randstr}' }});
}}
""")
# 3. Нажимаем кнопку входа/отправки (раскомментируйте и адаптируйте селектор под реальный сайт)
# await page.click('button[type="submit"]')
await asyncio.sleep(5) # Пауза для визуальной проверки
await browser.close()
except Exception as e:
print(f"Ошибка: {e}")
asyncio.run(solve_and_inject())
Отчеты о правильности решения
Если сайт отклонил полученные токены, обязательно сообщите об этом через метод reportIncorrect. Это помогает сервису улучшать алгоритмы и возвращает вам средства за неудачную попытку. Если токены были успешно приняты, отправьте reportCorrect.
Отправить отчет можно через API:
python
import requests
API_KEY = "YOUR_API_KEY"
TASK_ID = "123456789" # Замените на реальный ID задачи из ответа API
# Отчет о неверном решении
requests.post(
"https://api.2captcha.com/reportIncorrect",
json={"clientKey": API_KEY, "taskId": TASK_ID}
)
# Отчет о правильном решении
requests.post(
"https://api.2captcha.com/reportCorrect",
json={"clientKey": API_KEY, "taskId": TASK_ID}
)
Подробный гайд по отправке отчетов с примерами для разных языков: https://2captcha.com/h/how-to-submit-reports
Частые ошибки и решения
| Ошибка / Проблема | Причина | Решение |
|---|---|---|
| ERROR_CAPTCHA_UNSOLVABLE | Неверный appId или, что чаще всего, неверный captchaScript. | Убедитесь, что вы передаете именно https://captchacdn.tencentcloudcs.com/TCaptcha-global.js в параметр captchaScript. |
| Токены получены, но сайт не пускает | Токены не были внедрены в правильные поля, или истекло время их жизни. | Внедряйте ticket и randstr сразу после получения. Проверьте через DevTools, какие именно input поля или callback-функции ожидает форма OpenModel AI. |
| ERROR_WRONG_USER_KEY | Неверный API-ключ. | Проверьте, что вы используете правильный ключ из личного кабинета 2Captcha. |
| ERROR_ZERO_BALANCE | Недостаточно средств на балансе. | Пополните счет в личном кабинете 2Captcha. |
Полезные ссылки
- Песочница для тестирования API: https://2captcha.com/setting#sandbox
- Документация по Tencent CAPTCHA: https://2captcha.com/api-docs/tencent
- Подробный гайд по отправке отчетов: https://2captcha.com/h/how-to-submit-reports
- Библиотека для Python: https://github.com/2captcha/2captcha-python