Механизм расширенного анализа рисков (ARA) reCAPTCHA оценивает десятки сигналов и выдает оценку от 0,0 (определенный бот) до 1,0 (определенный человек). Эта оценка определяет, видите ли вы отсутствие вызова, флажка, сетки изображения или жесткого блока. Google не публикует точный алгоритм оценки, но обширное тестирование и реверс-инжиниринг выявили ключевые факторы. Это всесторонний технический анализ того, что влияет на счет.
Категории коэффициентов оценки
reCAPTCHA оценивает сигналы по пяти категориям, каждая из которых влияет на итоговую оценку:
Final Score = f(Browser Signals, Behavioral Signals, Network Signals,
History Signals, Environmental Signals)
Категория 1: Сигналы браузера (вес: высокий)
Сигналы браузера определяют, является ли клиент настоящим браузером или автоматизированным инструментом.
Наличие JavaScript API
reCAPTCHA проверяет API, которых нет в headless браузерах или которые реализованы по-другому:
| API проверено | Ожидается в реальном браузере | headless-режим индикатор |
|---|---|---|
сигнал WebDriver |
undefined или false |
true (Селен, Puppeteer) |
navigator.plugins |
PluginArray с более чем 1 элементами | Пустой или отсутствует |
navigator.languages |
Массив со строками локали | Пустой массив или отсутствует |
navigator.hardwareConcurrency |
2–16 (соответствует процессору) | Иногда 0 или неопределенное |
navigator.deviceMemory |
2–16 ГБ | Пропал без вести в каком-то headless |
window.chrome |
Объект со временем выполнения и т. д. | Отсутствует в headless Chrome |
Notification.permission |
«по умолчанию», «разрешено» или «отказано» | Бросает или отсутствует |
Влияние на оценку. Отсутствие или неправильные значения для этих API могут снизить оценку на 0,3–0,5 балла.
Сигналы среды на холсте
reCAPTCHA отображает скрытые элементы холста и считывает данные пикселей. Результатом является Сигналы среды, уникальный для комбинации браузера /OS/GPU.
// reCAPTCHA performs something similar to:
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
ctx.textBaseline = "top";
ctx.font = "14px 'Arial'";
ctx.fillText("Hello", 2, 2);
const сигналы браузера = canvas.toDataURL();
Влияние на оценку:
- Браузер с постоянным совпадением сигналы браузера/OS Декларация → Нейтральный
- Сигналы среды соответствует известному headless образцу → от -0,3 до -0,5.
- Операции с холстом заблокированы или возвращают унифицированные данные → от -0,4 до -0,6
WebGL-рендерер
Строка рендеринга WebGL показывает графический процессор:
const gl = document.createElement('canvas').getContext('webgl');
const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');
const renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
// Expected: "ANGLE (NVIDIA GeForce GTX 1060...)"
// Headless: "SwiftShader" or "Google SwiftShader"
Влияние на оценку. SwiftShader (программный рендерер Google, используемый в Headless Chrome) — мощный индикатор ботов, снижающий оценки на 0,3–0,5.
Категория 2: Поведенческие сигналы (вес: очень высокий)
Поведенческие сигналы имеют наибольший вес при подсчете баллов. Они собираются с момента загрузки страницы.
Движение мыши
reCAPTCHA отслеживает координаты мыши и временные метки на протяжении всего посещения страницы:
| Сигнал | Образец человека | Шаблон бота |
|---|---|---|
| Количество перемещений | 50-500+ событий за посещение страницы | 0-5 событий |
| Траектория | Изогнутые дорожки с переменной скоростью | Прямые линии, постоянная скорость |
| Ускорение | Естественная легкость-in/ease-out | Мгновенный старт/stop |
| Микродвижения | Небольшое дрожание при зависании | Совершенно неподвижно между действиями |
| Превышение целевого показателя | Небольшое превышение с коррекцией | Точный таргетинг |
Влияние на оценку: отсутствие движения мыши снижает оценку на 0,4–0,7.
Активность клавиатуры
Inter-key timing:
Human: Variable (50-300ms between keys, varies by key pair)
Bot: Constant (all keys at same interval, or instant paste)
Key events:
Human: keydown → keypress → keyup for each character
Bot: May skip keypress, or fire all events simultaneously
Corrections:
Human: Occasional backspace, re-typing
Bot: Perfect input without corrections
Влияние на оценку. Мгновенный ввод текста (через буфер обмена или назначение JavaScript value) оценивается на 0,1–0,2 ниже.
Поведение прокрутки
reCAPTCHA отслеживает события прокрутки на странице:
- Люди: Постепенная прокрутка с ускорением, переменной скоростью, паузами для чтения.
- Боты: нет прокрутки и мгновенного перехода в область формирования.
Влияние на оценку: Нет событий прокрутки перед взаимодействием с формой. → от -0,2 до -0,3.
Последовательность взаимодействия элементов
reCAPTCHA отслеживает, с какими элементами и в каком порядке взаимодействует пользователь:
- Люди: щелкайте по странице, наводите курсор на ссылки, читайте контент перед заполнением формы.
- Боты. Переходите непосредственно к полям формы, заполняйте порядок и отправляйте сообщения.
Влияние на оценку: Поведение непосредственно в форме без исследования страницы → от -0,1 до -0,3.
Категория 3: Сетевые сигналы (вес: средний-высокий)
IP-репутация
Google ведет базу данных репутации IP-адресов на основе:
- Предыдущий вызов reCAPTCHA стал результатом этого IP-адреса.
- Известные диапазоны IP-адресов центров обработки данных (AWS, GCP, Azure, DigitalOcean и т. д.)
- Известные диапазоны поставщиков прокси/VPN
- Отчеты о злоупотреблениях и базы данных спама
- Сигналы мошенничества в поиске и рекламе
| Тип IP | Типичное влияние на оценку |
|---|---|
| Жилой, низкий уровень злоупотреблений | Нейтрально до +0,1 |
| Жилой, некоторые злоупотребления | от -0,1 до -0,2 |
| Дата-центр | от -0,3 до -0,5 |
| Известный прокси/VPN | от -0,2 до -0,4 |
| Выходной узел Tor | от -0,4 до -0,6 |
| Недавно отмечено как нарушение | от -0,3 до -0,6 |
TLS-сигналы (JA3/JA4)
Подтверждение TLS показывает, какие наборы шифров и расширения поддерживает клиент. У каждого браузера есть характерный Сигналы среды:
- Chrome: Особый порядок шифрования, TLS 1.3, расширения GREASE.
- Запросы Python: Другой порядок шифрования, отсутствие смазки, упрощенный список расширений.
- curl: Минимальные расширения, шаблоны, специфичные для OpenSSL.
Влияние на оценку: TLS-сигналы без браузера → от -0,2 до -0,4.
HTTP-заголовки
Сервер reCAPTCHA проверяет HTTP-заголовки запрашивающего клиента:
| Заголовок | Человеческий показатель | Индикатор бота |
|---|---|---|
User-Agent |
Соответствует известной версии браузера | Устаревшая версия, средство автоматизации UA |
Accept-Language |
Заполнено языковыми настройками | Отсутствует или является общим |
Accept-Encoding |
gzip, deflate, br |
Отсутствует или необычен |
Sec-CH-UA |
Клиентские подсказки, соответствующие браузеру | Отсутствует (заголовки до 2022 г.) |
Категория 4: Исторические сигналы (вес: средний)
файлы cookie аккаунта Google
Пользователи, вошедшие в учетную запись Google с историей просмотров, получают более высокий балл:
SID,HSID,SSIDфайлы cookie → У пользователя есть сеанс Google- Файлы cookie Google отсутствуют → Неизвестный пользователь, более низкий начальный балл
Влияние на оценку: Активный сеанс Google → от +0,1 до +0,3.
файлы cookie reCAPTCHA
reCAPTCHA устанавливает свои собственные файлы cookie после успешного завершения задачи:
_GRECAPTCHAфайл cookie → Предыдущее успешное решениеrc::a,rc::b,rc::c→ Файлы cookie с данными анализа рисков
Влияние на оценку: Новый сеанс без файлов cookie reCAPTCHA → от -0,1 до -0,2.
Межсайтовая репутация
Google отслеживает поведение reCAPTCHA на всех сайтах, используя один и тот же профиль браузера. Хорошее поведение на сайте А улучшает показатели на сайте Б.
Категория 5: Сигналы окружающей среды (вес: низкий-средний)
Согласованность часового пояса
const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
// Should match IP geolocation
// "America/New_York" with a New York IP → consistent
// "America/New_York" with a Tokyo IP → suspicious
Размеры экрана и окна
screen.width, screen.height // Physical screen
window.innerWidth, innerHeight // Browser window
window.outerWidth, outerHeight // Including browser chrome
Влияние на оценку: Необычные размеры (0×0, очень большой или точно по умолчанию) → от -0,1 до -0,2.
Состояние батареи (если доступно)
navigator.getBattery().then(battery => {
battery.level; // 0.0 to 1.0
battery.charging; // true/false
});
API батареи предоставляет незначительный сигнал — постоянная зарядка на уровне 100 % соответствует среде разработки для настольных компьютеров.
Стратегии оптимизации оценок
За более высокие баллы по автоматизации
| Стратегия | Ожидаемый эффект | Сложность |
|---|---|---|
| Используйте настоящий Chrome (не без головы) | от +0,3 до +0,5 | Низкий |
Удалить флаг сигнал WebDriver |
от +0,2 до +0,3 | Низкий |
| Добавьте симуляцию движения мыши | от +0,2 до +0,4 | Середина |
| Используйте резидентные IP-адреса прокси | от +0,2 до +0,3 | Бюджетный) |
| Сохранять файлы cookie Google между сеансами | от +0,1 до +0,2 | Середина |
| Сопоставить TLS-сигналы с Chrome | от +0,1 до +0,3 | Высокий |
| Имитировать исследование страницы перед формой | от +0,1 до +0,2 | Середина |
Или: используйте решатель API
Вместо оптимизации всех этих сигналов используйте CaptchaAI для генерации действительных токенов независимо от оценки:
import requests
import time
API_KEY = "YOUR_API_KEY"
# Request a high-score token
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",
"version": "v3",
"action": "login",
"json": 1,
})
task_id = submit.json()["request"]
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"]
print(f"High-score token received")
break
Среда решателя оптимизирована для получения максимальных результатов — она обрабатывает все сигналы браузера, поведения и сети внутри себя.
Часто задаваемые вопросы
Что такое «хороший» результат reCAPTCHA v3?
Оценка 0,7 или выше обычно считается человеческой. Большинство веб-сайтов устанавливают порог от 0,5 до 0,7. Оценка 0,9 соответствует практически всем реализациям. У API CaptchaAI нет параметра score-target — оценку определяет Google. Чтобы повысить возвращаемую оценку, прикрепляйте к запросу cookies, userAgent и proxy.
Всегда ли использование VPN снижает оценку?
VPN-IP-адреса из центров обработки данных обычно снижают баллы на 0,2–0,4. Однако частные VPN-сервисы дают подходящий результаты. Влияние на оценку зависит от истории репутации конкретного IP-адреса, а не от самой службы VPN.
Почему моя оценка различается на разных страницах одного и того же сайта?
reCAPTCHA v3 использует параметр action для контекстуализации оценок. Различные действия (домашняя страница, вход в систему, оформление заказа) могут иметь разные базовые оценки. Кроме того, поведенческие сигналы накапливаются во время сеанса — более поздние страницы могут получить более высокий балл, поскольку доступно больше данных о поведении.
Могу ли я проверить свой рейтинг reCAPTCHA, не владея сайтом?
Не напрямую. Результаты reCAPTCHA v3 возвращаются только на сервер через API siteverify. Однако вы можете оценить свой балл, наблюдая за тем, показывают ли сайты вам проблемы (низкий балл) или пропускают ли вас (высокий балл) на известных реализациях reCAPTCHA v3.
Краткое содержание
Оценки reCAPTCHA определяются сигналы браузера браузера (наличие API, Canvas, WebGL), поведенческим анализом (движение мыши, время клавиатуры, шаблоны прокрутки), репутацией сети (тип IP, TLS-сигналы), историей (файлы cookie Google, предыдущие решения) и согласованностью среды (часовой пояс, размеры экрана). Для автоматизации, требующей стабильно высоких оценок, используйтеCaptchaAIи прикрепляйте cookies, userAgent и резидентный proxy, чтобы повысить оценку, возвращаемую Google.
Похожие статьи
- Как решить Recaptcha V3 Enterprise с помощью API
- Минимальные пороговые значения для Recaptcha V3
- Recaptcha V3 Enterprise против стандартного