Looking for international version of our service? Go to 2captcha.com

Логотип «RuCaptcha»Перейти на главную страницу
Туториалы по обходу капчи

Эта статья была полезной?

Как решить Tencent капчу на OpenModel AI

Грегори Фишер
Грегори Фишер

Технический специалист

Введение

OpenModel AI — это платформа для работы с моделями искусственного интеллекта. Для защиты процессов аутентификации и регистрации сайт использует Tencent CAPTCHA. Это поведенческая капча, которая часто выглядит как слайдер или задание на сборку пазла.

В этом руководстве мы разберем, как получить необходимые параметры, решить капчу через API RuCaptcha и корректно внедрить полученные токены (ticket и randstr) на страницу авторизации.

Параметры задачи

Для обхода Tencent CAPTCHA на OpenModel AI используется тип задачи TencentTaskProxyless (или TencentTask, если требуются ваши прокси).

json Copy
{
    "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.

  1. Откройте страницу авторизации и нажмите F12 (Инструменты разработчика).
  2. Перейдите на вкладку Network (Сеть).
  3. Обновите страницу или вызовите появление капчи.
  4. В фильтре введите tencent или captcha.
  5. Найдите запрос к API капчи или скрипт инициализации. В параметрах запроса (Query String Parameters) или в исходном коде страницы (в вызове new TencentCaptcha('...', ...)) вы найдете значение appId. Для OpenModel AI это 196724674.

captchaScript (КРИТИЧЕСКИ ВАЖНО)

Это URL JavaScript-библиотеки, которую использует сайт для отображения капчи.

ВАЖНО: Для корректного решения капчи на этом сайте необходимо передавать именно https://captchacdn.tencentcloudcs.com/TCaptcha-global.js. Использование стандартного скрипта по умолчанию или любого другого URL приведет к ошибке решения (ERROR_CAPTCHA_UNSOLVABLE) или отклонению токена сайтом.

Как найти:

  1. На вкладке Network отфильтруйте запросы по типу JS.
  2. Найдите запрос, загружающий библиотеку Tencent (обычно содержит TCaptcha или tencentcloudcs).
  3. Скопируйте полный URL этого скрипта и передайте его в параметр captchaScript.

Примеры кода

Python + requests (Получение токенов)

Этот код отправляет задачу в API и возвращает готовые токены ticket и randstr.

python Copy
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 Copy
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 Copy
import requests

API_KEY = "YOUR_API_KEY"
TASK_ID = "123456789" # Замените на реальный ID задачи из ответа API

# Отчет о неверном решении
requests.post(
    "https://api.rucaptcha.com/reportIncorrect",
    json={"clientKey": API_KEY, "taskId": TASK_ID}
)

# Отчет о правильном решении
requests.post(
    "https://api.rucaptcha.com/reportCorrect",
    json={"clientKey": API_KEY, "taskId": TASK_ID}
)

Подробный гайд по отправке отчетов с примерами для разных языков: https://rucaptcha.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-ключ. Проверьте, что вы используете правильный ключ из личного кабинета RuCaptcha.
ERROR_ZERO_BALANCE Недостаточно средств на балансе. Пополните счет в личном кабинете RuCaptcha.

Полезные ссылки