Как Google reCAPTCHA v2 работает за кулисами?

Этот пост относится к Google ReCaptcha v2 (не последняя версия)

Недавно Google представил упрощенную систему проверки "капчи" (видео), которая позволяет пользователям пропустить "капчу", просто нажав на нее.

Но как он может отличить бота от человека одним щелчком мыши?

Согласно этому ответу (при условии аналогичной реализации), сначала "recaptcha" генерирует скрытый ключ и прикрепляет его к скрытому элементу ввода, а также лениво отображает флажок (не фактический input помощью флажка, а элемент div) с тем же ключ, который при нажатии отправляет асинхронный запрос (XHR) на внутренние серверы Google, чтобы пометить его как действительный ключ проверки (т.е. ключ, который должен быть проверен при отправке формы).

Но почему боты не могут автоматизировать этот клик (по крайней мере, боты на основе браузера)?

Как это может работать?

Ответ 1

Это предположение, но на основе ссылки Google на "механизм анализа рисков", которые они используют (http://googleonlinesecurity.blogspot.com/2014/12/are-you-robot-introducing-no-captcha.html)

Я бы предположил, что он смотрит на то, как вы вели себя до нажатия, как ваш курсор двигался по пути к проверке (органический путь/ускорение), какую часть щелчка была выбрана (случайные места или мертвые в центре каждый раз), отпечаток пальца браузера, куки файлы Google и содержимое, щелкните историю местоположений, привязанную к вашему отпечатку пальца или учетной записи, если он обнаружит один и т.д.

Довольно сложно подделать "органическое" поведение таким образом, чтобы оно обмануло механизм обнаружения непрерывного обучения. В тех случаях, когда он не уверен, он по-прежнему предлагает вам сопоставить фактическую строку CAPTCHA.

Ответ 2

Новый документ был выпущен с несколькими тестами против reCAPTCHA:

https://www.blackhat.com/docs/asia-16/materials/asia-16-Sivakorn-Im-Not-a-Human-Breaking-the-Google-reCAPTCHA-wp.pdf

Некоторые основные моменты:

  • Сохраняя cookie активными в течение +9 дней (просматривая сайты с помощью ресурсов Google), вы можете затем передать reCAPTCHA, только установив флажок;
  • Нет ограничений на основе запросов на IP;
  • Пользовательский агент браузера должен быть реальным, и Google запускает тесты для вашей среды, чтобы убедиться, что он совпадает с пользовательским агентом;
  • Google проверяет, может ли браузер отображать Canvas;
  • Разрешение экрана и события мыши не влияют на результаты;

Google уже исправил уязвимость в файлах cookie и, вероятно, ограничивает некоторые варианты поведения, основанные на IP-адресах.

Еще одним интересным открытием является то, что Google запускает виртуальную машину на JavaScript, которая скрывает большую часть кода и поведения reCAPTCHA. Эта виртуальная машина называется botguard и используется для защиты других сервисов, кроме reCAPTCHA:

https://github.com/neuroradiology/InsideReCaptcha

ОБНОВЛЕНИЕ 2017

Недавняя статья (с августа) была опубликована на WOOT 2017 с 85-процентной точностью в решении задач аудио noCAPTCHA reCAPTCHA:

http://uncaptcha.cs.umd.edu/papers/uncaptcha_woot17.pdf

ОБНОВЛЕНИЕ 2018

Google представляет reCAPTCHA v3, который выглядит как "механизм прогнозирования человеческого рейтинга", который откалиброван для каждого веб-сайта. Он может быть установлен на разных страницах веб-сайта (работает как скрипт Google Analytics), чтобы помочь reCAPTCHA и владельцу сайта понять поведение людей и ботов перед заполнением reCAPTCHA.

https://www.google.com/recaptcha/intro/v3beta.html

Ответ 3

Мои боты хорошо работают против ReCaptcha.

Здесь мое решение.

Пусть ваш бот выполнит следующие действия:

Сначала напишите функцию перемещения мыши для перемещения мыши, как B-Spline (спросите меня об исходном коде). Это самый важный пункт.

Также для улучшения результатов используйте VPN, например https://www.purevpn.com

Для каждой Recpatcha выполните следующие действия:

  • Если вы сначала используете IP-адрес VPN

  • Очистить все файлы cookie браузера

  • Очистить весь кеш браузера

  • Установите один из этих Useragents с помощью Random:

    а. Mozilla/5.0 (совместимый MSIE 9.0, Windows NT 6.1, Trident/5.0)

    б. Mozilla/5.0 (Windows NT 6.1, WOW64; rv: 44.0) Gecko/20100101 Firefox/44.0

5 Переместите свою мышь с помощью мыши. Перемещайте Funktion из RandomPoint в я не являюсь Robot Image каждый раз с разными 10x10 Randomrange

  1. Затем щелкните со случайной задержкой между

    WM_LBUTTONDOWN

    и

    WM_LBUTTONUP

  2. Сделайте снимок экрана из Image Captcha

  3. Отправить скриншот для

    http://www.deathbycaptcha.com

    или

    https://2captcha.com

и разрешить их.

  1. После получения клиринга cooridinates от решателя captcha используйте вашу человеческую мышь, чтобы перемещать Funktion для перемещения и нажмите Recaptcha Images

  2. Используйте движок перемещения мыши для перемещения и нажмите кнопку подтверждения Recaptcha

В 75% все попытки Recaptcha будут решены

Chears Google

Tom

Ответ 4

Я сомневаюсь в его истории браузера. Id говорит, что его движения мыши, свитки, интервалы времени, нажатия клавиш и тому подобное. Боты по-прежнему довольно плохо имитируют ваше поведение.

В то время как точная технология не будет просто передана общественности - это было бы просто глупо - были намеки на то, что она полагается на поведение пользователей отслеживания до и сразу после No CAPTCHA reCAPTCHA (да, его полный) вызов.

http://codesupport.info/new-google-recaptcha-free-anti-abuse-service-say-im-robot-just-click/

Ответ 5

Могу ли я представить свою догадку, поскольку это не открытая технология.

Google говорит о том, чтобы расчесывать информацию до, во время, после, чтобы отличить человека от робота. Но меня больше интересует этот последний щелчок на флажке.

Скажем, данные POST (разрешенные CAPTCHA) имеют поле, называемое fingerprint, строку, вычисленную по пользовательскому поведению. Я думаю, что может быть поле об этой ячейке. Я полагаю, что этот флажок находится в системе координат, случайно созданной с помощью Google back-end и зашифрованной открытым ключом моего сайта. Таким образом, робот может "угадывать/вычислять" местоположение об этом поле, но когда владелец сайта делает запрос GET с закрытым ключом для проверки подлинности пользователя, Google расшифровывает систему координат и говорит, если пользователь нажмет на нужное место. Таким образом, только один возможный щелчок правой кнопкой мыши (с некоторыми смещениями, это квадратный квадрат) местоположения в этой случайной системе координат, принадлежащей только владельцам Google и сайтов.