Эта статья была полезной?
Как обойти reCAPTCHA v3 Enterprise на сайте TripAdvisor
Технический специалист
Сайт TripAdvisor (tripadvisor.com) использует корпоративную версию reCAPTCHA v3 Enterprise для защиты формы входа и регистрации от ботов. Главное отличие версии v3 от классической капчи заключается в том, что она не требует от пользователя никаких действий (нет чекбоксов или картинок). Вместо этого она работает в фоновом режиме, анализируя поведение и присваивая сессии оценочный балл (score). Версия Enterprise обладает более строгими алгоритмами проверки и часто требует указания специфических доменов API.
В этом руководстве мы разберем, как правильно извлечь параметры для Enterprise-версии, отправить задачу через современный API v2 и внедрить полученный токен в стандартное поле формы.
Параметры задачи (API v2)
Для отправки задачи через современный API v2 используется эндпоинт createTask. Тело запроса должно быть в формате JSON.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| clientKey | String | Да | Ваш API-ключ |
| type | String | Да | Тип задачи: RecaptchaV3TaskProxyless или RecaptchaV3Task |
| websiteURL | String | Да | Полный URL целевой веб-страницы, где загружается капча |
| websiteKey | String | Да | Ключ сайта reCAPTCHA. Можно найти в исходном коде или сетевых запросах |
| minScore | Double | Нет | Минимальный требуемый балл (score), который должен вернуть работник (от 0.1 до 0.9). Обычно достаточно 0.3 |
| isEnterprise | Boolean | Нет | Установите true, если на сайте используется версия reCAPTCHA Enterprise |
| apiDomain | String | Нет | Домен, с которого загружается скрипт. Для TripAdvisor часто требуется www.recaptcha.net вместо стандартного www.google.com |
| pageAction | String | Нет | Имя действия (action), если оно жестко задано в коде сайта (например, login или submit) |
Как найти параметры
Параметры для reCAPTCHA v3 можно найти как в исходном коде страницы, так и в сетевом трафике.
Способ 1: Через исходный код страницы (вкладка Elements)
- Откройте страницу входа на TripAdvisor в браузере.
- Нажмите F12, чтобы открыть Инструменты разработчика (DevTools), и перейдите на вкладку Элементы (Elements).
- Нажмите Ctrl+F (или Cmd+F) и выполните поиск по фразе recaptcha, enterprise или sitekey.
- Найдите скрипт подключения или div-элемент, содержащий атрибут data-sitekey. Его значение (например, 6Lfbds4aAAAAALEDnPMIGkeHLhb6yuJ-SzD4axKw) является вашим websiteKey.
- Скопируйте полный URL страницы или URL всплывающего окна авторизации. Это будет ваш websiteURL.
Способ 2: Через сетевые запросы (вкладка Network)
- Перейдите на вкладку Сеть (Network) и включите сохранение логов (Preserve log).
- Обновите страницу или откройте форму входа.
- В фильтре введите enterprise.js или recaptcha.
- Найдите запрос к скрипту капчи. В параметрах URL (Query String) найдите поле render или k. Его значение и есть ваш websiteKey.
- Также обратите внимание на домен, к которому идет запрос. Если это www.recaptcha.net, обязательно укажите это в параметре apiDomain при отправке задачи.
Примеры кода
Python + requests (API v2)
Пример отправки задачи и опроса результата с использованием библиотеки requests через эндпоинты API v2.
python
import requests
import time
API_KEY = 'ВАШ_API_КЛЮЧ'
WEBSITE_URL = 'https://www.tripadvisor.com/RegistrationController?flow=sign_up_and_save&flowOrigin=login&userRequestedForce=true&hideNavigation=true&requireSecure=false&pid=40486&isLithium=true'
WEBSITE_KEY = '6Lfbds4aAAAAALEDnPMIGkeHLhb6yuJ-SzD4axKw'
# 1. Создание задачи через API v2
url = 'https://2captcha.com/createTask'
headers = {
'Content-Type': 'application/json'
}
payload = {
"clientKey": API_KEY,
"task": {
"type": "RecaptchaV3TaskProxyless",
"websiteURL": WEBSITE_URL,
"websiteKey": WEBSITE_KEY,
"minScore": 0.3,
"apiDomain": "www.recaptcha.net",
"isEnterprise": True
}
}
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}")
# 2. Получение результата через API v2
res_url = 'https://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:
# Статус processing - задача еще не готова
continue
else:
print(f"Ошибка создания задачи: {result.get('errorDescription')}")
Python + Playwright
Пример автоматизации, который динамически извлекает sitekey, отправляет задачу через API v2 и внедряет токен в скрытое поле.
python
from playwright.sync_api import sync_playwright
import requests
import time
API_KEY = 'ВАШ_API_КЛЮЧ'
TARGET_URL = 'https://www.tripadvisor.com/'
def solve_tripadvisor_recaptcha_v3():
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
page = browser.new_page()
try:
page.goto(TARGET_URL)
# Переходим к форме входа (селекторы могут меняться, адаптируйте под текущую верстку)
# page.click('a:has-text("Sign in")')
# page.wait_for_selector('iframe[src*="tripadvisor"]', timeout=10000)
# Для примера используем статический sitekey, но его можно извлечь через page.evaluate
site_key = "6Lfbds4aAAAAALEDnPMIGkeHLhb6yuJ-SzD4axKw"
# Отправка в API v2
api_url = 'https://2captcha.com/createTask'
headers = {'Content-Type': 'application/json'}
payload = {
"clientKey": API_KEY,
"task": {
"type": "RecaptchaV3TaskProxyless",
"websiteURL": page.url,
"websiteKey": site_key,
"minScore": 0.3,
"apiDomain": "www.recaptcha.net",
"isEnterprise": True
}
}
task_response = requests.post(api_url, headers=headers, json=payload).json()
if task_response.get('errorId') != 0:
raise Exception(f"Ошибка создания задачи: {task_response.get('errorDescription')}")
task_id = task_response.get('taskId')
# Ожидание решения через getTaskResult
res_url = 'https://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}")
# Внедрение токена в стандартное поле g-recaptcha-response
page.evaluate(f"""
// Ищем скрытое поле или textarea для токена
let input = document.querySelector('[name="g-recaptcha-response"]');
if (!input) {{
input = document.createElement('textarea');
input.name = 'g-recaptcha-response';
input.style.display = 'none';
document.body.appendChild(input);
}}
input.value = "{token}";
input.dispatchEvent(new Event('change', {{ bubbles: true }}));
console.log("Token injected into g-recaptcha-response");
""")
print("Токен успешно внедрен.")
else:
print("Не удалось получить токен.")
except Exception as e:
print(f"Ошибка: {e}")
finally:
# browser.close()
if __name__ == '__main__':
solve_tripadvisor_recaptcha_v3()
Как использовать полученный токен
На сайте TripAdvisor токен reCAPTCHA v3 передается стандартным способом. После получения длинной строки токена от API, вам необходимо найти на странице (или внутри iframe формы входа) элемент textarea или hidden input с именем g-recaptcha-response.
Присвойте этому элементу значение полученного токена и обязательно инициируйте событие изменения (change event), чтобы JavaScript-фреймворк сайта зарегистрировал обновление значения. После этого можно программно нажимать кнопку отправки формы (Sign In).
Альтернативные способы решения
Помимо прямого API, существуют два дополнительных способа обхода reCAPTCHA v3 на TripAdvisor, которые могут быть полезны в различных сценариях автоматизации.
1. Расширение для браузера (Captcha Bypass Extension)
Если вы работаете вручную или используете автоматизацию на базе Selenium/Playwright с реальным браузером, вы можете установить наше специальное расширение для обхода капч.
Преимущества:
- Не требует написания кода для перехвата параметров и отправки запросов
- Автоматически определяет появление капчи и решает её в фоновом режиме
- Работает с большинством популярных типов капч, включая reCAPTCHA v3 Enterprise
- Идеально подходит для ручного серфинга или сложных сценариев автоматизации
Подробнее о расширении: https://2captcha.com/captcha-bypass-extension
2. Browser API (Scraper)
Для сложных задач парсинга, где нужно не только обойти капчу, но и извлечь данные со страниц отелей или отзывов после успешной авторизации, мы предлагаем Browser API — облачное решение на базе headless-браузеров.
Преимущества:
- Полностью управляемый облачный браузер с встроенной поддержкой обхода капч
- Не нужно настраивать прокси, User-Agent или бороться с блокировками
- Встроенные функции для извлечения данных (скриншоты, HTML, выполнение JavaScript)
- Автоматическое решение капч при навигации по сайту
- Идеально для массового парсинга и сбора данных
Подробнее о Browser API: https://2captcha.com/scraper/browser-api/dashboard
Частые ошибки и решения (API v2)
| Ошибка / Проблема | Причина | Решение |
|---|---|---|
| ERROR_KEY_DOES_NOT_EXIST | Неверный или пустой API-ключ. | Проверьте правильность копирования ключа из панели управления. |
| ERROR_ZERO_BALANCE | Недостаточно средств на балансе аккаунта. | Пополните баланс аккаунта. |
| ERROR_INVALID_PARAMETERS | Отсутствуют обязательные параметры или неверный формат JSON. | Убедитесь, что объект task содержит все необходимые поля, включая isEnterprise: true. |
| ERROR_GOOGLEKEY | Неверный формат websiteKey или несоответствие домена ключа и URL. | Убедитесь, что ключ скопирован без лишних пробелов, а websiteURL точно соответствует домену. |
| ERROR_CAPTCHA_UNSOLVABLE | Капча не может быть решена (не удалось получить нужный minScore). | Попробуйте снизить значение minScore (например, до 0.3 или 0.2) или убедитесь, что верно указан apiDomain (www.recaptcha.net). |
| Токен не принимается формой | Неверный способ внедрения токена. | Убедитесь, что вы внедряете токен именно в поле g-recaptcha-response и триггерите событие change. |
Полезные ссылки
- Песочница для тестирования API: https://2captcha.com/setting#sandbox
- Документация API по reCAPTCHA v3: https://2captcha.com/api-docs/recaptcha-v3
- Расширение для обхода капч: https://2captcha.com/captcha-bypass-extension
- Browser API для парсинга: https://2captcha.com/scraper/browser-api/dashboard
- Python SDK на GitHub: https://github.com/2captcha/2captcha-python
- Другие примеры обхода капч на сайтах: https://2captcha.com/h?category=sites