Эта статья была полезной?
Как обойти reCAPTCHA v3 на сайте Farfetch
Технический специалист
Страница создания аккаунта на сайте Farfetch (www.farfetch.com) защищена невидимой капчей reCAPTCHA v3. Главная особенность работы с этой капчей заключается в том, что она оценивает поведение пользователя в фоновом режиме и возвращает токен, который необходимо корректно передать на сервер.
Для успешного решения критически важно использовать правильный тип задачи, подобрать подходящее значение minScore и внедрить полученный токен через механизм callback. Также важно помнить, что для задач reCAPTCHA v3 в нашем сервисе прокси не поддерживаются, поэтому необходимо использовать исключительно тип задачи RecaptchaV3TaskProxyless.
Параметры задачи
Для решения используется тип задачи RecaptchaV3TaskProxyless.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| type | String | Да | Должен быть установлен в RecaptchaV3TaskProxyless |
| websiteURL | String | Да | Полный URL страницы, где находится капча |
| websiteKey | String | Да | Статический ключ сайта (начинается с 6L...) |
| minScore | Float | Да | Минимальный требуемый скор (например, 0.3, 0.7, 0.9). Если токен не принимается сайтом, измените это значение. |
| apiDomain | String | Да | Домен API. Обычно используется www.recaptcha.net или www.google.com |
| isEnterprise | Boolean | Да | Должно быть установлено в false для обычной версии reCAPTCHA v3 |
Как найти параметры
- Откройте страницу создания аккаунта Farfetch: https://www.farfetch.com/ и перейдите к форме регистрации.
- Нажмите F12, чтобы открыть Инструменты разработчика (DevTools), и перейдите на вкладку Сеть (Network).
- Включите сохранение логов (Preserve log).
- Заполните форму тестовыми данными и нажмите кнопку отправки, чтобы инициировать проверку.
- В фильтре вкладки Сеть введите recaptcha.
- Найдите запрос к серверам Google. В параметрах этого запроса или в исходном коде страницы (поиск по data-sitekey) вы найдете значение websiteKey.
- Скопируйте полный URL из адресной строки браузера в момент отправки запроса. Это будет ваш websiteURL.
Примеры кода
Python + requests
Пример отправки задачи и опроса результата с использованием библиотеки requests.
python
import requests
import time
API_KEY = 'ВАШ_API_КЛЮЧ'
WEBSITE_URL = 'https://www.farfetch.com/'
WEBSITE_KEY = '6LeifPcbAAAAAJaiPe_xgLTfnbdpEMAYJAAnVFJT'
url = 'https://api.2captcha.com/createTask'
headers = {
'Content-Type': 'application/json',
'X-API-Key': API_KEY
}
payload = {
"clientKey": API_KEY,
"task": {
"type": "RecaptchaV3TaskProxyless",
"websiteURL": WEBSITE_URL,
"websiteKey": WEBSITE_KEY,
"minScore": 0.3,
"apiDomain": "www.recaptcha.net",
"isEnterprise": False
}
}
response = requests.post(url, headers=headers, json=payload)
result = response.json()
if result.get('errorId') == 0:
task_id = result.get('taskId')
print(f"Задача создана, ID: {task_id}")
res_url = 'https://api.2captcha.com/getTaskResult'
while True:
time.sleep(5)
res_payload = {
"clientKey": API_KEY,
"taskId": task_id
}
res_response = requests.post(res_url, headers=headers, json=res_payload).json()
if res_response.get('errorId') == 0 and res_response.get('status') == 'ready':
print("Капча успешно решена!")
token = res_response['solution']['gRecaptchaResponse']
print(f"Токен: {token}")
break
elif res_response.get('errorId') != 0:
print(f"Ошибка при получении результата: {res_response.get('errorDescription')}")
break
else:
print(f"Ошибка создания задачи: {result.get('errorDescription')}")
Python + Playwright
Пример автоматизации, который извлекает параметры, отправляет задачу и внедряет токен через callback.
python
from playwright.sync_api import sync_playwright
import requests
import time
API_KEY = 'ВАШ_API_КЛЮЧ'
TARGET_URL = 'https://www.farfetch.com/'
def solve_farfetch_recaptcha_v3():
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
page = browser.new_page()
try:
page.goto(TARGET_URL)
# Здесь должны быть действия по переходу к форме регистрации и заполнению данных
# page.click('button[aria-label="Register"]')
# page.fill('input[name="email"]', 'test@example.com')
# page.click('button[type="submit"]')
page.wait_for_selector('iframe[src*="recaptcha"]', timeout=10000)
current_url = page.url
website_key = page.evaluate("document.querySelector('[data-sitekey]')?.getAttribute('data-sitekey')")
print(f"URL: {current_url}")
print(f"Key: {website_key}")
api_url = 'https://api.2captcha.com/createTask'
headers = {'Content-Type': 'application/json', 'X-API-Key': API_KEY}
payload = {
"clientKey": API_KEY,
"task": {
"type": "RecaptchaV3TaskProxyless",
"websiteURL": current_url,
"websiteKey": website_key,
"minScore": 0.3,
"apiDomain": "www.recaptcha.net",
"isEnterprise": False
}
}
task_response = requests.post(api_url, headers=headers, json=payload).json()
task_id = task_response.get('taskId')
res_url = 'https://api.2captcha.com/getTaskResult'
token = None
for _ in range(20):
time.sleep(5)
res = requests.post(res_url, headers=headers, json={"clientKey": API_KEY, "taskId": task_id}).json()
if res.get('status') == 'ready':
token = res['solution']['gRecaptchaResponse']
break
if res.get('errorId') != 0:
print(f"Ошибка API: {res.get('errorDescription')}")
break
if token:
print(f"Токен получен: {token[:30]}...")
# Внедрение токена через callback
# Имя функции callback необходимо уточнить в исходном коде страницы Farfetch
page.evaluate(f"""
if (typeof recaptchaCallback === 'function') {{
recaptchaCallback("{token}");
}} else {{
console.log("Callback function not found, trying alternative injection");
window.grecaptcha_response = "{token}";
}}
""")
print("Токен передан через callback.")
else:
print("Не удалось получить токен.")
except Exception as e:
print(f"Ошибка: {e}")
finally:
# browser.close()
if __name__ == '__main__':
solve_farfetch_recaptcha_v3()
Как использовать полученный токен (Внедрение через callback)
Сайт Farfetch использует специальную JavaScript-функцию (callback) для передачи полученного токена. В отличие от reCAPTCHA v2, где токен часто автоматически попадает в скрытые поля формы, здесь требуется явный вызов этой функции с полученным значением.
Вы можете реализовать это двумя способами:
- Использовать стандартный подход с внедрением скрипта, который перехватывает и вызывает нужный callback, как описано в нашей статье: https://2captcha.com/h/recaptcha-v2-callback (механизм внедрения токена в контекст страницы универсален).
- Использовать альтернативный способ передачи через callback, который подробно описан в официальной документации нашего API: https://2captcha.com/2captcha-api#callback
Вам необходимо изучить исходный код страницы Farfetch (вкладка Elements), найти точное имя функции в атрибуте data-callback у виджета reCAPTCHA и вызвать именно эту функцию, передав ей полученный токен в качестве аргумента.
Важные примечания
- Настройка minScore: Если сайт отклоняет полученный токен (ошибка валидации на стороне сервера), первое, что нужно сделать — изменить параметр minScore в запросе к API. Попробуйте последовательно значения 0.1, 0.3, 0.5, 0.7 или 0.9, пока сайт не начнет принимать токены.
- Отсутствие поддержки прокси: Для задач reCAPTCHA v3 прокси не поддерживаются в нашем сервисе. Всегда используйте тип задачи RecaptchaV3TaskProxyless. Если сайт блокирует ваш IP, настраивайте прокси на уровне самого браузера (Playwright/Selenium), а не в параметрах задачи API.
Частые ошибки и решения
| Ошибка / Проблема | Причина | Решение |
|---|---|---|
| Сайт отклоняет токен | Значение minScore не соответствует требованиям сайта. | Измените параметр minScore в запросе к API. Попробуйте значения 0.1, 0.3, 0.5, 0.7 или 0.9. |
| Ошибка, связанная с прокси | Попытка использовать прокси для reCAPTCHA v3. | Для reCAPTCHA v3 прокси не поддерживаются. Всегда используйте тип задачи RecaptchaV3TaskProxyless. |
| ERROR_INVALID_SITE_KEY | Неверный websiteKey или несоответствие домена в websiteURL. | Убедитесь, что ключ начинается с 6L, а websiteURL точно совпадает с адресом в браузере. |
| Токен не принимается формой | Неверный способ внедрения токена или неверное имя callback-функции. | Изучите исходный код страницы, найдите точное имя функции в атрибуте data-callback и вызовите её, передав токен. |
Полезные ссылки
- Песочница для тестирования API: https://2captcha.com/setting#sandbox
- Документация API по reCAPTCHA v3: https://2captcha.com/api-docs/recaptcha-v3
- Статья про внедрение через callback: https://2captcha.com/h/recaptcha-v2-callback
- Документация API (раздел callback): https://2captcha.com/2captcha-api#callback
- Python SDK на GitHub: https://github.com/2captcha/2captcha-python
- Другие примеры обхода капч на сайтах: https://2captcha.com/h?category=sites