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


303

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

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

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

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

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

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


1
Вероятно, похоже на то, как они посылали людям простые капчи, а жесткие
капчи

1
Я понял это так: капча все еще есть, но если вы не сделаете подозрительные запросы, вам никогда не придется ее решать.
Кельм

@ Луи Что было "украдено"? Кто-то задал один и тот же вопрос и связал один и тот же (и единственный) пост, но он сформулирован несколько иначе, и ни один из ответов не совпадает. Более того, оригинальный вопрос о Quora был опубликован 3 декабря, за день до этого вопроса. В чем проблема?
wchargin

10
@CiroSantilli 六四 事件 法轮功 какого черта? связь пропала
TechLife

14
@TechLife правда! Кажется, вы перешли на github.com/neuroradiology/InsideReCaptcha ? Напоминание самому себе: всегда развлекайся.
Сиро Сантилли 郝海东 冠状 病 六四 事件 法轮功

Ответы:


200

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

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

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


73
Это кажется правильным и должно объяснить, почему я всегда должен набирать строку на моей PSVita с палками. Он не двигается как обычная мышь.
Домино

3
Мне интересно, как Google отреагирует на достаточно большое количество записанного органического поведения.
Маркус Малкуш

16
Движение мыши определенно не способствует этому. Поместите курсор прямо на место, где появится флажок. Перейдите на сайт без перемещения курсора. Нажмите на флажок, и он пройдет.
Дерек 功夫 會 功夫

3
@ Дерек, я не думаю, что это доказательство чего-либо. Файлы cookie, IP-адреса и многие другие факторы могут помочь вам пройти до того, как они перейдут к движению мыши. Мне не хочется тестировать его, но если бы вы запустили новый компьютер со свежего IP и вообще не использовали мышь, я готов поспорить, что это не получится.
Каймен

13
Обратите внимание, что вы также можете перейти к нему и нажать пробел.
JSideris

74

Была выпущена новая статья с несколькими тестами против 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


4
mouse events don't affect the resultsЭто интересно, так как я (и я верю многим другим) думал, что это главное, что повлияло на результаты. Я подумал, что на мобильном телефоне вместо флажка пользователям было предложено выбрать все похожие изображения, потому что на сенсорном экране нет движений мыши. Однако, глядя на вступительное сообщение в блоге снова, кажется, что это может быть не так. Возможно, выбор изображений вместо того, чтобы печатать искаженный текст, а не вместо галочки. Знаете ли вы (или кто-либо другой), позволяет ли reCAPTCHA когда-либо просто ставить флажки на мобильном телефоне?
Nateowami

События мыши влияют на результаты. Если вы нажмете Tabи, Enterчтобы установить флажок, он покажет капчу изображений для вас, чтобы выбрать их на основе критерия.
mbomb007

1
@ mbomb007 События мыши могут повлиять на результаты, но нажатие Tabи Enterне будет показывать капчу изображения все время. Большую часть времени актуален Tabи Enterпринимается
Маниш Оджха

24

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

Вот мое решение.

Пусть ваш бот делает следующие шаги:

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

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

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

  1. Если вы используете VPN-коммутатор IP первым

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

  3. Очистить весь кэш браузера

  4. Установите один из этих Useragents случайно:

    а. 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 Перемещайте свою мышь с помощью мыши-человека. Каждый раз перемещайте функцию из RandomPoint в изображение «Я не робот» с различными случайными диапазонами 10x10.

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

    WM_LBUTTONDOWN

    и

    WM_LBUTTONUP

  2. Взять снимок экрана с изображения Captcha

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

    http://www.deathbycaptcha.com

    или

    https://2captcha.com

и пусть они решают.

  1. После получения клика на координаты из решателя капчи используйте функцию Human Mouse Move Funtion для перемещения и кликните Recaptcha Images

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

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

Chears Google

Том


2
Зачем вам нужна «функция перемещения человеческой мыши»? Это выглядит ненужным для достижения вашей цели.
Барболо

9
Функция «Human Mouse Move» - самый важный момент. Google обнаруживает внутри капчи Mousespeed, MouseWay, MouseButton, события «вверх-вниз», «Clickpositions», «Mouse EntryPoint» в капчу и ... и отправляет эту информацию через Javascript в базу данных Google со многими миллионами реальных отслеживаний движений мыши. После интерпретации всей этой захваченной информации капча будет помечена как решенная, только если алгоритм Google говорит, что это был человек.
Инго

3
@ barbolo: Пожалуйста, проверьте этот официальный блог Google security.googleblog.com/2014/12/… -> Google говорит: «Чтобы противостоять этому, в прошлом году мы разработали бэкэнд Advanced Risk Analysis для reCAPTCHA, который активно учитывает все взаимодействие пользователя с CAPTCHA. - до, во время и после - чтобы определить, является ли этот пользователь человеком. "
Инго

6
Шаг 8 использует внешний API, где люди решают для вас код безопасности. Бот ничего не решает.
Андреа

14
Это только я, или кого-то беспокоит и восхищает то, что авторы ботов используют переполнение стека, чтобы помочь решить (и спорить о!) ReCAPTCHA?
Огрский псалом33

3

Позвольте мне высказать свое предположение, так как это не открытая технология.

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

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


Если браузер достаточно хорош, чтобы на самом деле показать окно и обнаружить щелчки, то почему хакерский робот не сможет сделать то же самое? Однако я мог бы установить позицию флажка в очень точное положение (в десятичных числах), поэтому, если щелчок обнаружен с теми же десятичными знаками, это означает, что это робот, который не потрудился добавить случайные десятичные знаки в позицию щелчка. Но опять же, это не надежно.
Домино

Предполагается, что Google использует алгоритм «обучения», поэтому, если некоторые клиенты с одинаковыми характеристиками используют один и тот же общий путь и общее время для достижения этого, и это происходит 100 000 раз в день, они, вероятно, не являются законными.
Сирены

1
Должно быть относительно легко смоделировать щелчок в квадратной области. Не имеет значения, как Google шифрует данные перед отправкой.
Евгений С,

0

Помните, что Google также использует reCaptcha вместе с

Canvas fingerprinting 

уникально распознавать пользователя / браузеры без файлов cookie!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.