Эта статья была полезной?
Как решить FunCaptcha на AMD DevCloud
Технический специалист
Введение
AMD DevCloud — это платформа для разработчиков, предоставляющая доступ к вычислительным ресурсам и оборудованию AMD. Для защиты процессов регистрации и доступа к ресурсам сайт использует FunCaptcha (Arkose Labs). Это интерактивная капча, которая требует выполнения заданий с изображениями.
В этом руководстве мы разберем, как получить необходимые параметры, решить FunCaptcha через API 2Captcha и корректно передать токен на сервер AMD, используя специфичный для этого сайта метод отправки.
Параметры задачи
Для обхода FunCaptcha на AMD DevCloud используется тип задачи FunCaptchaTaskProxyless или FunCaptchaTask. Параметр data[blob] для этого сайта не требуется.
json
{
"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.
- Откройте страницу и нажмите F12 (DevTools).
- Перейдите на вкладку Elements.
- Нажмите Ctrl+F и введите data-pkey или public-key.
- Скопируйте значение атрибута. Для AMD DevCloud это 06A0678C-C410-48EA-A18A-DC519C2B5877.
Альтернативный способ: Перейдите на вкладку Network, отфильтруйте по Fetch/XHR или JS, найдите запросы к arkoselabs.com или digitalocean.com. В параметрах будет указан public_key.
surl
Этот параметр указывает на кастомный поддомен API Arkose Labs.
- На вкладке Elements найдите тег script, который загружает скрипт капчи.
- Обычно это URL вида https://eb15f.digitalocean.com/fc/api...
- Скопируйте полный 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
{
"arkose_session_token": "TOKEN_FROM_2CAPTCHA",
"session_id": "SESSION_ID"
}
session_id обычно можно получить из сетевых запросов или из глобальных переменных JavaScript на странице.
Примеры кода
Python + requests (Получение токена)
Если вам нужно просто получить токен:
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.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
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
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. |
Полезные ссылки
- Песочница для тестирования API: https://2captcha.com/setting#sandbox
- Документация по FunCaptcha (Arkose Labs): https://2captcha.com/api-docs/arkoselabs-funcaptcha
- Подробный гайд по отправке отчетов: https://2captcha.com/h/how-to-submit-reports
- Библиотека для Python: https://github.com/2captcha/2captcha-python