Гайды

Как добавить капчу на сайт: способы, инструкции, сервисы

Настройка через плагин или HTML-код
Капча для сайта

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

Какие существуют типы капчи

Капча (Completely Automated Public Turing test to tell Computers and Humans Apart) — это система тестирования, которую используют для различения действий человека и автоматизированных программ (ботов). 

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

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

Преимущества:

— легко реализовать; 

— хорошо защищает от ботов; 

— доступна для всех типов пользователей.

Недостатки:

— может быть сложной для людей с нарушением зрения; 

— может распознаваться с помощью OCR.

Текстовая капча
Классическая текстовая капча

reCAPTCHA от Google (v2, v3). В версии v2 пользователь должен выбрать определённые изображения либо нажать кнопку «Я не робот». Это удобный способ для пользователей, который использует алгоритмы Google для анализа поведения на сайте. В версии v3 никаких действий пользователя не требуется. Система на основе анализа поведения определяет, является ли пользователь ботом или человеком. 

Преимущества:

— высокая точность; 

— минимизация вмешательства пользователя; 

— защита от множества видов атак.

Недостатки:

— для reCAPTCHA v2 возможны трудности с выбором изображений, 

— для reCAPTCHA v3 есть риск ошибки в оценке поведения пользователя.

reCAPTCHA
reCAPTCHA от Google

Простая математическая капча. Пользователю нужно решить простое математическое уравнение. Например, сложить или вычесть два числа. Это простая и быстрая форма защиты. Однако она может быть уязвима для ботов, которые могут распознавать такие задачи. 

Преимущества:

— простота; 

— быстрая в реализации и использовании.

Недостатки:

— не всегда эффективна;

— распознаётся современными ботами.

Математическая капча
Простая математическая капча

Картинки для выбора. В этом типе капчи пользователю предлагается выбрать изображения, соответствующие определенному критерию. Например, «Выберите все изображения с пешеходами». Это обычно достаточно эффективно против ботов, поскольку задача требует визуальной обработки. Однако такая капча может быть неудобной для пользователей.

Преимущества:

— сложна для распознавания ботами, поскольку требует размышлений; 

— несложная для понимания пользователями.

Недостатки:

— требует времени на распознавание; 

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

Выбор картинок
Картинки для выбора

Invisible CAPTCHA. Эта капча скрыта от пользователя. Она действует на основе анализа взаимодействия с сайтом. Например, отмечаются движения мыши или время пребывания на странице. Система автоматически проверяет, является ли пользователь человеком. Никаких дополнительных действий пользователя не требуется. 

Преимущества:

— минимальное вмешательство пользователя; 

— улучшенный пользовательский опыт; 

— высокая степень защиты.

Недостатки:

— может быть неэффективной при сложных атаках; 

— есть вероятность ошибок при анализе поведения.

Невидимая CAPTCHA
Invisible CAPTCHA

Как выбрать подходящий тип капчи для сайта

Выбор типа капчи для сайта зависит от различных параметров — характеристик сайта, особенностей аудитории, конкретных задач. Наиболее подходящий вариант лучше определять на основе тестирования. Однако есть общие рекомендации, которые помогут сузить круг подходящих решений. 

Выбор типа капчи в зависимости от различных факторов
Фактор Задача Тип капчи
Цель использования капчи Защитить формы (регистрации, обратной связи и прочее). Текстовая, математическая, Invisible CAPTCHA.
Предотвратить накрутку голосов, отзывов или спам-комментариев. Выбор картинок, текстовая.
Защитить авторизации и предотвратить атаки brute force. reCAPTCHA v2/v3, Invisible CAPTCHA.
Аудитория сайта Пользователи пожилые или малоопытные в интернете. Математическая, текстовая.
Сайт используется людьми с ограниченными возможностями (зрение, слух). Аудиокапча (звуковые файлы с произнесенными числами или словами), комбинированные варианты.
Объём трафика Высоконагруженные сайты (интернет-магазины, популярные блоги). reCAPTCHA v2/v3, Invisible CAPTCHA.
Небольшие сайты с низким трафиком. Текстовая, выбор картинок.
Удобство для пользователей Необходимо минимизировать сложность взаимодействия. reCAPTCHA v2/v3, Invisible CAPTCHA.
Можно позволить небольшое взаимодействие. Математическая, выбор картинок.
Технические ресурсы сайта Сайты с ограниченными ресурсами. Математическая, текстовая.
Сайты, интегрированные с современными сервисами. reCAPTCHA v2/v3.
Уровень угроз Сайт подвержен частым атакам ботов. reCAPTCHA v2/v3, Invisible CAPTCHA.
Угрозы безопасности для сайта минимальны. Текстовая, выбор картинок.

В целом, для сайтов, ориентированных на минимальное вмешательство и улучшенный пользовательский опыт, лучше всего подходят Invisible CAPTCHA и reCAPTCHA v3. Для обеспечения более строгой защиты можно использовать классическую текстовую капчу или картинки для выбора, хотя они могут снижать удобство для пользователей. Если у сайта специфическая аудитория или задачи, стоит выбирать капчу в зависимости от конкретных факторов. 

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

Как добавить капчу на сайт через HTML-код

Подключение капчи от разных сервисов через HTML-код происходит по примерно одинаковой схеме. Поэтому в качестве примера расскажу, как установить на сайт reCaptcha

Получите ключи для добавления капчи

Шаг 1. Откройте веб-браузер и войдите в свой Google-аккаунт. Перейдите на начальную страницу сервиса и нажмите «Начать» (Get started). 

Начало работы с reCaptcha

Шаг 2. Придумайте название ярлыка. Это необходимо, чтобы в будущем вы могли легко найти сайт сервиса. 

Создание ярлыка

Шаг 3. Выберите тип капчи. При выборе v3 система будет самостоятельно оценивать поведение пользователей. Если выбрать v2, то пользователь должен будет выполнить задание. Здесь можно выбрать клик по кнопке «Я не робот» или невидимый значок с проверкой в фоновом режиме.

Выбор типа капчи

Шаг 4. Добавьте домен. Укажите адрес сайта, на который хотите установить капчу, в формате site.com (без протокола http или https). Учтите, что у вас должен быть доступ к HTML-коду этого сайта. 

Добавление домена

Шаг 5. Задайте название проекта. Сервис автоматически сгенерирует название нового проекта, но вы можете его изменить при желании. Создание проекта необходимо для регистрации сайта в системе и включения нужных API. После выбора названия нажмите на «Отправить». 

Создание проекта

Шаг 6. Получите и скопируйте ключи. Ключ сайта используется для вызова службы reCAPTCHA на вашем сайте или в мобильном приложении. Секретный ключ разрешает связь между серверной частью вашего приложения и сервером reCAPTCHA для проверки ответа пользователя. 

Шаг 7. Установите reCAPTCHA на сайт. Этот шаг немного отличается для v2 и v3, поэтому разделим его. 

Важно. Добавление reCAPTCHA на сайт требует внесения изменений в HTML-код. Приведённые ниже фрагменты кода форм и алгоритмов проверки прохождения капчи являются примерами. Реальный код на вашем сайте может отличаться, так как структуры форм могут быть разными и особенности проверки зависят от типа действий. Если у вас недостаточно знаний и навыков в программировании, рекомендуем доверить настройку reCAPTCHA специалисту. 

Руководство для версии reCAPTCHA v2

1. Интегрируйте капчу на стороне клиента. 

Откройте HTML-код сайта. Перед закрывающим тегом </head> вставьте код, который подключает Google reCAPTCHA:

<script src=»https://www.google.com/recaptcha/api.js»></script>

Пример:

<head> 

     <script src=»https://www.google.com/recaptcha/api.js»></script>

</head>

Важно: указанный код подключения необходимо разместить в <head> каждой страницы вашего сайта, где будет отображаться reCAPTCHA. 

2. Настройте форму.

Найдите блок с формой, для которой планируете настроить проверку. Это обычно блок с тегом <form>. Внутри формы, непосредственно перед кодом кнопки отправки данных <button>, добавьте следующий фрагмент: 

<div class=»g-recaptcha» data-sitekey=»YOUR_SITE_KEY»></div>

Полная форма будет выглядеть примерно так:

<form action=»your_form_handler.php» method=»post»>

    <label for=»name»>Имя:</label><br>

    <input type=»text» id=»name» name=»name»><br><br>

    <label for=»email»>Email:</label><br>

    <input type=»email» id=»email» name=»email»><br><br>

    <div class=»g-recaptcha» data-sitekey=»YOUR_SITE_KEY»></div><br>

    <button type=»submit»>Отправить</button>

</form>

Вместо YOUR_SITE_KEY вставьте ваш ключ сайта, который вы получили на сайте Google reCAPTCHA. 

3. Настройте интеграцию с сервером. 

Перейдите на сервер и откройте PHP-файл, указанный в атрибуте action тега <form>. Например, в этом примере нужный нам обработчик формы — это your_form_handler.php. 

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

Приведу пример PHP-файла с добавленным кодом проверки и секретным ключом. В данном примере обработчик формы будет проверять, прошёл ли пользователь капчу. Если капча не пройдена, на экране отобразится уведомление об ошибке — «Ошибка заполнения капчи!». Пример:

<?php

$error = true;

$secret = ‘YOUR_SECRET_KEY‘;

if (!empty($_POST[‘g-recaptcha-response’])) {

    $curl = curl_init(‘https://www.google.com/recaptcha/api/siteverify’);

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($curl, CURLOPT_POST, true);

    curl_setopt($curl, CURLOPT_POSTFIELDS, ‘secret=’ . $secret . ‘&response=’ . $_POST[‘g-recaptcha-response’]);

    

    $out = curl_exec($curl);

    curl_close($curl);

    

    $out = json_decode($out);

    

    if ($out->success == true) {

        $error = false;

    }

}

if ($error) {

    echo ‘Ошибка заполнения капчи!’;

}

?>

Замените YOUR_SECRET_KEY на ранее полученный секретный ключ. Сохраните изменения в файле PHP. 

4. Проверьте работоспособность капчи. 

Перейдите на страницу с формой и попробуйте отправить её. Убедитесь, что при прохождении капчи форма отправляется успешно, а при её непрохождении отображается сообщение об ошибке. 

Руководство для версии reCAPTCHA v3

1. Загрузите API JavaScript. 

Чтобы использовать reCAPTCHA v3 на странице, вам нужно подключить JavaScript-библиотеку Google reCAPTCHA. Для этого вставьте следующий код в <head> или перед закрывающим тегом </body> на вашем сайте:

<script src=»https://www.google.com/recaptcha/api.js»></script> 

Повторите процесс для всех страниц сайта, на которых планируете использовать reCAPTCHA v3. 

2. Добавьте функцию обратного вызова для обработки токена. 

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

<script>

   function onSubmit(token) {

     document.getElementById(«demo-form»).submit();

   }

</script>

В данном случае функция onSubmit получает токен от reCAPTCHA и отправляет форму с id demo-form. Вы можете адаптировать эту функцию в соответствии с вашими потребностями. 

3. Добавьте атрибуты к вашей кнопке HTML. 

Чтобы привязать reCAPTCHA к кнопке, используйте специальный HTML-атрибут class=»g-recaptcha», который активирует reCAPTCHA. Добавьте атрибуты для ключа сайта, действия и функции обратного вызова. Код кнопки будет выглядеть так: 

<button class=»g-recaptcha» 

        data-sitekey=»YOUR_SITE_KEY» 

        data-callback=»onSubmit» 

        data-action=»submit»>Submit</button>

А вот так может выглядеть полный код формы с кнопкой, к которой привязана reCAPTCHA:

<body>

    <form id=»demo-form» action=»your_form_handler.php» method=»post»>

        <label for=»name»>Имя:</label>

        <input type=»text» id=»name» name=»name» required><br><br>

        <label for=»email»>Email:</label>

        <input type=»email» id=»email» name=»email» required><br><br>

        <input type=»hidden» name=»recaptchaResponse» id=»recaptchaResponse»>

        <button class=»g-recaptcha» 

                data-sitekey=»YOUR_SITE_KEY» 

                data-callback=»onSubmit» 

                data-action=»submit»>Отправить</button>

    </form>

</body>

4. Настройте проверку на сервере. 

Перейдите на сервер и откройте PHP-файл, указанный в атрибуте action тега <form>. В самое начало файла добавьте код для проверки капчи. Пример PHP-обработчика:

<?php

function isValid(){

    if(

        $_POST[‘fname’] != » &&

        $_POST[‘lname’] != » &&

        $_POST[’email’] != » &&

        $_POST[‘message’] != »

    ) {

        return true;

    }

    return false;

}

$success_output = »;

$error_output = »;

if (isValid()) {

    $recaptcha_url = ‘https://www.google.com/recaptcha/api/siteverify’;

    $recaptcha_secret = ‘YOUR_SECRET_KEY‘;

    $recaptcha_response = $_POST[‘recaptchaResponse’];

    $recaptcha = file_get_contents($recaptcha_url.’?secret=’.$recaptcha_secret.’&response=’.$recaptcha_response);

    $recaptcha = json_decode($recaptcha);

    if($recaptcha->success == true && $recaptcha->score >= 0.5 && $recaptcha->action == «contact») {

        $success_output = ‘Ваше сообщение было отправлено успешно.’;

    } else {

        $error_output = ‘Что-то пошло не так. Пожалуйста, попробуйте снова позже’;

    }

} else {

    $error_output = ‘Пожалуйста, заполните все обязательные поля.’;

}

$output = [

    ‘error’ => $error_output,

    ‘success’ => $success_output

];

echo json_encode($output);

?>

Замените YOUR_SECRET_KEY на ваш секретный ключ. 

Учтите, что в reCAPTCHA v3 проверяется не только success, но и score. Значение score находится в диапазоне от 0.0 (бот) до 1.0 (человек). Рекомендуется использовать порог 0.5. Вы можете настроить этот порог в зависимости от ваших требований. 

5. Проверьте работу reCAPTCHA. 

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

Как добавить reCAPTCHA с помощью плагинов

Для сайтов на CMS можно добавить reCAPTCHA с помощью различных плагинов. В этом случае не нужно работать с HTML-кодом, и специальные познания в веб-разработке также не потребуются. Сначала необходимо установить подходящий плагин или выбрать расширение из предустановленных вариантов, а затем выполнить ряд несложных настроек в админ-панели. 

На WordPress

Вот как это выглядит на примере плагина ReCaptcha Integration for WordPress

1. Откройте панель управления сайтом на WP, перейдите в раздел плагины и через поиск найдите ReCaptcha Integration for WordPress. Установите и активируйте плагин. 

Скачивание плагина

2. Перейдите в раздел «Настройки» и выберите ReCaptcha. Здесь нужно указать полученные ранее ключи капчи в соответствующих полях. Сохраните изменения.

Добавление ключей в плагин

3. После добавления ключей вы попадёте на страницу настройки плагина. В первую очередь проверьте работоспособность API-ключей. Для этого нажмите на «Проверка API Key».

Проверка ключей

4. Если вы увидели окно капчи, значит, настройка прошла успешно.

Окно капчи

5. Далее в этом же разделе выберите формы для защиты посредством капчи. Не забудьте нажать на «Сохранить изменения».

6. Проверьте работу капчи на сайте. Но учтите, что авторизованный администратор не может видеть капчу. Поэтому для проверки откройте сайт в режиме инкогнито или выйдите из аккаунта. 

Похожим образом работает и плагин Contact Form 7 для WordPress. После его установки нужно выбрать интеграцию с ReCaptcha и ввести API-ключи. 

На Joomla

Некоторые CMS предлагают использование встроенных плагинов. Например, на Joomla инструменты для внедрения капчи уже присутствуют в списке плагинов. Их нужно только активировать. 

В панели администратора в разделе «Система» перейдите в подраздел «Плагины» и выполните поиск reCAPTCHA. Доступны два варианта — reCAPTCHA и невидимая reCAPTCHA. Выбрав нужный тип, укажите API-ключи в открывшейся форме, включите плагин и сохраните изменения. 

Добавление ключей reCAPTCHA на Joomla

Далее останется перейти во вкладку «Система» и выбрать reCAPTCHA в «Общих настройках» в разделе «CAPTCHA по умолчанию». 

На Tilda

На сайтах Tilda капча включена по умолчанию и убрать её нельзя. Проверка появляется при третьей повторной отправке с одного IP-адреса за короткий период времени. 

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

  • слабая защита — капча редко показывается; 
  • стандартная защита — капча появляется при третьей повторной отправке формы с одного IP-адреса; 
  • усиленная защита — капча появляется при второй повторной отправке формы с одного IP-адреса; 
  • агрессивная защита — капча появляется каждый раз при отправке любой формы. 

На других CMS могут использоваться похожие плагины или собственные решения. Также помимо reCaptcha существуют и другие сервисы, предлагающие защиту сайта от ботов и спам-атак.

Дополнительные сервисы для добавления капчи

В сети есть множество сервисов, которые поставляют собственные реализации технологии CAPTCHA. Вот несколько возможных альтернатив: 

SmartCAPTCHA. Это отечественный аналог reCaptcha, разработанный Яндексом. Сервис позволяет использовать разные варианты проверки — простая галочка «Я не робот», слайдер, «Невидимая капча», распознавание текста, силуэты, калейдоскоп. Подключение выполняется, как и в случае с reCAPTCHA, посредством использования клиентского и серверного ключей. В консоли управления можно настраивать внешний вид, варианты заданий, правила показа. 

SmartCAPTCHA

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

hCAPTCHA

«Умная капча» от «Ботфактор». Этот сервис не только защищает сайты от ботов, но и умеет предотвращать скликивание рекламных кампаний. Для использования капчи нужно установить на сайте счётчик согласно инструкции сервиса. С помощью этого инструмента можно защитить любые лид-формы и кнопки. 

«Умная капча»

MTCaptcha. Это сервис поддерживает применение невидимой и обычной текстовой капчи, для которой можно добавить аудио. Для начала нужно создать в конструкторе кода нужный вариант проверки, а затем скопировать код для вставки и добавить его на свой сайт. Стоит отметить, что конструктор позволяет стилизовать капчу на свой вкус — изменить цвета, язык, размер и прочее. 

MTCaptcha

Capy Puzzle CAPTCHA. Этот сервис предлагает использование капчи-пазла, когда часть картинки нужно перетащить на нужное место. Фоновое изображение и части пазла можно настроить по своему усмотрению, чтобы они соответствовали внешнему виду и стилю сайта. Можно загрузить свою картинку и изменить её размер. Для использования капчи достаточно добавить на свой веб-сайт сгенерированный код JavaScript. 

Capy Puzzle CAPTCHA

Капча — полезный инструмент для защиты от ботов автоматических атак. Однако важно использовать её разумно, чтобы не усложнять опыт пользователей. Добавляйте проверку только там, где это действительно необходимо. Это позволит сохранить баланс между безопасностью и удобством.