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

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

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

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

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

Введение

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

В этом руководстве мы разберем, как получить необходимые параметры, решить FunCaptcha через API 2Captcha и корректно передать токен на сервер 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://2captcha.com/2captcha-api#sandbox. Если капча появляется и успешно решается в этом режиме, ваш код, скорее всего, работает корректно. Если возникают ошибки — воспользуйтесь руководством по отладке параметров запроса: https://2captcha.com/2captcha-api#debugging.

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

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

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

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

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

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

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

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

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

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

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