Введение в reCAPTCHA и библиотеку React Google reCAPTCHA

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

  • Ограничить регистрацию на услуги
  • Предотвратить покупку большого количества билетов
  • Предотвратить ложные комментарии

Самая распространенная форма CAPTCHA - это reCAPTCHA, сервис от Google. Я уверен, что вы сталкивались с этим раньше, когда просматривали Интернет.

В этой статье мы рассмотрим reCAPTCHA и узнаем, как реализовать ее в приложении React.

Что такое reCAPTCHA

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

Оригинальный вызов reCAPTCHA v1 был выпущен в 2007 году. Он выглядел примерно так.

Эта версия reCAPTCHA была закрыта в 2018 году.

reCAPTCHA v2 против reCAPTCHA v3

В настоящее время доступны две версии reCAPTCHA: версия 2 и версия 3.

Последней версией reCAPTCHA является версия 3, выпущенная в 2018 году. ReCAPTCHA v3 возвращает оценку для каждого запроса в зависимости от вероятности взаимодействия с ботом. В зависимости от полученной оценки вы можете настроить действия.

Хотя v3 является последней версией, более распространенной формой reCAPTCHA является версия 2. Она была выпущена еще в 2014 году.

reCAPTCHA v2 имеет два варианта: флажок или невидимый.

Флажок - отображается флажок, как показано ниже.

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

Невидимый: отображается значок и в фоновом режиме запускается reCAPTCHA. Если он обнаружит бота, появится указанная выше задача.

Реализация в приложении React

Теперь, когда мы понимаем, что такое reCAPTCHA, мы создадим простой пример в приложении React. В этом примере мы будем использовать шаблонное приложение из create-react-app.

Получите ключ Google

Первое, что нам понадобится, это ключ reCAPTCHA от Google. Посетите их верхнюю страницу здесь и перейдите в консоль администратора.

Вы попадете на следующую страницу. Добавьте метку для вашего ключа reCAPTCHA. Затем выберите версию, которую хотите использовать. В нашем примере мы будем использовать флажок версии 2. Нам также нужно будет добавить любые доменные имена, в которых мы будем использовать эту reCAPTCHA. Регистрация ограничена доменами, которые вы вводите здесь, а также любыми поддоменами. В нашем примере мы просто будем использовать localhost для тестирования в нашей локальной среде.

После создания вы получите два ключа. Один - это ключ сайта, а другой - секретный ключ. Ключ сайта понадобится на стороне клиента для идентификации вашей регистрации. Секретный ключ будет использоваться для проверки ответа пользователя на стороне сервера. Это секретный ключ, и его нельзя передавать на стороне клиента.

Установите response-google-recaptcha

После получения ключей мы установим response-google-recaptcha в наш проект. Это надежная библиотека, которую еженедельно скачивают более 270 000 раз. Эта библиотека предоставляет нам компонент React для использования в Google reCAPTCHA v2.

После установки import ReCAPTCHA from ‘react-google-recaptcha’.

Для рендеринга компонента вам понадобятся следующие реквизиты:

  • sitekey - ключ клиента API от Google
  • onChange - функция обратного вызова, когда пользователь вводит капчу
import ReCAPTCHA from ‘react-google-recaptcha’
const App = () => {
  function onChange(value) {
    console.log('Captcha value:', value);
  }
  return (
    <div className="App">
      <ReCAPTCHA
        sitekey="YOUR-SITE-KEY"
        onChange={onChange}
      />
    </div>
  );
};

Если мы отобразим приведенный выше код на экран, мы должны увидеть следующий флажок reCAPTCHA, отображаемый в нашем приложении.

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

  • тема - (светлая или темная), чтобы изменить тему виджета.
  • размер - (компактный, нормальный или невидимый) для изменения размера или типа CAPTCHA.
  • onErrored - функция обратного вызова, если произошла ошибка запроса
  • badge - (bottomright, bottomleft или inline), чтобы изменить положение значка reCAPTCHA.

Ознакомьтесь с документацией, чтобы узнать больше о дополнительных опциях.

Следующие шаги

После выполнения задачи CAPTCHA вы получите токен ответа. Этот токен будет действителен в течение двух минут.

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

Заключение

Спасибо за прочтение! Надеюсь, вы смогли узнать о CAPTCHA и reCAPTCHA из этой статьи. Реализовать его в приложении React легко, и это может дать вашему приложению еще один уровень защиты от ботов.

Чтобы узнать, как настроить Google OAuth в приложении React, ознакомьтесь со статьей ниже.