Invisible recaptcha как работает
Перейти к содержимому

Invisible recaptcha как работает

  • автор:

Google ReCAPTCHA Invisible или долой дорожные знаки и витрины магазинов

Привет! Хоть большинству читателей Хабра не нужно объяснять, что такое CAPTCHA, зачем она придумана и для чего используется, позволю себе небольшой исторический экскурс.

CAPTCHA

Итак, раньше, чтобы зарегистрироваться на сайте или оставить комментарий, люди ломали свои глаза, разгадывая капчу:

У кого были проблемы со зрением, нередко могли её прослушать:

Как-то так

Audio CAPTCHA

Для решения задачи «в промышленных масштабах» использовали индусов или китайцев 🙂

В 2007 году умные люди из университета Карнеги — Меллон придумали ReCAPTCHA, чтобы также продолжать бороться с людьмиботами, но и полезное дело делать — помогать оцифровывать книги. Под девизом «ReCAPTCHA — Stop Spam, Read Books» проект пошёл в массы.

Помните, как всё начиналось?

ReCAPTCHA

В 2009 году после покупки проекта все дружно стали помогать Гуглу распознавать номера домов

Фото из Google Street View

Google Street View ReCAPTCHA

В 2015 году после очередного обновления пользоваться ReCAPTCHA («No CAPTCHA ReCAPTCHA») стало ещё проще. Теперь достаточно поставить галочку напротив «Я не робот» / «I’m not a robot»:

Вот как-то так

Если ваша «человечность» вызывала сомнения, вам оставалось всего лишь правильно выбрать несколько картинок. Например, все витрины, дорожные знаки, поезда и много чего ещё.
Технологии не стоят на месте. Роботы довольно успешно взламывают теперь и ReCAPTCHA.

Вы только посмотрите

А теперь по делу. Google тестирует следующую версию ReCAPTCHA — ReCAPTCHA Invisible:

image

Суть её в том, что теперь не будет необходимости куда-либо нажимать/вводить/выбирать, чтобы подтвердить, что вы человек. Для пользователей всё будет прозрачно, если у «капчи» не будет сомнений в его «человечности».

Проект находится в стадии beta, но получить код «невидимой» рекапчи можно уже сейчас на этой странице. Документация для разработчиков с примерами внедрения доступна здесь.

А какие капчи приходилось видеть вам?

API для распознавания reCAPTCHA V2 Invisible

Распознавание reCAPTCHA V2 Invisible

Распознавание reCAPTCHA V2 Invisible

В консоли разработчика найдите textarea с id=»g-recaptcha-response» , и вставьте туда полученный код. Потом нажмите «Проверить». Читать больше — документация по API для автоматического решения капч.

// https://github.com/2captcha/2captcha-php require(__DIR__ . '/../src/autoloader.php'); $solver = new \TwoCaptcha\TwoCaptcha('YOUR_API_KEY'); try < $result = $solver->recaptcha([ 'sitekey' => '6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u', 'url' => 'https://rucaptcha.com/demo/recaptcha-v2-invisible', ]); > catch (\Exception $e) < die($e->getMessage()); > die('Captcha solved: ' . $result->code);
# https://github.com/2captcha/2captcha-python import sys import os sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))) from twocaptcha import TwoCaptcha api_key = os.getenv('APIKEY_2CAPTCHA', 'YOUR_API_KEY') solver = TwoCaptcha(api_key) try: result = solver.recaptcha( sitekey='6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u', url='https://rucaptcha.com/demo/recaptcha-v2-invisible') except Exception as e: sys.exit(e) else: sys.exit('solved: ' + str(result))
// https://github.com/2captcha/2captcha-csharp using System; using System.Linq; using TwoCaptcha.Captcha; namespace TwoCaptcha.Examples < public class reCAPTCHAV2Example < public void Main() < TwoCaptcha solver = new TwoCaptcha("YOUR_API_KEY"); reCAPTCHA captcha = new reCAPTCHA(); captcha.SetSiteKey("6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u"); captcha.SetUrl("https://rucaptcha.com/demo/recaptcha-v2-invisible"); try < solver.Solve(captcha).Wait(); Console.WriteLine("Captcha solved: " + captcha.Code); > catch (AggregateException e) < Console.WriteLine("Error occurred: " + e.InnerExceptions.First().Message); > > > >
// https://github.com/2captcha/2captcha-java package examples; import com.twocaptcha.TwoCaptcha; import com.twocaptcha.captcha.reCAPTCHA; public class reCAPTCHAV2Example < public static void main(String[] args) < TwoCaptcha solver = new TwoCaptcha("YOUR_API_KEY"); reCAPTCHA captcha = new reCAPTCHA(); captcha.setSiteKey("6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u"); captcha.setUrl("https://rucaptcha.com/demo/recaptcha-v2-invisible"); try < solver.solve(captcha); System.out.println("Captcha solved: " + captcha.getCode()); > catch (Exception e) < System.out.println("Error occurred: " + e.getMessage()); > > >
// https://github.com/2captcha/2captcha-go package main import ( "fmt" "log" "github.com/2captcha/2captcha-go" ) func main() < client := api2captcha.NewClient("API_KEY") cap := api2captcha.ReCaptcha< SiteKey: "6LdO5_IbAAAAAAeVBL9TClS19NUTt5wswEb3Q7C5", Url: "https://rucaptcha.com/demo/recaptcha-v2-invisible", Invisible: true, > code, err := client.Solve(cap.ToRequest()) if err != nil < log.Fatal(err); >fmt.Println("code "+code) >
// https://github.com/2captcha/2captcha-cpp #include #include "curl_http.hpp" #include "api2captcha.hpp" int main (int ac, char ** av) < api2captcha::curl_http_t http; http.set_verbose (true); api2captcha::client_t client; client.set_http_client (&http); client.set_api_key (API_KEY); api2captcha::recaptcha_t cap; cap.set_site_key ("6LdO5_IbAAAAAAeVBL9TClS19NUTt5wswEb3Q7C5"); cap.set_url ("https://rucaptcha.com/demo/recaptcha-v2-invisible"); cap.set_invisible (true); try < client.solve (cap); printf ("code '%s'\n", cap.code ().c_str ()); > catch (std::exception & e) < fprintf (stderr, "Failed: %s\n", e.what ()); > return 0; >
require 'api_2captcha' client = Api2Captcha.new("YOUR_API_KEY") result = client.recaptcha_v2(< googlekey: '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-', pageurl: 'https://mysite.com/page/with/recaptcha_v2', invisible: 1 >)

Решение для обхода reCAPTCHA V2 Invisible на GitHub

Полная документация и примеры кода по обходу reCAPTCHA V2 Invisible на GitHub

Как решить reCAPTCHA V2 Invisible на PHP

Как решить reCAPTCHA V2 Invisible на Python

Как решить reCAPTCHA V2 Invisible на Ruby

Как решить reCAPTCHA V2 Invisible на Go

Как решить reCAPTCHA V2 Invisible на C#

Как решить reCAPTCHA V2 Invisible на Java

Расширение для обхода reCAPTCHA V2 Invisible

Расширение для браузера позволяет автоматически решать капчи найденные на любом сайте

Распознавание reCAPTCHA V2 Invisible

Это невидимая капча, которая может вам и не будет показана, в зависимости от состояния ваших cookies. Если качество их хорошее, капча не будет показываться, если наоборот — вам будет показываться стандартная Google reCAPTCHA V2. reCAPTCHA V2 Invisible не требует от пользователя нажатия на кнопку решения капчи. Капча вызывается непосредственно, когда пользователь нажимает существующую кнопку на вашем сайте, или может быть вызван с помощью вызова API JavaScript. Задача с целью решить капчу появляется во всплывающем окне появляется только в случае подозрительного трафика. ruCaptcha — быстрый сервис по автоматическому решению reCAPTCHA.

Выставление счетов в системе происходит отдельно для каждого типа капчи. Стоимость решения: 65 ₽ — 160 ₽ за 1000 капч. Никакого риска. Оплата происходит за фактически распознанные капчи.

Статистика распознавания reCAPTCHA V2 Invisible

Поддерживаемые капчи

  • Простая капча
  • Текстовая капча
  • Click CAPTCHA
  • Rotate CAPTCHA
  • reCAPTCHA V2
  • reCAPTCHA V2 Callback
  • reCAPTCHA V2 Invisible
  • reCAPTCHA V3
  • reCAPTCHA Enterprise
  • KeyCAPTCHA
  • GeeTest CAPTCHA
  • hCaptcha
  • FunCaptcha
  • Capy Puzzle CAPTCHA
  • Lemin CAPTCHA
  • Cloudflare Turnstile
  • Audio CAPTCHA
  • Arkose Labs CAPTCHA
  • Amazon CAPTCHA
  • MTCaptcha
  • DataDome CAPTCHA
  • CyberSiARA CAPTCHA
  • Yandex CAPTCHA
  • VK CAPTCHA

Процесс решения обычной капчи заключается в следующем: мы забираем изображение капчи со страницы ее размещения и передаем в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ, который необходимо ввести в соответствующее поле для решения капчи

Процесс решения текстовой капчи заключается в следующем: мы забираем текстовый вопрос капчи со страницы ее размещения и передаем в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ, который необходимо ввести в соответствующее поле для решения капчи

Процесс решения заключается в следующем: мы забираем изображение капчи со страницы ее размещения и инструкцию, по каким картинкам необходимо кликать и передаем в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде набора координат точек на изображении, по которым необходимо кликнуть для решения капчи

Процесс решения Rotate Captcha заключается в следующем: мы забираем изображение капчи со страницы ее размещения и передаем в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде значения угла поворота изображения, на который необходимо повернуть изображение для решения капчи

Процесс решения reCAPTCHA V2 заключается в следующем: мы забираем параметры капчи, необходимые для ее решения в виде параметра data-sitekey и адреса страницы размещения капчи и передаем их в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде токена, который необходимо ввести в соответствующее поле для решения капчи

Процесс решения reCAPTCHA V2 Callback не отличается от аналогичного процесса решения reCAPTCHA V2: мы забираем параметры капчи, необходимые для ее решения в виде параметра data-sitekey и адреса страницы размещения капчи и передаем их в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде токена, который необходимо ввести в соответствующее поле для решения капчи. Иногда вы не найдете кнопки, отправляющей форму. Вместо нее может использоваться callback-функция. Эта функция выполняется, когда капча распознана. Обычно callback-функция определена в параметре data-callback или как параметр callback у функции grecaptcha.render

Процесс решения невидимой капчи reCAPTCHA V2 Invisible аналогичен распознаванию reCAPTCHA V2 и заключается в следующем: мы забираем параметры капчи, необходимые для ее решения в виде параметра data-sitekey и адреса страницы размещения капчи и передаем их в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде токена, который необходимо ввести в соответствующее поле для решения капчи

Процесс решения reCAPTCHA V3 следующий: мы забираем параметры капчи, необходимые для ее решения в виде параметра data-sitekey, параметра action и адреса страницы размещения капчи и передаем их в сервис ruCaptcha, где ее решает работник с соответствующим рейтингом «человечности”, после чего нам возвращается ответ в виде токена, который необходимо ввести в соответствующее поле для решения капчи. Во многом новый вид капчи похож на reCAPTCHA V2, т.е. основной принцип остался тем же — пользователь получает от API ruCaptcha токен, который отправляется в POST-запросе к сайту, а сайт верифицирует токен через API reCAPTCHA

Процесс решения reCAPTCHA Enterprise заключается в следующем: определяем тип reCAPTCHA, он может быть V2 или V3, после чего мы забираем параметры капчи, необходимые для ее решения в виде параметра data-sitekey и адреса страницы размещения капчи и передаем их в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде токена, который необходимо ввести в соответствующее поле для решения капчи

Процесс решения KeyCaptcha заключается в следующем: мы забираем набор необходимых параметров со страницы ее размещения и передаем в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде набора уже других параметров, который необходимо передать в соответствующие поля для решения капчи

Процесс решения GeeTest Captcha заключается в следующем: мы забираем набор необходимых параметров со страницы ее размещения и передаем в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде набора уже других параметров, который необходимо передать в соответствующие поля для решения капчи

Процесс решения заключается в следующем: мы забираем параметры капчи, необходимые для ее решения в виде параметра data-sitekey и адреса страницы размещения капчи ruCaptcha и передаем их в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде токена, который необходимо ввести в соответствующее поле для решения капчи

Процесс решения FunCaptcha Arkose Labs заключается в следующем: мы забираем набор необходимых параметров со страницы ее размещения и передаем в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде набора уже других параметров, который необходимо передать в соответствующие поля для решения капчи

Процесс решения Capy Puzzle Captcha заключается в следующем: мы забираем набор необходимых параметров со страницы ее размещения и передаем в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде набора уже других параметров, который необходимо передать в соответствующие поля для решения капчи

Процесс обхода Lemin заключается в следующем: пользователь передает параметры капчи, необходимые для ее решения в сервис ruCaptcha, где решает работник, после чего нам возвращается ответ в виде токена, который необходимо ввести в соответствующее поле для решения капчи.

Процесс решения капчи Cloudflare Turnsitle заключается в следующем: пользователь передает параметры капчи, необходимые для ее решения: «data-sitekey» и адрес страницы размещения капчи в сервис ruCaptcha, где ее решает работник, после чего нам возвращается ответ в виде токена, который необходимо ввести в соответствующее поле для решения капчи.

Процесс обхода аудио капчи полностью автоматизирован: в сервис распознавания нужно передать аудиофайл, который обрабатывается нейронной сетью, обученной распознаванию голоса. Результат распознавания возвращается в виде текста. Полученный текст можно использовать для обхода аудио капчи или перевода аудио в текст.

Процесс решения Arkose Labs Captcha является следующим: заказчик передает набор необходимых параметров со страницы ее размещения в сервис ruCaptcha, где ее решает сотрудник, после чего возвращается ответ в виде набора уже других параметров, которые необходимо передать в соответствующие поля для решения капчи.

Процедура решения капчи Amazon AWS следующая: нужно передать набор необходимых параметров с целевой страницы и отправить в сервис, где работники сервиса решают капчу. Затем ответ возвращается в виде набора дополнительных параметров, которые необходимо ввести в поля для решения.

Процедура решения MTCaptcha следующая: нужно передать набор необходимых параметров с целевой страницы и отправить в сервис, где работники сервиса решают капчу. Затем ответ возвращается в виде токена, который необходимо ввести в соответствующее поле для решения капчи.

Процедура решения DataDome CAPTCHA следующая: нужно передать набор необходимых параметров с целевой страницы и отправить в сервис, где работники сервиса решают капчу. Затем ответ возвращается в виде токена, который необходимо ввести в соответствующее поле для решения капчи.

Процедура решения капчи CyberSiARA следующая: нужно передать набор необходимых параметров с целевой страницы и отправить в сервис, где работники сервиса решают капчу. Затем ответ возвращается в виде токена, который необходимо ввести в соответствующее поле для решения капчи.

Процесс решения капчи от Яндекс заключается в следующих действиях: выгружаем изображение капчи со страницы размещения и передаем в сервис ruCaptcha, далее работник решает капчу, после чего мы передаем ответ, который требуется ввести в поле для решения капчи.

Процесс решения капчи VK следующий: мы импортируем изображение капчи со страницы размещения и отправляем в ruCaptcha, после чего капчу решает работник, и нам возвращается ответ, который необходимо ввести в соответствующее поле для решения капчи.

Используем невидимую рекапчу на сайте

Используем невидимую рекапчу на сайте

К выходу в свет готовится новая версия рекапчи от Google — под манящим кодовым названием Invisible Recaptcha. Несмотря на статус бета, уже можно с уверенностью опробовать новую технологию и начинать внедрять (или подготавливать к внедрению) в расширения на сайты. В этой статье я попытаюсь осветить нововведения, а также свои плюсы или минусы от интеграции на сайт. Кроме этого я поделюсь опытом, как легко и безболезненно установить в контактную форму и какие подводные камни могут при этом возникнуть.

Внедрение на сайт Invisible ReCAPTCHA от Google

Как следует из названия новой разновидности капчи она должна быть невидимой. Как это реализуется? Как помним вторая версия Recaptcha давала возможность пройти проверку простой галочкой «Я не бот». Аналитики посчитали, что этот шаг излишен, и можно опустить показ капчи людям, которым доверяет система. И этот момент поможет улучшить юзабилити сайта и тот факт, что многие вебмастеры скрипя зубами ставили капчу на сайт. Не говоря уже про обычные формы захвата, для которых лишний пункт подтверждения может отпугнуть покупателя.

Пока вроде бы налицо одни плюсы. Остается правда вопрос, а если рекапча не показывается, то вдруг она не будет показываться ботам, да и как сайту определять показывать капчу или нет? Сравнивая с предыдущей версией Google Recaptcha 2, кроме этой невидимости особых нововведений можно и не заметить. Даже скрипт подключения рекапчи одинаков. Отличительным признаков Invisible Recaptcha является обязательность наличия функции обратного вызова (callback). В противном случае невидимая рекапча будет работать как обычная 2.0 версия.

Интеграция невидимой рекапчи на сайт

Давайте попробуем разобраться, как нам подключить Invisible Recaptcha в какую-нибудь контактную форму либо форму для комментариев.

Перво-наперво необходимо получить ключи как и в предыдущих версиях: публичный и секретные ключи. Как это делать я уже упущу, там нету ничего сложного.

Далее необходимо добавить вызов виджета в шаблон формы. API новой рекапчи достаточно скудное и немного запутанное, но всё же предлагает 3 варианта подключения скрипта на сайт:

Подключение Invisible Recaptcha через button

Один из самых легких способов, достаточно скопировать тот же код в панели администрирования и модифицировать кнопку отправки.

Приведу пример данного кода:

Не забываем исправить ключ на свой и теперь нам необходимо будет создать или модифицировать функцию при нажатии кнопки подтверждения.

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

function onSubmit = function(token)

Данный скрипт обязан быть после подключения скрипта api.js! Данную функцию можно модифицировать под свои нужды, проверяя вводимые данные или же если надо отправить данные через ajax.

Внедряем невидимую капчу через div

Предыдущий метод будет работать только на кнопках button, если же мы захотим использовать блоки для определения места и стиля подгрузки через div, нам придется дополнительно вызывать виджет командой grecaptcha.execute();

После всех манипуляций наш код примет вид:

а функция JS будет иметь вид:

function onSubmit = function(token)

Обратите внимание, перед этим скриптом нужно вызвать генерацию рекапчи следующей функцией, сделать это можно после прохождения проверки на валидность полей:

Не забывайте вставлять функцию после подключения скрипта рекапчи, иначе функция будет не определена и будет выдавать ошибку.

Вызов Invisible Recaptcha скриптом api.js

Рассмотрим ещё один вариант подключения виджета рекапчи. На этот раз мы будем подключать непосредственно в src подключаемого скрипта:

var onloadCallback = function()

На сайте API можно найти другие настройки, как выбор языка или цветовой шаблон, для простых примеров подойдут и эти варианты.

Серверная часть Invisible Recaptcha

Со стороны бекенда различий со 2-й версий не наблюдается, поэтому дополнительных изменений в этой части вносить не надо.

Для примера приведу вариант реализации который мне больше нравится:

$response = file_get_contents(«https://www.google.com/recaptcha/api/siteverify?secret=».$recaptcha_secret.»&response=».$_POST[‘g-recaptcha-response’].»&remoteip success»] === true)

// Обрабатываем успешный ответ

// Иначе выдаем ошибку

Не забываем подставить свой секретный ключ!

Invisible Recaptcha не работает на сайте

Рассмотрим случаи, когда невидимая капча не хочет работать на сайте. В первую очередь стоит проверить корректность введеных ключей, потом обязательно проверьте консоль браузера на наличие ошибок Javascript.

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

Как оказалось, виноваты были настройки ключа, их можно найти в расширенных настройках для вашего домена. По умолчанию настройки безопасности стояли на середине ( в отличие от Recaptcha 2) и лишь перставив на самый простой режим заветная цель была достигнута и рекапча исчезла с поля зрения.

Убираем отображение рекапчи для людей

Желаю и вам успешной установки данного типа защиты на сайты, если же возникнут сложности или затруднения, то с радостью помогу советом.

Минусы использования невидимой рекапчи

Как оказалось, радужное представление новшества омрачилось некоторыми факторами. Во-первых, могут возникнуть некоторые конфликты с функциями проверки контактных форм, хотя это решаемый вопрос.

Во-вторых, работоспособность Invisible Recaptcha напрямую зависит от использования Javascript в браузере, в противном случае пользователи с отключенным исполнением скриптов не смогут пройти проверку. Хотя с другой стороны это поможет отсеять примитивных ботов, не умеющих исполнять JS.

Более неприятным оказался фактор разоблачения невидимости капчи гуглом: на страницу прикрепляется значок с информацией, что страница защищена невидимой рекапчей. Выглядит это порой не в тему, а иногда может и подпортить элементы дизайна или вёрстку.

Поэтому вопрос перехода на новую версию пока остается открытым.

  • Проблемы с безопасностью сайта в Google Webmaster
  • Уязвимость регистрации пользователей в Joomla 3 на практике

Комментарии
+1 # Евгения 10.04.2017 11:26

Добрый день. Подскажите, а что может означать такая ошибка при установке кода:

Warning: file_get_conten ts() [function.file- get-contents]: Unable to find the wrapper «https» — did you forget to enable it when you configured PHP? in /home/h236604/v vvvv.com/docs/i ndex1.php on line 12

Warning: file_get_conten ts(google.com/r ecaptcha/api/si teverify?secret =key_removed&re sponse=&remotei p=ip_remote) [function.file- get-contents]: failed to open stream: No such file or directory in /home/h236604/v vvvv.com/docs/i ndex1.php on line 12

0 # Protect Your Site 10.04.2017 11:46

Во-первых, не стоит публиковать секретные ключи.
Во-вторых, проверьте настройки сервера или функцией phpinfo() гляньте значение allow_url_fopen (должно быть on)

Invisible reCAPTCHA для защиты от ботов

Если у вас есть BILLmanager, его нужно защитить от ботов. Они создают нагрузку на сервер и забивают клиентскую базу пустыми учётными записями. Один из способов защиты — reCAPTCHA. Она не даёт роботам зарегистрироваться в биллинге.

С версии 5.173.0 BILLmanager поддерживает новую версию сервиса reCAPTCHA. Если раньше для подтверждения «человечности» пользователь ставил галочку «Я не робот», то теперь этого делать не нужно. Система анализирует поведение в фоновом режиме.

Invisible reCAPTCHA настраивается в разделе Глобальные настройки в BILLmanager и не работает на форме авторизации BILLmanager 6. Подробнее — в нашей документации.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *