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

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

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

Как решить FunCaptcha на AMD DevCloud

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

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

Введение

AMD DevCloud — это платформа для разработчиков, предоставляющая доступ к вычислительным ресурсам и оборудованию AMD. Для защиты процессов регистрации и доступа к ресурсам сайт использует FunCaptcha (Arkose Labs). Это интерактивная капча, которая требует выполнения заданий с изображениями.

В этом руководстве мы разберем, как получить необходимые параметры, решить FunCaptcha через API RuCaptcha и корректно передать токен на сервер AMD, используя специфичный для этого сайта метод отправки.

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

Для обхода FunCaptcha на AMD DevCloud используется тип задачи FunCaptchaTaskProxyless или FunCaptchaTask. Параметр data[blob] для этого сайта не требуется.

json Copy
{
    "clientKey": "YOUR_API_KEY",
    "task": {
        "type": "FunCaptchaTaskProxyless",
        "websiteURL": "https://devcloud.amd.com/",
        "websitePublicKey": "06A0678C-C410-48EA-A18A-DC519C2B5877",
        "funcaptchaApiJSSubdomain": "https://eb15f.digitalocean.com"
    }
}

Как найти параметры

websiteURL

Это полный адрес страницы, на которой появляется капча. Для AMD DevCloud это главная страница или страница входа: https://devcloud.amd.com/

websitePublicKey

Это публичный ключ Arkose Labs в формате UUID.

  1. Откройте страницу и нажмите F12 (DevTools).
  2. Перейдите на вкладку Elements.
  3. Нажмите Ctrl+F и введите data-pkey или public-key.
  4. Скопируйте значение атрибута. Для AMD DevCloud это 06A0678C-C410-48EA-A18A-DC519C2B5877.

Альтернативный способ: Перейдите на вкладку Network, отфильтруйте по Fetch/XHR или JS, найдите запросы к arkoselabs.com или digitalocean.com. В параметрах будет указан public_key.

surl

Этот параметр указывает на кастомный поддомен API Arkose Labs.

  1. На вкладке Elements найдите тег script, который загружает скрипт капчи.
  2. Обычно это URL вида https://eb15f.digitalocean.com/fc/api...
  3. Скопируйте полный URL домена (в данном случае https://eb15f.digitalocean.com).

Особенности интеграции и полезные рекомендации

FunCaptcha может быть сложной в интеграции, особенно на сайтах с нестандартной архитектурой, таких как AMD DevCloud. Ниже собраны ключевые рекомендации, которые помогут вам успешно настроить решение и избежать типичных проблем.

Тестирование в режиме Sandbox

Перед тем как переходить к боевой автоматизации, обязательно протестируйте свою реализацию в нашем режиме Sandbox: https://rucaptcha.com/2captcha-api#sandbox. Если капча появляется и успешно решается в этом режиме, ваш код, скорее всего, работает корректно. Если возникают ошибки — воспользуйтесь руководством по отладке параметров запроса: https://rucaptcha.com/2captcha-api#debugging.

Параметр data[blob]

Многие сайты требуют передачи дополнительного параметра data[blob], который содержит зашифрованные данные сессии Arkose Labs. У нас есть подробное руководство о том, как правильно получить и использовать этот параметр: https://rucaptcha.com/h/funcaptcha-blob.

Однако, как мы выяснили, для AMD DevCloud blob не требуется — токен успешно проходит проверку и без него. Это упрощает интеграцию, так как не нужно извлекать и передавать дополнительные данные из сетевых запросов.

Использование прокси

Чтобы избежать блокировок по IP со стороны Arkose Labs, мы настоятельно рекомендуем использовать ротируемые резидентские прокси при решении FunCaptcha. Датацентровые IP-адреса часто попадают в чёрные списки, поэтому для стабильной работы лучше применять именно резидентские прокси с ротацией.

Альтернативные методы решения

Если вы продолжаете сталкиваться с трудностями при прохождении FunCaptcha на AMD DevCloud, вы можете попробовать метод решения на основе сетки (grid-based solving). Этот подход иногда показывает более высокую эффективность на специфичных типах заданий. Более подробную информацию можно найти в нашем блоге: https://rucaptcha.com/blog/funcaptcha-bypass-2-ways-solutions.

Если у вас возникнут конкретные вопросы в процессе интеграции, не стесняйтесь обращаться в службу поддержки — мы будем рады помочь.

Как передавать токен на AMD DevCloud

Особенность этого сайта заключается в том, что токен не просто вставляется в скрытое поле. После получения токена от RuCaptcha, мы внедряем его через JavaScript fetch() в браузере (например, в Playwright), отправляя POST-запрос на эндпоинт https://devcloud.amd.com/shield-service/arkose/v1/result.

Тело запроса должно выглядеть так:

json Copy
{
    "arkose_session_token": "TOKEN_FROM_2CAPTCHA",
    "session_id": "SESSION_ID"
}

session_id обычно можно получить из сетевых запросов или из глобальных переменных JavaScript на странице.

Примеры кода

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

Если вам нужно просто получить токен:

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.funcaptcha(
        sitekey='06A0678C-C410-48EA-A18A-DC519C2B5877',
        url='https://devcloud.amd.com/',
        surl='https://eb15f.digitalocean.com'
    )
    print(f"Токен успешно получен: {result['code']}")
    
except Exception as e:
    print(f"Произошла ошибка: {e}")

Python + Playwright (Автоматизация браузера и отправка токена)

При автоматизации браузера мы получаем токен и отправляем его на сервер AMD через fetch.

python Copy
import asyncio
from playwright.async_api import async_playwright
from twocaptcha import TwoCaptcha

API_KEY = 'YOUR_API_KEY'
SITE_KEY = '06A0678C-C410-48EA-A18A-DC519C2B5877'
PAGE_URL = 'https://devcloud.amd.com/'

async def solve_and_submit():
    solver = TwoCaptcha(API_KEY)
    
    try:
        result = solver.funcaptcha(
            sitekey=SITE_KEY,
            url=PAGE_URL,
            surl='https://eb15f.digitalocean.com'
        )
        token = result['code']
        print(f"Капча решена! Токен: {token}")
        
        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*="arkoselabs"]', timeout=10000)
            
            # Получаем session_id из страницы (пример, нужно адаптировать под реальную логику сайта)
            session_id = await page.evaluate("() => { return window.sessionId || 'YOUR_SESSION_ID'; }")
            
            # Отправляем токен через fetch на эндпоинт AMD
            response = await page.evaluate(f"""
                async () => {{
                    const res = await fetch('https://devcloud.amd.com/shield-service/arkose/v1/result', {{
                        method: 'POST',
                        headers: {{
                            'Content-Type': 'application/json'
                        }},
                        body: JSON.stringify({{
                            arkose_session_token: '{token}',
                            session_id: '{session_id}'
                        }})
                    }});
                    return await res.json();
                }}
            """)
            
            print("Ответ от сервера AMD:", response)
            
            await asyncio.sleep(5)
            await browser.close()
            
    except Exception as e:
        print(f"Ошибка: {e}")

asyncio.run(solve_and_submit())

Отчеты о правильности решения

Если сайт отклонил полученный токен, обязательно сообщите об этом через метод reportIncorrect. Это помогает сервису улучшать алгоритмы и возвращает вам средства за неудачную попытку. Если токен успешно прошел проверку, отправьте reportCorrect.

Отправить отчет можно через API:

python Copy
import requests

API_KEY = "YOUR_API_KEY"
TASK_ID = "123456789"

# Отчет о неверном решении
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 IP-адрес заблокирован Arkose Labs Используйте тип задачи FunCaptchaTask и передавайте качественные ротируемые резидентские прокси.
Токен получен, но сервер AMD отклоняет его Неверный формат отправки токена или истек session_id Убедитесь, что вы отправляете POST-запрос на /shield-service/arkose/v1/result с правильными arkose_session_token и session_id.
ERROR_WRONG_USER_KEY Неверный API-ключ Проверьте, что вы используете правильный ключ от RuCaptcha.
Iframe с капчей не найден Страница загружается динамически Добавьте явные ожидания (waitForSelector) для iframe с arkoselabs или digitalocean.

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