Как сделать капчу

Добавил пользователь Дмитрий К.
Обновлено: 19.09.2024

К маю 2020 года свыше 5 миллионов вебсайтов установили виджет reCAPTCHA, а более 1 миллиона из них используют последнюю невидимую версию — reCAPTCHA v3. Этот инструмент защищает веб-сервисы от интернет-ботов, но не всегда устраивает владельцев и пользователей.

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

Правда, виджеты с поисками светофоров, мостов и гидрантов вряд ли скоро забудутся: они давно стали героями мемов. А Matthew Rayfield, о проектах которого мы уже рассказывали, даже сделал игру про капчу:

Итак, чем можно заменить reCAPTCHA?

Другие капчи

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

MTCaptcha

Как и в случае с reCAPTCHA v3, есть невидимая версия. На главной странице можно ознакомиться со сравнением характеристик MTCaptcha и reCAPTCHA.

Если хочется чего-нибудь более интересного, подойдёт Capy. Эта лаконичная по своему дизайну капча предлагает пользователю переместить недостающий фрагмент пазла так, чтобы получилась цельная картинка:

Capy

Своя капча

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

Cube Dev , Удалённо , От 8000 $

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

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

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

CMS плагины

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

Really Simple CAPTCHA

Лаконичный виджет, который установило свыше 800 000 пользователей WordPress:

Однако создатели Really Simple CAPTCHA предупреждают, что название плагина говорит само за себя: он очень прост, в том числе и для ботов. Надёжен только в тандеме с другими инструментами безопасности.

Hidden CAPTCHA

Вариант скрытой капчи в виде плагина для Drupal:

Hidden CAPTCHA

Около 8000 пользователей Drupal установили Hidden CAPTCHA.

OSOLCaptcha

OSOLCaptcha — это простенький вариант для тех, чей сайт на Joomla!: блокирует ботов, нормально смотрится и легко читается:

Solve Media

Вас интересует дополнительная монетизация ресурса? Тогда выбирайте Solve Media — капчу, которая объединила баннерную рекламу и антиспам-сервис в одном виджете:

Solve Media

А вот стандартный вариант без рекламы:

Solve Media

Работает на большинстве популярных CMS, среди которых vBulletin, WordPress, MediaWiki, Drupal, Joomla!, MyBB и другие.

Другие инструменты защиты от ботов

Honeypot-ловушки

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

Форма ввода на JavaScript

Большинство спам-ботов примитивны. Чаще всего они даже не пытаются выполнять JS-скрипты, поэтому создание простой формы ввода на JS их отсечёт. Но метод не сработает, если у вас много пользователей с отключённым JavaScript. В таком случае нужно либо вообще отказаться от этого способа, либо параллельно использовать что-то ещё.

Двухфакторная аутентификация

А вот ещё одна альтернатива reCAPTCHA. Подтверждение по email или SMS решит проблему со спамом на 100%. Однако запрос такого подтверждения при каждом посещении сайта или действии на нём утомляет. Используйте двухфакторную аутентификацию точечно, например только при регистрации или авторизации пользователя.

Заключение

Любое из этих решений защищает от спам-ботов не хуже reCAPTCHA, но при этом лишено её недостатков. Попробуйте протестировать их в своих проектах — возможно, они понравятся вам больше решения от Google.

Также хорошим тоном будет обеспечить пользователям конфиденциальность с помощью DNT-функции (Do Not Track), которая позволит им отключать отслеживание в браузере. Для её использования достаточно собрать весь отслеживающий код в одном месте и обернуть в проверку:

Как установить капчу на сайт с WordPress

Именно поэтому многие используют капчу, и сегодня я вам покажу, как установить ее на сайт с WordPress.

Что такое капча и как она работает

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

Одной из самых популярных капч является reCAPTCHA от Google. Наверняка вы ни раз сталкивались с тем, что нужно подтвердить, что вы не робот. Это она и есть – инструмент от Google, который был разработан для борьбы со спамом и ботами.

Как выглядит reCAPTCHA

Invisible reCAPTCHA позволяет совершать на сайте какие-либо действия без ввода капчи. По умолчанию только самые подозрительные действия пользователей не позволят им пройти дальше. В этом случае капча предложит им решить задачу.

Пример капчи от Google

Стоит также понимать, что капча – это не только инструмент от Google, существует множество инструментов от других разработчиков.

Установка капчи на WordPress

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

Готово! Теперь ваш сайт защищен от надоедливых ботов. Это был лишь один из способов установки капчи на WordPress. Мы также можем установить ее через HTML-код либо с помощью других плагинов, о которых речь пойдет ниже.

Топ-5 плагинов для установки капчи на WordPress

Выше мы установили капчу от Google, но это не единственная возможная капча, о чем я уже говорил. Есть множество других, о которых я расскажу в этом разделе. Здесь не будет уже рассмотренного плагина, но будут другие, также отлично справляющиеся со спамом и ботами.

Really Simple CAPTCHA

WordPress плагин Really Simple CAPTCHA

Первый в нашем списке плагин – это Really Simple CAPTCHA, используемый как дополнительный модуль для плагина Contact Form 7. Это очень простая и понятная Captcha для пользователей, с помощью которой можно легко защититься от спама. Достаточно ввести код с картинки, и капча будет пройдена.

Пример капчи на сайте

Плюсы:

  • отличный барьер для ботов и спама;
  • есть инструкции по использованию плагина;
  • хорошая читаемость символов в тесте.

Минусы:

  • отсутствует перевод на многие языки;
  • может использоваться только как дополнение к Contact Form 7: не предназначен для работы с другими плагинами.

Ссылка на скачивание: Really Simple CAPTCHA

SI CAPTCHA Anti-Spam

WordPress плагин SI CAPTCHA Anti-Spam

SI CAPTCHA Anti-Spam добавляет различные методы анти-спама для форм в WordPress: комментариев, регистрации, утерянного пароля, логина или сразу всех. Он отлично совместим с WP, WPMU и BuddyPress.

Плюсы:

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

Минусы:

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

Ссылка на скачивание: SI CAPTCHA Anti-Spam

Captcha

WordPress плагин Captcha

Captcha – еще один плагин, позволяющий добавить капчу. Он устанавливает защиту к стандартным формам на WordPress с помощью математической логики. Расширение также совместимо с Contact Form, что позволяет создать отлично защищенную форму обратной связи.

Плюсы:

  • простота установки и использования;
  • отличная читабельность капчи;
  • механизм проверки использует математику: сложение, вычитание и умножение;
  • можно использовать словесное, цифровое или смешанное отображение элементов капчи;
  • доступен на 36 языках;
  • совместимость с Contact Form;
  • есть PRO-версия с поддержкой Contact Form 7 и BuddyPress;
  • подробная документация с пошаговой видеоинструкцией по настройке и установке;
  • в платной версии доступна возможность кастомизации.

Минусы:

  • в бесплатной версии нет совместимости с BuddyPress;
  • долгий ответ технической поддержки в обычной версии.

Ссылка на скачивание: Captcha

Google Captcha (reCAPTCHA) by BestWebSoft

WordPress плагин Google Captcha (reCAPTCHA) by BestWebSoft

Это один из самых популярных плагинов на WordPress, позволяющий установить Google-капчу в два клика. Google Captcha (reCAPTCHA) by BestWebSoft является универсальным инструментом, так как позволяет установить проверку на большинство разделов сайта. Среди них формы регистрации, входа, напоминания пароля, добавления комментариев, контактов и т.д.

Плюсы:

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

Минусы:

Ссылка на скачивание: Google Captcha (reCAPTCHA) by BestWebSoft

Confident CAPTCHA

WordPress плагин Confident CAPTCHA

Confident CAPTCHA – это не простой ввод символов, как было в предыдущих случаях, а капча с простым выбором картинки. Для прохождения проверки достаточно выбрать картинку, на которой изображен предложенный объект, например цветок.

Плюсы:

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

Минусы:

  • не работает с WP Multisite;
  • может показаться, что это реклама.

Ссылка на скачивание: Confident CAPTCHA

Заключение

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



Наверное, каждый пользователь интернета хотя бы раз столкнулся с вводом проверки капчи на форме обратной связи. Но что такое капчи для сайтов? Что стоит за этими затейливыми картинками и значками? Давайте разбираться!

Что же представляет собой тест Тьюринга? Обратимся к истории. В 1950 г. английский логик Алан Тьюринг провел интересный опыт, в ходе которого человек (судья) общался с компьютером и другим человеком посредством текстовой переписки. Считалось, что компьютер прошел тест в том случае, если судья не мог определить, кто является его оппонентом в данный момент времени.

Следует сказать, что изначальная версия теста была ориентирована на исследование возможностей компьютера. Так вот, нынешняя капча — это новое, усовершенствованное поколение теста Тьюринга. Роль судьи в данном инструменте играет компьютерная программа. По этой причине современная капча для сайта получила название обратного теста Тьюринга.

Зачем нужна капча

Мир современного интернета жесток и коварен. Множество сайтов регулярно подвергаются вредоносным автоматизированным атакам. Функцией капчи в данной ситуации является обеспечение безопасности ресурса посредством блокировки этих атак.

Помимо своего основного назначения, капча несет и дополнительную полезную функцию, а именно распознавание отсканированных и печатных текстов. При работе с типографским текстом программы-распознаватели (типа Adobe FineReader) лишь частично справляются с этой задачей. Что же касается рукописей, то их распознавание почти нулевое. Так вот, разработчики капчи собрали целую базу нераспознанных символьных конструкций. Эти конструкции стали отображаться в формате картинок капчи, которая предлагала пользователям ввести в текстовое поле увиденные символы. Такой прием позволил наполнить базу нераспознанных слов вариантами их расшифровки.

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

Виды капчи

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


  • Графическая капча. Представляет собой набор символов, которые были искажены и пропущены сквозь шумовые фильтры.
    В частности, так выглядит Яндекс-капча для сайта.

Ее особенность заключается в том, что кодовое слово предлагается на кириллице.


  • Логическая капча. Позволяет определить наличие человеческой логики. К таким задачам относятся:
    • Арифметические операции.
    • Поиск объекта по заданному критерию (например, на изображении лесного пейзажа отметить хвойные деревья).
    • Перестановка символов (например, написать наоборот предложенное слово).
    • Поведенческая капча. В этом случае пользователю предлагается совершить указанное действие:
      • Перемещение бегунка в заданное положение.
      • Поворот картинки на заданный градус.
      • Составление пазла.


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


      В случае успешного результата система дает логическое задание, предлагая отметить на фото заданные элементы.

      Как поставить капчу на сайт

      Подключение Гугл-капчи

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


      После ввода необходимых данных, вам откроется страница, содержащая ключи.

      Помимо ключей, этот сайт содержит необходимый скрипт. Его нужно скопировать и вставить в блок head кода вашего сайта. Затем нужно вставить блок с капчей в любое выбранное место.

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

      (div data="7tegjmkWRRRRRRKvbbHYJiGhl4PEd3YGmd7cRsFA")(/div)
      (!обрабатываем исключительные ситуации --)
      (div )(/div)

      Что-же касается js-страницы, то в ее код следует внести следующие строки:

      Серверная часть, т.е. php-скрипт также подлежит изменениям. Для этого в файл process.php нужно внести следующие правки:

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

      // Если проверка пройдена
      //.
      > else
      // выводим код ошибки
      $myerr = $prn->getErrorCodes();
      $data['err_prn']=$prn;
      $data['mes']='Проверка не пройдена';
      $data['myres']='err_prn';
      >
      > else
      //Массив отсутствует
      $data['my_res']='error';
      >

      Подключение Яндекс-капчи

      Перед тем, как установить капчу на сайт, нужно создать простой статический php-класс:

      Теперь займемся реализацией методов. Программный интерфейс получает запросы GET и POST и выдает ответы XML-формата. Вот так будет выглядеть простая функция передачи запроса:

      function Q_XML($u, $par = array(), $p = false)

      $Q_param = hp_builder_query($par);
      if ($post)
      array ( 'method' => 'POST', ) );
      $ct = st_context_create($p_op);
      $cs = file_get($u, false, $c);>
      else $cs = get($url.'?'.$Q_Param);
      if (!$cs) return 0;
      $D_XML = XMLElement($cs);
      return $D_XML;>

      Далее напишем алгоритм проверки на спам. Все проверяемые данные будем передавать единым массивом:

      Function Poisk_spam($m_d, $r_f_d = 0)

      $s_d = (isset($r->caption['metka']) && $r->caption['otmetka'] == 'da');
      if (!$r_f_d) return $s_d;
      return arr( 's_l' => (ins($r->links)) ? $r->links : array() );>

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

      $r= Q_x(get_captcha_url, array('ss' => $ss));

      И, наконец, проверка капчи осуществляется с помощью функции check_captcha_url. На вход ей передается идентификатор (id) созданной капчи. Вот как это будет выглядеть:

      function my_cap($id_cap, $znach, $id = 0)
      $id_cap, 'v' => $znach, 'id' => $id);
      $rez = Q_x(check_captcha_url, $param);
      return $r->ok);>

      Не работает капча на сайте. Что делать?

      Как правило, проблемы с капчей возникают на WordPress-сайтах. Классические тесты на таких страницах могут срабатывать некорректно. Дело в том, что работа большинства плагинов кэширования WordPress основана на серверном кэшировании. Так, для повышения скорости вызова все типовые запросы к БД хранятся на стороне сервера. Плагины WordPress хранят даже структуру блоков страницы. Такая перегруженность лишними деталями искажает работу капчи. Решается проблема просто — достаточно сменить капчу с серверной генерацией заданий на AJAX-капчу. Эта технология позволяет получать с сервера задания без перезагрузки всей страницы. По этому принципу работает новая версия Гугл-капчи — Google reCAPTCHA v2, или noCAPTCHA. Подключается она с помощью специального плагина Google Captcha (reCAPTCHA) by BestWebSoft.

      Стандартная форма, созданная с помощью этого плагина будет выглядеть вот так:

      капча (capcha) php

      Для защиты сайта от регистрации ботов используют так называемый тест Тьюринга. В простонародии он называется капча (CAPTCHA). Я решил сделать капчу (captcha) используя php. Об этом и пойдёт разговор в этой заметке.

      Что же по сути такое тест Тьюринга. А это проверка, является ли пользователь живым человеком или ботом. Устанавливается задача, которую человек решит легко, а для программного решения потребуется очень много ресурсов. Обычно задачей является распознавание текста на картинке. Для усложнения распознования картинки с помощью компьютера добавляют к изображению дополнительные линии и шумы. Исходя из выше изложенной информации, напрашивается вывод, что мы должны научиться генерировать изображения с помощью php. Для работы с графикой в php существует библиотека GD2. Давайте сначала её подключим и разберёмся как с её помощью сделать captcha для сайта.

      Подключение библиотеки GD2 к PHP

      Находим в папке: C:\Program Files\PHP\ext файл php_gd2.dll (это и есть библиотека), и копируем в c:\windows . В файле c:\windows\php.ini находим строку extension=php_gd2.dll и раскоментируем. Не забываем перезапустить apache. У меня веб сервер apache стоит на windows. Здесь заметка как я его ставил. Так что процесс установки GD2 может у вас отличаться от моего. Теперь давайте разберём основные функции GD2.

      Функции библиотеки GD2 PHP

      Создание и генерация изображения

      Функция Что функция делает
      $myimg = imageCreate(500, 300) Делаем изображение (256 цветов)
      $myimg = imageCreateTrueColor(500, 300) Делаем изображение (17 млн. цветов)
      header("Content-type: image/jpeg"); imageJpeg($myimg[,"filename"][,quality]) Создание JPEG-картинки
      header("Content-type: image/gif"); imageGif ($myimg[,"filename"]); Создание GIF-картинки
      header("Content-type: image/png"); imagePng($myimg[,"filename"]); Создание PNG-картинки

      Рисование

      Функция Что функция делает
      imageAntiAlias($myimg, true) Сглаживание (antialiasing)
      $mycolor = imageColorAllocate($myimg, 255, 0, 0) Определение цвета
      imageLine($myimg, 25, 25, 70, 290, $mycolor); Рисуем линии, цифры это координаты точек
      imageRectangle($myimg, 25, 25, 70, 290, $mycolor); Рисуем прямоугольник, цифры это координаты углов
      imageFilledRectangle ($myimg, 20, 20, 65, 295, $mycolor); Заливка фона
      $points = array(0,0,110,210,310,210); imagePolygon($myimg, $mypoints, 3, $mycolor); imageFilledPolygon ($myimg, $mypoints, 3, $mycolor); Рисуем многоугольник
      imageEllipse ($myimage, 200, 150, 300, 200, $color); Рисуем эллипс. Первые 2е цифры координаты центра эллипса, 2е 2е высота и ширина эллипса (x, y)
      imageString ($myimage, 3, 130, 350, "Hai", $mycolor); Рисуем строку текста. 1я цифра размер шрифта ( max 5)
      imageTtfText ($myimg, 30, 10, 310, 160, $mycolor, "my.ttf", "Hai"); Рисуем строку текста. Применяем TrueType-шрифты. 1я цифра размер шрифта, 2я угол наклона, 3-4 координаты бокса, шрифт, текст
      $myimg = imageCreateFromJPEG("myimage.jpg"); $myimg = imageCreateFromGIF("myimage.jpg"); $myimg = imageCreateFromPNG("myimage.jpg"); Делаем новое изображения на базе имеющегося

      Создание капчи (captcha) php

      Теперь мы обладаем нужной информацией для создания капчи (captcha) php. Я написал свой небольшой класс, который генерирует картинку капчи. Файл с классом называется mycaptcha.php . Листинг ниже.

      Теперь нам этот класс нам нужно подключить в файл, который будет генерировать captcha php. Файл я назвал imgcaptcha.php . Листинг:

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

      Читайте также: