Эта статья была полезной?
Как определить тип капчи на сайте
Технический специалист
Кратко: Перед интеграцией с 2Captcha API важно точно определить тип защиты на целевом сайте. От этого зависят параметры запроса (type,websiteKey, websiteURL), формат токена и способ его применения. В этом гайде — пошаговая инструкция по идентификации капчи через DevTools и таблица с признаками популярных типов.
Классификация капч и требования API
Разные системы защиты работают по-разному:
| Тип капчи | Ключевой параметр | Тип задачи API v2 | Особенность |
|---|---|---|---|
| reCAPTCHA v2 | data-sitekey | RecaptchaV2TaskProxyless | Требуется токен в поле g-recaptcha-response |
| reCAPTCHA v3 | data-sitekey | RecaptchaV3TaskProxyless | Возвращает score, нет видимого виджета |
| Cloudflare Turnstile | data-sitekey | TurnstileTaskProxyless | Аналог reCAPTCHA, но свой домен |
| GeeTest v3/v4 | gt, challenge | GeeTestTaskProxyless | Slider или puzzle, динамические параметры |
| FunCaptcha | public_key | FunCaptchaTaskProxyless | iframe с игрой, нужен blob или token |
Важно: Если отправить задачу с неверным type или параметрами, API вернет ошибку
ERROR_BAD_PARAMETERSили токен будет отклонен целевым сайтом.
Шаг 1. Откройте DevTools
- Нажмите F12 или Ctrl+Shift+I (Cmd+Option+I на Mac).
- Перейдите на вкладку Elements для анализа HTML или Network для отслеживания запросов.
Шаг 2. Найдите признаки капчи в коде страницы
Поиск по HTML (вкладка Elements)
Используйте Ctrl+F и ищите по ключевым строкам:
recaptcha
turnstile
geetest
arkose
data-sitekey
Примеры разметки
Google reCAPTCHA v2
html
<div class="g-recaptcha" data-sitekey="6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-"></div>
<script src="https://www.google.com/recaptcha/api.js"></script>
Cloudflare Turnstile
html
<div class="cf-turnstile" data-sitekey="0x4AAAAAAAvkH5Z8J9Z8J9Z8"></div>
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js"></script>
GeeTest v4
html
<div id="captcha"></div>
<script>
initGeetest4({ captchaId: "abc123", product: "bind" });
</script>
Шаг 3. Проверьте загружаемые скрипты (вкладка Network)
- Обновите страницу с открытой вкладкой Network.
- Отфильтруйте по JS или введите в поиск:
recaptcha/api.js
turnstile/v0/api.js
geetest.com
arkoselabs.com
Совет: Если скрипт загружается динамически — включите фильтр Preserve log и выполните действие, которое вызывает капчу (клик, отправка формы).
Шаг 4. Извлеките sitekey / параметры
Где искать sitekey:
| Источник | Как найти |
|---|---|
| Атрибут HTML | data-sitekey="..." в div виджета |
| URL iframe | Параметр k=... в src iframe |
| JS-конфиг | В объекте ___grecaptcha_cfg или hcaptcha.render() |
| Сетевой запрос | В запросах к api.js или challenge |
Пример извлечения для reCAPTCHA:
javascript
// В консоли браузера
document.querySelector('.g-recaptcha').dataset.sitekey;
// или
___grecaptcha_cfg.clients[0].P.V.s; // может меняться
Особые случаи
Невидимая капча
Не отображает checkbox. Признаки:
- Виджет появляется только после submit или подозрительного действия.
- В коде есть grecaptcha.execute() или size: "invisible".
- Нет видимого div.g-recaptcha.
Решение: Ищите sitekey в JS-файлах или сетевых запросах при инициализации.
Динамическая загрузка
Капча рендерится после:
- Клика по кнопке;
- Валидации формы;
- Определения бот-поведения.
Решение:
- Откройте вкладку Network.
- Выполните целевое действие.
- Отслеживайте новые запросы к recaptcha, geetest и т.д.
Shadow DOM
Виджет скрыт внутри #shadow-root.
Как найти:
- В DevTools включите Show user agent shadow DOM (настройки → Preferences → Elements).
- Или выполните в консоли:
javascript
document.querySelector('target-element').shadowRoot.innerHTML;
Примерные данные для капч
| Признак | reCAPTCHA | Turnstile | GeeTest | FunCaptcha |
|---|---|---|---|---|
| Домен скрипта | google.com/recaptcha | challenges.cloudflare.com | static.geetest.com | arkoselabs.com |
| Класс виджета | g-recaptcha | cf-turnstile | geetest_<...> | arkose-<...> |
| Параметр | data-sitekey | data-sitekey | data-gt, challenge | data-pkey |
| Iframe src | recaptcha/api2/anchor | turnstile/v0 | geetest.com/fullpage | arkoselabs.com/fc/ |
| Тип задачи API v2 | RecaptchaV2TaskProxyless | TurnstileTaskProxyless | GeeTestTaskProxyless | FunCaptchaTaskProxyless |
Работа с API 2Captcha
Создание задачи
Endpoint: POST https://api.2captcha.com/createTask
Пример: reCAPTCHA v2
json
{
"clientKey": "ВАШ_API_KEY",
"task": {
"type": "RecaptchaV2TaskProxyless",
"websiteURL": "https://example.com/login",
"websiteKey": "6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-",
"isInvisible": false
}
}
Пример: Cloudflare Turnstile
json
{
"clientKey": "ВАШ_API_KEY",
"task": {
"type": "TurnstileTaskProxyless",
"websiteURL": "https://example.com",
"websiteKey": "0x4AAAAAAAvkH5Z8J9Z8J9Z8"
}
}
Пример: GeeTest v4
json
{
"clientKey": "ВАШ_API_KEY",
"task": {
"type": "GeeTestV4TaskProxyless",
"websiteURL": "https://example.com",
"captchaId": "abc123xyz",
"initParameters": {}
}
}
Ответ при успехе:
json
{
"errorId": 0,
"taskId": 123456789
}
Получение результата
Endpoint: POST https://api.2captcha.com/getTaskResult
json
{
"clientKey": "ВАШ_API_KEY",
"taskId": 123456789
}
Ответ с токеном:
json
{
"errorId": 0,
"status": "ready",
"solution": {
"gRecaptchaResponse": "03AGdBq24FBCD...",
"token": "eyJ0eXAiOiJKV1QiLCJh..." // для Turnstile/hCaptcha
}
}
Рекомендация: Опрос getTaskResult выполняйте с интервалом 3–5 секунд.
Внедрение токена в форму
reCAPTCHA v2/v3
javascript
document.getElementById('g-recaptcha-response').value = '03AGdBq24FBCD...';
document.querySelector('form').submit();
Turnstile
javascript
// Turnstile обычно сам подставляет токен через callback
// Если нужно вручную:
document.querySelector('[name="cf-turnstile-response"]').value = 'TOKEN';
GeeTest
javascript
// Передайте параметры из solution в форму:
{
"geetest_challenge": "...",
"geetest_validate": "...",
"geetest_seccode": "..."
}
Заключение
Заключение
Корректное определение типа капчи — это ключевой шаг перед интеграцией с API. Ошибка на этом этапе почти всегда приводит к невалидным токенам, дополнительным запросам и сложной отладке. Гораздо эффективнее заранее точно определить систему защиты, чем разбираться с последствиями неверной конфигурации.
Использование DevTools позволяет быстро и надёжно извлечь все необходимые параметры: тип капчи, sitekey, дополнительные идентификаторы и особенности рендеринга (invisible, динамическая загрузка, Shadow DOM). После этого остаётся лишь правильно сопоставить их с типом задачи в API и корректно передать в запрос.
Итоговый чек-лист
Перед отправкой задачи убедитесь, что:
- тип капчи определён без предположений, а по фактическим признакам страницы
- все ключевые параметры (websiteKey, captchaId, gt, challenge и др.) корректно извлечены
- websiteURL указан полностью и совпадает с реальной страницей
- выбран соответствующий тип задачи API
- учтены особенности рендеринга (invisible / динамическая / Shadow DOM)
- реализована корректная обработка и получение результата
- токен вставляется в строго ожидаемое поле формы
При соблюдении этих условий интеграция становится предсказуемой, стабильной и легко масштабируемой.