reCAPTCHA использует многоуровневую систему обнаружения, которая выходит далеко за рамки видимого флажка или проверки изображения. Он использует сложный механизм снятия сигналы браузера и поведенческого анализа, который идентифицирует автоматизированные инструменты еще до того, как пользователь начнет взаимодействовать с CAPTCHA. В этом руководстве подробно описаны все методы обнаружения, которые использует reCAPTCHA, и объясняется, как со всеми ними справляются решатели на основе API, такие как CaptchaAI.
Уровень обнаружения 1: проверка среды JavaScript
reCAPTCHA выполняет проверки JavaScript для обнаружения автономных браузеров и систем автоматизации.
Обнаружение сигнал WebDriver
Основной показатель автоматизации:
// Selenium/Puppeteer set this automatically
сигнал WebDriver === true // → Automation detected
// Real browser
сигнал WebDriver === undefined // or false → Normal browser
Если сигнал WebDriver равен true, reCAPTCHA немедленно помечает сеанс как автоматизированный, что обычно приводит к оценке 0,1 или ниже.
Отсутствуют API браузера
reCAPTCHA проверяет API, которые headless браузеры пропускают или реализуют по-другому:
// Probes reCAPTCHA performs (simplified)
const checks = {
// Chrome-specific object
hasChrome: !!window.chrome,
hasChromeRuntime: !!(window.chrome && window.chrome.runtime),
// Plugin and MIME type arrays
pluginCount: navigator.plugins.length,
mimeTypeCount: navigator.mimeTypes.length,
// Notification permission
notificationPermission: Notification.permission,
// Speech synthesis voices
speechVoices: window.speechSynthesis.getVoices().length,
// Performance observer
hasPerformanceObserver: typeof PerformanceObserver !== "undefined",
};
| Зонд | Ожидается (настоящий Chrome) | headless-режим хром | Обнаружение |
|---|---|---|---|
window.chrome |
Объект | неопределенный или минимальный | Автоматизация |
navigator.plugins |
2-5 плагинов | Пустой массив | Автоматизация |
navigator.permissions |
Объект с запросом() | Может выбросить или пропасть | Автоматизация |
Notification.permission |
"по умолчанию" | Может бросить | Автоматизация |
window.speechSynthesis |
Объект с голосами | Пустой или отсутствует | Автоматизация |
Вмешательство в цепочку прототипов
Сложные инструменты автоматизации переопределяют API браузера, чтобы скрыть свое присутствие. reCAPTCHA тесты на взлом:
// reCAPTCHA may check if native functions were modified
const nativeToString = Function.prototype.toString;
const pluginsToString = navigator.plugins.toString();
// Overridden functions have different toString output:
// Native: "function get plugins() { [native code] }"
// Overridden: "function () { return [...fakePlugins] }"
Уровень обнаружения 2: снятие сигналы браузера Canvas и WebGL
Сигналы среды на холсте
reCAPTCHA отображает скрытые элементы на холсте и считывает пиксельные данные. Результат зависит от ОС, графического процессора, механизма рендеринга шрифтов и настроек сглаживания:
// Simplified canvas сигналы браузера
const canvas = document.createElement("canvas");
const ctx = canvas.getContext("2d");
ctx.textBaseline = "alphabetic";
ctx.font = "14px Arial";
ctx.fillStyle = "#f60";
ctx.fillRect(125, 1, 62, 20);
ctx.fillStyle = "#069";
ctx.fillText("CaptchaTest,!", 2, 15);
const сигналы браузера = canvas.toDataURL();
// Unique per browser/OS/GPU combination
Сигналы обнаружения:
- Один и тот же Сигналы среды в разных сообщениях OS/browsers → Обнаружен спуфинг
- Операции Canvas возвращают данные униформы/blank → headless среда
- Сигналы среды соответствует известному headless шаблону Chrome →. Автоматизация отмечена.
Сигналы WebGL
const gl = document.createElement("canvas").getContext("webgl");
const debugInfo = gl.getExtension("WEBGL_debug_renderer_info");
const vendor = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);
const renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
// Real browser: "ANGLE (NVIDIA GeForce RTX 3060 Direct3D11 vs_5_0 ps_5_0)"
// Headless Chrome: "Google Inc. (Google SwiftShader)" ← Strong bot signal
SwiftShader — это программный графический процессор Google, который используется, когда аппаратный графический процессор недоступен. Это четкий индикатор headless среды.
Уровень обнаружения 3: Поведенческий анализ
Это самый сильный уровень обнаружения reCAPTCHA. Он отслеживает поведение пользователя от загрузки страницы до отправки формы.
Анализ движения мыши
reCAPTCHA records:
├─ Mouse coordinates at ~60fps intervals
├─ Velocity and acceleration at each point
├─ Trajectories between clickable elements
├─ Hover patterns over links and buttons
├─ Micro-movements while "stationary"
└─ Natural overshoot when targeting elements
Human pattern:
- Curved paths with variable speed
- Natural acceleration/deceleration (Fitts's Law)
- Random micro-jitter during hovering
- Occasional overshoot and correction
Bot pattern:
- Zero mouse events (no mouse simulation)
- Straight lines at constant speed
- Perfect targeting (no overshoot)
- Identical patterns across sessions
Анализ клавиатуры
reCAPTCHA records:
├─ Inter-key interval for each key pair
├─ Key hold duration (keydown to keyup)
├─ Error rate (backspace frequency)
├─ Typing rhythm consistency
└─ Input method (keyboard vs paste vs JavaScript)
Human pattern:
- Variable intervals (80-300ms typical)
- Faster for common character pairs
- Occasional errors and corrections
- keydown → keypress → keyup sequence
Bot pattern:
- Constant intervals or instant input
- No keypress events (value set via JS)
- Zero errors
- All characters appear simultaneously
Сроки и последовательность взаимодействия
reCAPTCHA records:
├─ Time from page load to first interaction
├─ Time from CAPTCHA rendering to click
├─ Scroll events and depths
├─ Focus/blur events on form fields
└─ Tab between fields vs click between fields
Suspicious patterns:
- First interaction < 1 second after page load
- CAPTCHA clicked immediately after rendering
- No scroll events before interacting with below-fold content
- All form fields filled in <500ms
Уровень обнаружения 4: анализ сети и IP
база данных репутации IP
Google поддерживает обширную информацию об IP:
- Известные диапазоны центров обработки данных: AWS (52.x.x.x, 54.x.x.x), GCP, Azure, DigitalOcean и т. д.
- Известные провайдеры прокси/VPN: NordVPN, ExpressVPN, коммерческие прокси-сервисы.
- Выходные узлы Tor: общедоступный список, регулярно обновляемый.
- История злоупотреблений: IP-адреса, вовлеченные в спам, очистку или сбор CAPTCHA.
- Географические закономерности. Быстрая смена местоположения указывает на шаблоны переходов VPN.
Снятие сигналы браузера TLS
Каждый HTTP-клиент создает уникальный Сигналы рукопожатия TLS (JA3/JA4):
Chrome 120: JA3 = 771,4865-4866-4867-49195-49199-49196..
Python/requests: JA3 = 771,4866-4867-4865-49196-49200..
curl/libcurl: JA3 = 771,49196-49200-159-52393-52392..
reCAPTCHA проверяет, соответствует ли TLS-сигналы заявленному агенту пользователя. Пользовательский агент Chrome с сигналы браузера Python TLS помечен как автоматизированный.
Анализ HTTP-заголовка
Real Chrome headers:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,...
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate, br
Sec-CH-UA: "Not_A Brand";v="8", "Chromium";v="120"
Sec-CH-UA-Platform: "Windows"
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Automation headers (missing or different):
- Missing Sec-CH-UA headers
- Missing Accept-Language
- Non-standard Accept header
- Missing Sec-Fetch-* headers
Уровень обнаружения 5: Межсессионный анализ
reCAPTCHA отслеживает закономерности в нескольких сеансах и сайтах:
- Корреляция сигналы браузера сеанса. Один и тот же Браузерные сигналы выполняет быстрые запросы на многих сайтах.
- Анализ шаблонов решения: Правильные ответы в пределах одинаковых временных интервалов (время решения человеком варьируется).
- Корреляция проблем и ответов: Несколько сеансов, решающих одинаковые задачи за считанные секунды.
- Временная шкала файлов cookie: Несколько новых сеансов с одного и того же IP без сохранения файлов cookie.
Как решатели на основе API справляются с обнаружением
Решатели на основе API, такие как CaptchaAI, контролируемая проверка систему обнаружения reCAPTCHA, работая в совершенно отдельной среде:
Your automation:
Extracts sitekey + pageurl from target page
↓
Sends to CaptchaAI API (HTTPS request to ocr.captchaai.com)
↓
CaptchaAI's solver environment:
├─ Real browser with genuine сигналы браузера (not headless)
├─ Human-like behavioral patterns
├─ Clean residential IP
├─ Valid cookies and session history
├─ Matching TLS/header сигналы браузераs
└─ Solves the challenge with human-like behavior
↓
Returns valid g-recaptcha-response token
↓
Your automation:
Submits token to target website
↓
Target website validates token with Google
→ Google sees a legitimate solve from a trusted environment
→ Token validated: success = true
Ключевая информация: Ваша система автоматизации никогда не взаимодействует с reCAPTCHA напрямую. Решатель выполняет все действия по снятию сигналы браузера, поведенческому анализу и выполнению задач в среде, оптимизированной для прохождения каждого уровня обнаружения. Вашему коду нужно только отправить полученный токен.
Пример Python
import requests
import time
API_KEY = "YOUR_API_KEY"
# Your automation only needs sitekey and pageurl
submit = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": "6LcR_RsTAAAAAN_r0GEkGBfq3L7KmU5JbPHJtwNp",
"pageurl": "https://https://staging.example.com/qa-login",
"json": 1,
})
task_id = submit.json()["request"]
# Poll for token
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY,
"action": "get",
"id": task_id,
"json": 1,
}).json()
if result.get("status") == 1:
token = result["request"]
# Submit this token to the target site's form
print("Token received — submit to target form")
break
Пример Node.js
const axios = require("axios");
async function solveRecaptcha(sitekey, pageurl) {
const API_KEY = "YOUR_API_KEY";
const { data: submit } = await axios.post(
"https://ocr.captchaai.com/in.php",
new URLSearchParams({
key: API_KEY,
method: "userrecaptcha",
googlekey: sitekey,
pageurl: pageurl,
json: 1,
})
);
const taskId = submit.request;
for (let i = 0; i < 60; i++) {
await new Promise(r => setTimeout(r, 5000));
const { data: result } = await axios.get(
"https://ocr.captchaai.com/res.php",
{ params: { key: API_KEY, action: "get", id: taskId, json: 1 } }
);
if (result.status === 1) return result.request;
}
throw new Error("Timeout");
}
Часто задаваемые вопросы
Может ли reCAPTCHA обнаружить, что использовался решатель API?
reCAPTCHA проверяет токен по своим собственным записям. Если среда решателя создала законное решение с человеческим поведением, токен действителен. Google видит решение обычного человека, а не стороннего сервиса. Сам токен не несет информации о том, как он был сгенерирован.
Всегда ли использование Selenium вызывает обнаружение reCAPTCHA?
Selenium по умолчанию с ChromeDriver по умолчанию обнаруживается немедленно из-за сигнал WebDriver = true, отсутствия API-интерфейсов Chrome и HTTP-заголовков ChromeDriver. Selenium со скрытой настройкой (undetected-chromedriver, стандартная конфигурация браузера-плагины) может снизить уровень обнаружения, но не устраняет его. Решение на основе API полностью позволяет избежать этой проблемы, поскольку не взаимодействует с reCAPTCHA в вашем браузере.
Как быстро reCAPTCHA обновляет свои методы обнаружения?
Google постоянно обновляет эвристику обнаружения reCAPTCHA. Основные обновления происходят каждые несколько месяцев. Новые методы обнаружения автономных браузеров обычно внедряются в течение нескольких недель после выпуска нового инструмента автоматизации. Службы решения API, такие как CaptchaAI, немедленно адаптируются к этим изменениям, поскольку поддерживают собственные оптимизированные среды решения.
Обменивает ли reCAPTCHA данные обнаружения между веб-сайтами?
Да. Анализ рисков reCAPTCHA включает межсайтовые сигналы через файл cookie _GRECAPTCHA и серверную аналитику Google. Плохое поведение на одном сайте, защищенном reCAPTCHA, может снизить оценки на других сайтах, использующих тот же профиль браузера.
Краткое содержание
reCAPTCHA обнаруживает автоматизацию на пяти уровнях: зондирование среды JavaScript (headless обнаружение), снятие сигналы браузера Canvas/WebGL, поведенческий анализ (мышь, клавиатура, прокрутка), сетевая репутация /IP и межсессионный анализ. Решатели на основе API, такие какCaptchaAIобрабатывать все пять уровней, решая задачи в отдельной оптимизированной среде и возвращая действительный токен. Ваш код автоматизации никогда напрямую не взаимодействует с reCAPTCHA, что делает его невидимым для системы обнаружения.
Похожие статьи
- Как решить обратный вызов Recaptcha V2 с помощью API
- Cloudflare Turnstile Recaptcha V2. Обработка на той же площадке.
- Подробное описание Recaptcha Enterprise Assessment API