Решение reCAPTCHA Enterprise с использованием CapMonster Cloud: полное руководство
Современные системы защиты для веб-сайтов становятся всё более сложными для обхода различными скриптами. Интеллектуальные алгоритмы, технологии машинного обучения и поведенческого анализа создают крепкий барьер для блокировки потенциальных угроз. Стандартные капчи уже представляют серьёзное препятствие, а для крупных компаний и сайтов с повышенными требованиями к безопасности разработаны ещё более усовершенствованные решения – к ним относится reCAPTCHA Enterprise.
В данной статье мы подробно рассмотрим, что такое reCAPTCHA Enterprise, чем она отличается от стандартных версий и как помогает защищать веб-ресурсы от различных атак. Вы узнаете, как распознать этот тип капчи на сайте, изучите основные характеристики и параметры, а также ознакомитесь с примерами решения капчи для успешной проверки и дальнейшего взаимодействия с веб-ресурсами.
Что такое reCAPTCHA Enterprise?
Итак, reCAPTCHA Enterprise – это версия известной системы защиты от компании Google, предназначенная для безопасности сайтов и приложений с высокими требованиями к безопасности. Она предоставляет дополнительные возможности и улучшенные механизмы защиты по сравнению с обычными версиями reCAPTCHA v2 и v3, делая её более подходящей для крупных компаний, финансовых учреждений и других организаций, работающих с конфиденциальными данными.
Особенности и преимущества
reCAPTCHA Enterprise применяет более сложные механизмы защиты, чем стандартные версии. Хотя методы проверки являются такими же – в v2 пользователи должны выполнить определённое задание, а в v3 осуществляется поведенческий анализ – версия Enterprise предлагает несколько значительных преимуществ:
- Гибкая настройка и детализированная аналитика. В reCAPTCHA Enterprise доступны более глубокие настройки и расширенная аналитика для администраторов сайтов. Это основное важное преимущество, которое позволяет тонко настраивать пороговые значения для оценки рисков, учитывать дополнительные факторы – поведение пользователя, скорость действий и местоположение.
- Минимизация фальшивых срабатываний. Благодаря использованию сложных алгоритмов и анализу рисков reCAPTCHA Enterprise позволяет снизить количество ложных срабатываний (false positives). Это особенно важно для крупных компаний и сервисов с большим числом пользователей, где ошибки могут привести к блокировке настоящих клиентов. В отличие от reCAPTCHA v2, где ошибка может быть очевидной (например, неправильно выбранные изображения), в Enterprise анализ более комплексный и включает дополнительные факторы, например, поведение и репутацию пользователя.
- Детальные отчёты. Предоставляет подробную информацию о взаимодействиях, включая причины блокировки или пометки на основе риск-профиля.
Чем отличаются Enterprise v2 и v3?
Подобно стандартным версиям (не Enterprise), данные версии отличаются способом проверки пользователей:
reCAPTCHA v2:
Пользователь должен решить визуальную или текстовую задачу (например, выбрать изображения со светофорами) или поставить галочку "Я не робот". Проверка может быть явной (challenge-based) и требует участия пользователя. Подходит для форм, входов и других отдельных точек проверки.
reCAPTCHA v3:
Невидимая проверка, которая работает в фоновом режиме. Оценивает поведение пользователя на странице и присваивает оценку риска (risk score) от 0.0 до 1.0 (где 1.0 – настоящий пользователь, 0.0 – вероятный бот). Разработчик сам решает, какие действия предпринять в зависимости от оценки (например, блокировать доступ, требовать дополнительную верификацию). Идеальна для мониторинга активности на сайте, защиты платёжных страниц и анализа трафика.
Как определить версию Enterprise?
Чтобы определить, используется ли reCAPTCHA Enterprise на веб-странице, откройте Инструменты разработчика браузера и поизучайте исходный код страницы:
- Найдите специфические запросы, посмотрите на URL-адреса и параметры запросов. Если в запросах есть домен такого вида: /enterprise, это указывает на использование reCAPTCHA Enterprise.
- В стандартных версиях будет URL: ...recaptcha/api2/
Автоматизация взаимодействия
Этот тип капчи эффективно защищает сайты от взломов, атак и других злонамеренных действий. Однако автоматизация взаимодействия с reCAPTCHA Enterprise может потребоваться и в благородных целях. Самостоятельно решать такие капчи автоматически – задача сложная, требующая глубоких технических знаний, проще всего обратиться к специальным сервисам – например, CapMonster Cloud. Этот сервис, используя возможности искусственного интеллекта, решает капчи быстро и эффективно, значительно сокращая временные и финансовые затраты. Он станет вашим незаменимым помощником, если ваша деятельность связана со следующими направлениями:
- Тестирование и разработка
- Автоматизация тестов: Разработчики могут создавать автоматические тесты для веб-приложений, которые используют reCAPTCHA. Чтобы тесты проходили корректно, нужно эмулировать её решение.
- Контроль качества (QA): Инженеры по качеству могут проверять работу системы, включая поведение сайта при прохождении или провале капчи.
- Этичный веб-скрапинг
- Мониторинг цен и конкурентов: Компании, занимающиеся мониторингом цен, могут использовать автоматизацию для сбора данных о товарах и услугах с сайтов, на которых установлена капча.
- Анализ данных для исследований: Учёные и аналитики могут собирать данные для экономических, социальных или научных исследований.
- Инструменты кибербезопасности
- Пентесты: Эксперты по информационной безопасности проверяют уязвимости веб-приложений, включая устойчивость к ботам и атакам. Для этого необходимо тестировать обход защитных механизмов.
- Анализ уязвимостей: Проверка эффективности капчи в защите от автоматизированных атак.
Автоматизация решения капчи также может помочь тем пользователям, которые сталкиваются с трудностями при прохождении reCAPTCHA из-за ограниченной подвижности или нарушений зрения. В таких случаях специальные методы позволяют обеспечить более удобный и доступный способ взаимодействия с сайтом.
Решение с помощью CapMonster Cloud
Сервис решает reCAPTCHA Enterprise с помощью браузерного расширения (для Chrome и Firefox) и через API. Если вам необходимо интегрировать решение капчи в свой код с помощью API, следуйте следующим шагам:
- Создайте аккаунт на CapMonster Cloud, пополните баланс, получите API-ключ из личного кабинета – он понадобится для интеграции.
- Ознакомьтесь с необходимой информацией из документации, которая понадобиться для успешного решения капчи через сервис:
Параметры запроса
CapMonster Cloud поддерживает решение reCAPTCHA Enterprise версии 2. Используется два типа задач – RecaptchaV2EnterpriseTaskProxyless (без прокси) и RecaptchaV2EnterpriseTask (с прокси). Различия между ними такие:
RecaptchaV2EnterpriseTaskProxyless:
Этот тип задачи не требует указания прокси. CapMonster Cloud использует собственные прокси-серверы для решения капчи. Подходит для простых задач, когда не требуется использовать IP-адрес из определенного региона или обеспечить соответствие IP пользователя и сервера решения капчи.
RecaptchaV2EnterpriseTask:
Требует указания прокси-сервера для решения капчи. Это позволяет эмулировать запросы с определенного IP-адреса. Необходимо, если сайт проверяет соответствие IP-адреса при решении капчи или требуется доступ из определённой страны. Повышает вероятность успешного решения на сайтах с географическими или IP-ограничениями.
Выберите тип задачи, который лучше всего соответствует вашим требованиям, и изучите дополнительные параметры в зависимости от выбранного варианта:
type<string>обязательно
RecaptchaV2EnterpriseTaskProxyless
websiteURL<string>обязательно
Адрес страницы, на которой решается капча.
websiteKey<string>обязательно
Ключ-идентификатор reCAPTCHA на целевой странице.
<div class="g-recaptcha" data-sitekey="THIS_ONE"></div>
или <iframe title="reCAPTCHA" src="...;k=6LdIFr0ZAAAAAO3vz0O0OQrtAefzdJcWQM2TMYQH&... , где 6LdIFr0ZAAAAAO3vz0O0OQrtAefzdJcWQM2TMYQH - websiteKey
enterprisePayload<string>необязательно
Некоторые реализации виджета reCAPTCHA Enterprise могут содержать дополнительное поле s в структуре, которая передаётся в метод grecaptcha.enterprise.render вместе с sitekey. Например: 2JvUXHNTnZl1Jb6WEvbDyB...ugQA из <pre lang="js" ><code>grecaptcha.enterprise.render("some-div-id", { sitekey: "6Lc_aCMTAAAAABx7u2N0D1XnVbI_v6ZdbM6rYf16" theme: "dark" s: "2JvUXHNTnZl1Jb6WEvbDyB...ugQA" });</code></pre>
apiDomain<string>необязательно
Адрес домена с которого загружать reCAPTCHA Enterprise. Например:
- www.google.com
- www.recaptcha.net
Не используйте параметр, если не знаете зачем он нужен.
userAgent<string>необязательно
User-Agent браузера, используемый в эмуляции. Необходимо использовать подпись современного браузера, иначе Google будет возвращать ошибку, требуя обновить браузер.
cookies<string>необязательно
Дополнительные cookies которые мы должны использовать во время взаимодействия с целевой страницей.
Формат: cookiename1=cookievalue1; cookiename2=cookievalue2
type<string>обязательно
RecaptchaV2EnterpriseTask
websiteURL<string>обязательно
Адрес страницы, на которой решается капча.
websiteKey<string>обязательно
Ключ-идентификатор reCAPTCHA на целевой странице.
<div class="g-recaptcha" data-sitekey="THIS_ONE"></div>
или <iframe title="reCAPTCHA" src="...;k=6LdIFr0ZAAAAAO3vz0O0OQrtAefzdJcWQM2TMYQH&... , где 6LdIFr0ZAAAAAO3vz0O0OQrtAefzdJcWQM2TMYQH - websiteKey
enterprisePayload<string>необязательно
Некоторые реализации виджета reCAPTCHA Enterprise могут содержать дополнительное поле s в структуре, которая передаётся в метод grecaptcha.enterprise.render вместе с sitekey.
Например: 2JvUXHNTnZl1Jb6WEvbDyB...ugQA из <pre lang="js" ><code>grecaptcha.enterprise.render("some-div-id", { sitekey: "6Lc_aCMTAAAAABx7u2N0D1XnVbI_v6ZdbM6rYf16" theme: "dark" s: "2JvUXHNTnZl1Jb6WEvbDyB...ugQA" });</code></pre>
apiDomain<string>необязательно
Адрес домена с которого загружать reCAPTCHA Enterprise. Например:
- www.google.com
- www.recaptcha.net
Не используйте параметр, если не знаете зачем он нужен.
userAgent<string>необязательно
User-Agent браузера, используемый в эмуляции. Необходимо использовать подпись современного браузера, иначе Google будет возвращать ошибку, требуя обновить браузер.
cookies<string>необязательно
Дополнительные cookies которые мы должны использовать во время взаимодействия с целевой страницей.
Формат: cookiename1=cookievalue1; cookiename2=cookievalue2
proxyType<string>обязательно
http - обычный http/https прокси;
https - попробуйте эту опцию только если "http" не работает (требуется для некоторых кастомных прокси);
socks4 - socks4 прокси;
socks5 - socks5 прокси.
proxyAddress<string>обязательно
IP адрес прокси IPv4/IPv6. Не допускается:
использование имен хостов;
использование прозрачных прокси (там где можно видеть IP клиента);
использование прокси на локальных машинах.
proxyPort<integer>обязательно
Порт прокси.
proxyLogin<string>необязательно
Логин прокси-сервера.
proxyPassword<string>необязательно
Пароль прокси-сервера.
Метод создания задачи
Используйте метод POST:
https://api.capmonster.cloud/createTask
Как должен выглядеть запрос:
{
"clientKey":"API_KEY",
"task": {
"type":"RecaptchaV2EnterpriseTaskProxyless",
"websiteURL":"https://mydomain.com/page-with-recaptcha-enterprise",
"websiteKey":"6Lcg7CMUAAAAANphynKgn9YAgA4tQ2KI_iqRyTwd",
"enterprisePayload": {
"s": "SOME_ADDITIONAL_TOKEN"
}
}
}
Успешный ответ:
{
"errorId":0,
"taskId":407533072
}
Метод получения результата задачи
Используйте метод getTaskResult, чтобы получить решение. В зависимости от загрузки системы вы получите ответ через время в диапазоне от 10 с до 80 с. Используйте метод POST:
https://api.capmonster.cloud/getTaskResult
Запрос:
{
"clientKey":"API_KEY",
"taskId": 407533072
}
Успешный ответ:
{
"errorId":0,
"status":"ready",
"solution": {
"gRecaptchaResponse":"3AHJ_VuvYIBNBW5yyv0zRYJ75VkOKvhKj9_xGBJKnQimF72rfoq3Iy-DyGHMwLAo6a3"
}
}
gRecaptchaResponse – Хеш, который необходимо подставить в форму с reCAPTCHA Enterprise в <textarea id="g-recaptcha-response" ..></textarea>. Имеет длину от 500 до 2190 байт.
Примеры кода с использованием официальных библиотек CapMonster Cloud
Для вашего удобства сервис имеет собственные библиотеки для автоматического разгадывания многих типов капч. Для примера возьмём языки С#, Python и JavaScript:
C#
https://github.com/ZennoLab/capmonstercloud-client-dotnet
RecaptchaV2EnterpriseProxyless
using Zennolab.CapMonsterCloud.Requests;
using Zennolab.CapMonsterCloud;
class Program
{
static async Task Main(string[] args)
{
var clientOptions = new ClientOptions
{
ClientKey = "your_api_key" // Замените на ваш API-ключ от CapMonster Cloud
};
var cmCloudClient = CapMonsterCloudClientFactory.Create(clientOptions);
var recaptchaV2EnterpriseRequest = new RecaptchaV2EnterpriseProxylessRequest
{
WebsiteUrl = "https://example.com", // Адрес сайта с капчей
WebsiteKey = "6Lf56sWnAAAAAIKLuWNYgRsFUfmI-5Lex3xT5N-s", // Замените на ключ сайта (site key)
EnterprisePayload = "{\"s\":\"SOME_ADDITIONAL_TOKEN\"}" // Дополнительный токен (если требуется)
};
var recaptchaV2EnterpriseResult = await cmCloudClient.SolveAsync(recaptchaV2EnterpriseRequest);
Console.WriteLine("Решение капчи: " + recaptchaV2EnterpriseResult.Solution.Value); // Вывод результата решения капчи
}
}
ReCaptchaV2Enterprise
using Zennolab.CapMonsterCloud.Requests;
using Zennolab.CapMonsterCloud;
class Program
{
static async Task Main(string[] args)
{
var clientOptions = new ClientOptions
{
ClientKey = "your_api_key" // Замените на ваш API-ключ от CapMonster Cloud
};
var cmCloudClient = CapMonsterCloudClientFactory.Create(clientOptions);
var recaptchaV2EnterpriseRequest = new RecaptchaV2EnterpriseRequest
{
WebsiteUrl = "https://example.com", // Адрес сайта с капчей
WebsiteKey = "6Lf56sWnAAAAAIKLuWNYgRsFUfmI-5Lex3xT5N-s", // Замените на ключ сайта (site key)
EnterprisePayload = "{\"s\":\"SOME_ADDITIONAL_TOKEN\"}", // Дополнительный токен (если требуется)
ProxyType = ProxyType.Http, // Тип прокси
ProxyAddress = "8.8.8.8", // Адрес прокси-сервера
ProxyPort = 8080, // Порт прокси-сервера
ProxyLogin = "proxyLoginHere", // Логин для прокси (если требуется)
ProxyPassword = "proxyPasswordHere" // Пароль для прокси (если требуется)
};
var recaptchaV2EnterpriseResult = await cmCloudClient.SolveAsync(recaptchaV2EnterpriseRequest);
Console.WriteLine("Решение капчи: " + recaptchaV2EnterpriseResult.Solution.Value); // Вывод результата решения капчи
}
}
Python
https://github.com/ZennoLab/capmonstercloud-client-python
RecaptchaV2EnterpriseProxyless
import asyncio
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import RecaptchaV2EnterpriseProxylessRequest
client_options = ClientOptions(api_key="your_api_key") # Замените на ваш API-ключ от CapMonster Cloud
cap_monster_client = CapMonsterClient(options=client_options)
recaptcha2request = RecaptchaV2EnterpriseProxylessRequest(
websiteUrl="https://example.com", # Адрес сайта с капчей
websiteKey="6Lf56sWnAAAAAIKLuWNYgRsFUfmI-5Lex3xT5N-s", # Замените на ваш ключ сайта (websiteKey)
enterprisePayload={ # Дополнительный токен (если требуется)
"s": "SOME_ADDITIONAL_TOKEN"
}
)
async def solve_captcha():
return await cap_monster_client.solve_captcha(recaptcha2request)
responses = asyncio.run(solve_captcha())
print(responses) # Вывод решения капчи
ReCaptchaV2Enterprise
import asyncio
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import RecaptchaV2EnterpriseRequest
client_options = ClientOptions(api_key="your_api_key") # Замените на ваш API-ключ от CapMonster Cloud
cap_monster_client = CapMonsterClient(options=client_options)
recaptcha2request = RecaptchaV2EnterpriseRequest(
websiteUrl="https://example.com", # Адрес сайта с капчей
websiteKey="6Lf56sWnAAAAAIKLuWNYgRsFUfmI-5Lex3xT5N-s", # Замените на ваш ключ сайта (websiteKey)
enterprisePayload={ # Дополнительный токен (если требуется)
"s": "SOME_ADDITIONAL_TOKEN"
},
proxy_type="http", # Тип прокси (http, https, socks5)
proxy_address="8.8.8.8", # Адрес прокси-сервера
proxy_port=8080, # Порт прокси-сервера
proxy_login="proxyLoginHere", # Логин для прокси (если требуется)
proxy_password="proxyPasswordHere" # Пароль для прокси (если требуется)
)
async def solve_captcha():
return await cap_monster_client.solve_captcha(recaptcha2request)
responses = asyncio.run(solve_captcha())
print(responses) # Вывод решения капчи
JavaScript (с использованием браузера)
https://github.com/ZennoLab/capmonstercloud-client-js
RecaptchaV2EnterpriseProxyless
import { CapMonsterCloudClientFactory, ClientOptions, RecaptchaV2EnterpriseProxylessRequest } from '@zennolab_com/capmonstercloud-client';
document.addEventListener('DOMContentLoaded', async () => {
const cmcClient = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: '<your capmonster.cloud API key>' })); // Замените на ваш API-ключ от CapMonsterCloud
const recaptchaV2EnterpriseRequest = new RecaptchaV2EnterpriseProxylessRequest({
websiteURL: 'https://mydomain.com/page-with-recaptcha-enterprise', // Адрес сайта с капчей
websiteKey: '6Lf56sWnAAAAAIKLuWNYgRsFUfmI-5Lex3xT5N-s', // Замените на ваш ключ сайта (websiteKey)
enterprisePayload: {
s: 'SOME_ADDITIONAL_TOKEN', // Дополнительный токен (если требуется)
},
});
console.log(await cmcClient.Solve(recaptchaV2EnterpriseRequest));
});
RecaptchaV2Enterprise
import { CapMonsterCloudClientFactory, ClientOptions, RecaptchaV2EnterpriseRequest } from '@zennolab_com/capmonstercloud-client';
document.addEventListener('DOMContentLoaded', async () => {
const cmcClient = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: '<your capmonster.cloud API key>' })); // Замените на ваш API-ключ от CapMonsterCloud
const recaptchaV2EnterpriseRequest = new RecaptchaV2EnterpriseRequest({
websiteURL: 'https://mydomain.com/page-with-recaptcha-enterprise', // Адрес сайта с капчей
websiteKey: '6Lf56sWnAAAAAIKLuWNYgRsFUfmI-5Lex3xT5N-s', // Замените на ваш ключ сайта (websiteKey)
enterprisePayload: {
s: 'SOME_ADDITIONAL_TOKEN', // Дополнительный токен (если требуется)
},
proxyType: 'http', // Тип прокси (http, https, socks5)
proxyAddress: '8.8.8.8', // Порт прокси-сервера
proxyPort: 8080, // Порт прокси-сервера
proxyLogin: 'proxyLoginHere', // Логин для прокси (если требуется)
proxyPassword: 'proxyPasswordHere', // Пароль для прокси (если требуется)
userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36',
});
console.log(await cmcClient.Solve(recaptchaV2EnterpriseRequest));
});
JavaScript (с использованием Node.js)
// https://github.com/ZennoLab/capmonstercloud-client-js
RecaptchaV2EnterpriseProxyless
const { CapMonsterCloudClientFactory, ClientOptions, RecaptchaV2EnterpriseProxylessRequest } = require('@zennolab_com/capmonstercloud-client');
async function run() {
const cmcClient = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: 'your_api_key' })); // Замените на ваш API-ключ от CapMonsterCloud
const recaptchaRequest = new RecaptchaV2EnterpriseProxylessRequest({
websiteURL: 'https://example.com/', // Адрес сайта с капчей
websiteKey: '6Lf56sWnAAAAAIKLuWNYgRsFUfmI-5Lex3xT5N-s', // Замените на ваш ключ сайта (websiteKey)
enterprisePayload: {
s: 'SOME_ADDITIONAL_TOKEN', // Дополнительный токен (если требуется)
},
});
const response = await cmcClient.Solve(recaptchaRequest);
if (!response?.solution) throw new Error('Captcha not solved.');
console.log('Решение капчи:', response.solution);
}
run()
.then(() => {
console.log('ГОТОВО');
process.exit(0);
})
.catch((err) => {
console.error(err);
process.exit(1);
});
RecaptchaV2Enterprise
const { CapMonsterCloudClientFactory, ClientOptions, RecaptchaV2EnterpriseRequest, ProxyType } = require('@zennolab_com/capmonstercloud-client');
async function run() {
const cmcClient = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: 'your_api_key' }) // Замените на ваш API-ключ от CapMonsterCloud
);
const recaptchaRequest = new RecaptchaV2EnterpriseRequest({
websiteURL: 'https://example.com/', // Адрес сайта с капчей
websiteKey: '6Lf56sWnAAAAAIKLuWNYgRsFUfmI-5Lex3xT5N-s', // Замените на ваш ключ сайта (websiteKey)
enterprisePayload: {
s: 'SOME_ADDITIONAL_TOKEN', // Дополнительный токен (если требуется)
},
proxyType: ProxyType.Http, // Тип прокси (http, https, socks5)
proxyAddress: '8.8.8.8', // Адрес прокси-сервера
proxyPort: 8080, // Порт прокси-сервера
proxyLogin: 'proxyLoginHere', // Логин для прокси (если требуется)
proxyPassword: 'proxyPasswordHere', // Пароль для прокси (если требуется)
userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36' // Используйте актуальный UserAgent
});
const response = await cmcClient.Solve(recaptchaRequest);
if (!response?.solution) throw new Error('Captcha not solved.');
console.log('Решение капчи:', response.solution);
}
run()
.then(() => {
console.log('ГОТОВО');
process.exit(0);
})
.catch((err) => {
console.error(err);
process.exit(1);
});
Получение и использование токена: как подставить решение на страницу
В большинстве случаев вставка решения reCAPTCHA Enterprise осуществляется через браузер. Это связано с тем, что этот тип проверки работает на клиентской стороне и использует JavaScript для выполнения сложных проверок. Можно использовать инструменты по автоматизации браузера (например, Puppeteer или Selenium). Для вставки решения также понадобится изучить код страницы и найти соответствующую форму, а затем использовать этот элемент в своём коде и подтвердить проверку.
- В качестве инструментов для примера возьмём Python и Selenium. Для начала необходимо изучить целевую страницу с капчей и найти все нужные для решения сервисом CapMonster Cloud параметры и тот самый элемент, куда нужно подставлять токен. Обычно он содержится в textarea и выглядит так:
- После решения капчи и получения токена, с помощью Selenium находим этот элемент:
textarea = driver.find_element(By.ID, "g-recaptcha-response")
- Многие сайты скрывают textarea для reCAPTCHA (display: none), чтобы пользователь не мог взаимодействовать напрямую. В некоторых браузерах или версиях Selenium элементы, которые полностью скрыты, могут не получать данные через .send_keys(). Открытие элемента делает его доступным для ввода. Но делать textarea видимым необязательно, эта строка – просто дополнительная мера на случай проблем с невидимыми элементами:
driver.execute_script("arguments[0].style.display = 'block';", textarea)
- Осуществляем вставку токена в форму с помощью .send_keys:
textarea.send_keys(captcha_token)
- Подтвердить решение можно с помощью клика (используем ActionChains) по кнопке (допустим, элемент в нашем примере имеет название button[data-action='demo_action']:
button = driver.find_element(By.CSS_SELECTOR, "button[data-action='demo_action']")
ActionChains(driver).move_to_element(button).click(button).perform()
Или же использовать автоматическую отправку формы:
driver.execute_script("document.forms[0].submit();")
- Полный код для решения RecaptchaV2EnterpriseProxyless:
import asyncio
import time
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import RecaptchaV2EnterpriseProxylessRequest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
# Настройка Selenium
driver = webdriver.Chrome()
driver.get("https://example.com") # Загрузка страницы с капчей
# Настройка CapMonster Cloud
client_options = ClientOptions(api_key="your_api_key") # Замените на ваш API-ключ
cap_monster_client = CapMonsterClient(options=client_options)
# Получение sitekey (можно извлечь со страницы)
website_url = driver.current_url
website_key = "6Lf56sWnAAAAAIKLuWNYgRsFUfmI-5Lex3xT5N-s" # Замените на реальный ключ сайта
recaptcha_request = RecaptchaV2EnterpriseProxylessRequest(
websiteUrl=website_url,
websiteKey=website_key
)
# Решение капчи
async def solve_captcha():
return await cap_monster_client.solve_captcha(recaptcha_request)
responses = asyncio.run(solve_captcha())
captcha_token = responses["gRecaptchaResponse"] # Получение токена из ответа
# Вставка токена в элемент reCAPTCHA
textarea = driver.find_element(By.ID, "g-recaptcha-response")
driver.execute_script("arguments[0].style.display = 'block';", textarea) # Сделать видимым
textarea.send_keys(captcha_token) # Вставка токена
# Запуск события изменения и клик по кнопке подтверждения
button = driver.find_element(By.CSS_SELECTOR, "button[data-action='demo_action']")
ActionChains(driver).move_to_element(button).click(button).perform()
print("Капча успешно решена и отправлена!")
time.sleep(5)
driver.quit()
! Данный способ решения и подстановки токена в форму является примером для ознакомления – в каждом отдельном случае названия элементов и методы могут отличаться.
Обработка ошибок и оптимизация работы
Когда вы работаете с reCAPTCHA Enterprise, важно понимать, какие ошибки могут возникнуть и как их можно эффективно обрабатывать. В этом разделе мы расскажем о типичных ошибках при работе с API, а также поделимся рекомендациями по улучшению производительности и стабильности вашего скрипта. Всё это поможет вам сэкономить время и избежать ненужных проблем.
Типичные ошибки при работе с API и советы по улучшению процесса
- Неправильные параметры запроса
Часто бывает, что ошибка возникает из-за неправильных параметров, которые вы передаете в запросах. Например, это может быть ошибка в sitekey, неправильный URL или неправильный токен для решения капчи. Чтобы избежать подобных ситуаций, всегда проверяйте, что вы передаете верные данные.
Совет:
Убедитесь, что sitekey и url корректны для каждой страницы, на которой решаете капчу. Используйте соответствующие параметры в запросах, соответствующие типу капчи (например, для Enterprise капчи могут быть дополнительные параметры, такие как enterprisePayload). Прочитайте документацию и используйте правильные параметры для каждого запроса.
- Ошибка таймаута (timeout)
Иногда решение капчи может занять немного больше времени, чем вы ожидали. Если запрос не успевает завершиться вовремя, возникает ошибка таймаута. Чтобы этого избежать, полезно правильно настроить время ожидания и предусмотреть повторные попытки.
Совет:
Установите разумные таймауты для ваших запросов.
В случае таймаутов, используйте механизм повторных попыток, чтобы не терять решение.
- API-лимиты и частота запросов
У CapMonster Cloud есть лимиты на количество запросов, которые вы можете отправить в определенный промежуток времени. Если превысить этот лимит, могут возникнуть проблемы с производительностью или даже блокировки. Чтобы избежать этого, важно соблюдать ограничения и правильно распределять нагрузку.
Совет:
Следите за лимитами на количество запросов. Разделите запросы на более мелкие части, чтобы избежать блокировок.
- Интерактивное тестирование и мониторинг
Иногда полезно использовать инструменты для мониторинга в реальном времени, чтобы отслеживать взаимодействие с сайтом. Это поможет вам точно определить, где возникает ошибка.
Совет:
Используйте инструменты для мониторинга (например, Chrome DevTools или встроенные отладчики), чтобы видеть процесс решения капчи в реальном времени.
- Асинхронные запросы
Если ваш скрипт работает с несколькими капчами одновременно, асинхронные запросы могут значительно улучшить производительность. Асинхронность позволяет не блокировать выполнение других задач, пока решается капча.
Совет:
Попробуйте библиотеки, например, asyncio или aiohttp, чтобы сделать запросы асинхронными.
Итак, в нашей статье мы подробно рассказали, что такое reCAPTCHA Enterprise и как она помогает защищать сайты от автоматических атак. Мы объяснили, как распознать этот тип капчи на странице и предоставили примеры кода для её решения с использованием официальных библиотек CapMonster Cloud на разных языках программирования. Также мы показали, как правильно подставить токен в форму и подтвердить решение капчи.
Кроме того, мы поделились полезными советами по оптимизации работы с reCAPTCHA Enterprise и рассмотрели типичные ошибки, которые могут возникнуть при работе с API. Эти простые рекомендации помогут вам избежать проблем и сделать ваш скрипт более стабильным и быстрым!
Мы уверены, что следуя этим советам, вы сможете эффективно решать задачи, связанные с автоматическим решением reCAPTCHA Enterprise, а такие инструменты, как CapMonster Cloud, позволяют значительно упростить процесс и сэкономить время.
NB: Напоминаем, что продукт используется для автоматизации тестирования на ваших собственных сайтах и на сайтах, к которым у вас есть доступ на законных основаниях.