Как добавить капчу на страницы регистрации и входа в WordPress. Установка Google reCAPTCHA на WordPress Плагин recaptcha

Из этой статьи вы узнаете, как интегрировать новую reCatcha Google в формы входа, комментариев, регистрации и восстановления пароля WordPress :

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

Поэтому ReCaptcha больше не являлась безопасной. Кроме этого метод был довольно неудобным для пользователей. Поэтому в Google разработали новое решение и назвали его No Captcha ReCaptcha .

В этой статье мы рассмотрим, что представляет собой No Captcha ReCaptcha , и как создать плагин, который интегрирует ReCaptcha в формы входа, комментариев, регистрации и восстановления пароля WordPress .

Обзор No Captcha ReCaptcha

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

Регистрация сайта и получения ключей

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

Вы должны создать страницу настроек для плагина, которая позволяет администратору WordPress установить ключ сайта и секретный ключ, которые он получит в панели администрирования ReCaptcha :

function no_captcha_recaptcha_menu() { add_menu_page("reCapatcha Options", "reCaptcha Options", "manage_options", "recaptcha-options", "recaptcha_options_page", "", 100); } function recaptcha_options_page() { ?>

reCaptcha Options

You need to register you domain and get keys to make this plugin work.

"); echo __("Enter the key details below"); } function display_captcha_site_key_element() { ?> " /> " />
  • Мы создаем страницу настроек в панели администрирования WordPress ;
  • На этой странице настроек выводятся два поля для ввода ключа сайта и секретного ключа;
  • Эти ключи сохраняются как параметры WordPress site_key и secret_key .

Добавление No Captcha ReCaptcha в форму комментариев WP

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

Создайте в папке плагина файл style.css и поместите в него следующий код:

#submit { display: none; }

Приведенный выше код скрывает кнопку «Оставить комментарий » в форме комментариев WordPress . Таким образом, мы размещаем панель ReCaptcha над кнопкой «Оставить комментарий «, вставив кнопку и панель ReCaptcha вручную.

Ниже приводится код для вставки ReCaptcha в форму комментариев:

function frontend_recaptcha_script() { wp_register_script("recaptcha", "https://www.google.com/recaptcha/api.js"); wp_enqueue_script("recaptcha"); $plugin_url = plugin_dir_url(__FILE__); wp_enqueue_style("no-captcha-recaptcha", $plugin_url ."style.css"); } add_action("wp_enqueue_scripts", "frontend_recaptcha_script"); function display_comment_recaptcha() { ?>

">

Давайте рассмотрим, как работает приведенный выше код:

  • Мы подключаем в интерфейсе WordPress с помощью действия wp_enqueue_scripts ;
  • Мы также подключаем файл style.css с помощью функции wp_enqueue_style ;
  • В форме комментариев мы выводим флажок с помощью действия comment_form ;
  • После того, как комментарий был отправлен, перед его добавлением в базу данных WordPress вызывается фильтр preprocess_comment . Внутри фильтра мы проверяем, является ли пользователь человеком или ботом. Если это человек, то возвращается комментарий, чтобы добавить его в базу данных. В противном случае возвращается ноль, чтобы блокировать добавление комментария в базу данных.

Добавление No Captcha ReCaptcha в форму входа WP

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

function login_recaptcha_script() { wp_register_script("recaptcha_login", "https://www.google.com/recaptcha/api.js"); wp_enqueue_script("recaptcha_login"); } add_action("login_enqueue_scripts", "login_recaptcha_script"); function display_login_captcha() { ?>

">
ERROR: You are a bot")); } } else { return new WP_Error("Captcha Invalid", __("ERROR: You are a bot. If not then enable JavaScript")); } } add_filter("wp_authenticate_user", "verify_login_captcha", 10, 2);

Давайте рассмотрим, как работает приведенный выше код:

  • Мы подключаем JavaScript-файл Google ReCaptcha на страницах входа, регистрации и восстановления пароля с помощью действия login_enqueue_scripts ;
  • Перед получением окончательного результата аутентификации WordPress запускает фильтр wp_authenticate_user для добавления дополнительного этапа валидации. Мы проверяем, является ли пользователь человеком или ботом. Если это человек, мы возвращаем объект пользователя, в противном случае мы возвращаем объект ошибки.

Добавление No Captcha ReCaptcha в форму регистрации WP

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

function display_register_captcha() { ?>

">
add("Captcha Invalid", __("ERROR: You are a bot")); } } else { $errors->add("Captcha Invalid", __("ERROR: You are a bot. If not then enable JavaScript")); } return $errors; } add_filter("registration_errors", "verify_registration_captcha", 10, 3);

Давайте рассмотрим, как работает приведенный выше код:

  • Мы выводим флажок с помощью действия login_form ;
  • Перед получением окончательного результата аутентификации WordPress запускает фильтр registration_errors , чтобы добавить дополнительный шаг валидации. Внутри этого фильтра мы проверяем, является ли пользователь человеком или ботом. Если это человек, мы возвращаем пустой объект ошибки, иначе мы добавляем дополнение к объекту ошибки и возвращаем его.

Добавление No Captcha ReCaptcha в форме восстановления пароля

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

function verify_lostpassword_captcha() { if (isset($_POST["g-recaptcha-response"])) { $recaptcha_secret = get_option("captcha_secret_key"); $response = wp_remote_get("https://www.google.com/recaptcha/api/siteverify?secret=". $recaptcha_secret ."&response=". $_POST["g-recaptcha-response"]); $response = json_decode($response["body"], true); if (true == $response["success"]) { return; } else { wp_die(__("ERROR: You are a bot")); } } else { wp_die(__("ERROR: You are a bot. If not then enable JavaScript")); } return $errors; } add_action("lostpassword_form", "display_login_captcha"); add_action("lostpassword_post", "verify_lostpassword_captcha");

Давайте рассмотрим, как работает приведенный выше код.

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

Для чего нужна капча?

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

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

Для WordPress существует множество готовых решений в виде плагинов, позволяющих защитить сайт от вышеупомянутого зловредного влияния. Так, среди них следует выделить довольно популярный плагин Google Captcha (reCAPTCHA) by BestWebSoft , который использует капчу от Гугл. Он является универсальным, так как позволяет установить проверку на большинство разделов сайта. Среди них:

  • форма регистрации,
  • форма входа,
  • форма напоминания пароля,
  • форма добавления комментариев,
  • контактная форма,
  • кастомная форма.

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

В поле Label необходимо ввести имя проверки (любое). Также следует выбрать тип проверки. Мы воспользуемся простой для пользователя проверкой, которая предполагает подтверждение простым выбором необходимых картинок (reCAPTCHA V2 ).

После выбора типа проверки необходимо ввести название домена сайта, после чего отметить пункт Accept the reCAPTCHA Terms of Service и нажать кнопку Register .

После сохранения настроек Вы попадете в окно, где нужно будет скопировать отдельно (например, в Блокноте ) значения полей Site key и Secret key .

Все, необходимые ключи получены. Теперь возвращаемся обратно в админ-панель сайта и переходим Google Captcha -> Настройки .

В поля Ключ сайта и Секретный ключ следует ввести значения сохраненных ранее Вами строк (Site key и Secret key соответственно). Ниже, в разделе Включить reCaptcha для , нужно выбрать страницы, на которых будет включена проверка, после чего нажать кнопку Сохранить изменения . После успешного сохранения настроек Вы сможете протестировать капчу.

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

Всем большой привет! Вот и наступил тот момент, когда мне до чёртиков надоело очищать корзину от различного хлама - кучи ссылок и я решил усилить защиту комментариев от спама с помощью плагина Captcha . Прежний плагин Amcaptcha перестал меня устраивать, боты спокойно его обходили, умеют козлы ставить галочку "Подтверждаю, что я не спам - бот". Прикольно получается, боты подтверждают, что они не боты. И в добавок к этому, плагин уже четыре года не обновлялся. Теперь ему место только на свалке истории.

Для того, чтобы испортить жизнь спам - ботам плагин Captcha предлагает решить элементарную математическую задачку перед отправкой комментария в блог. Если вы человек, то сложить, вычесть или умножить, например 2 и 1 вам не составит большого труда, а спам-боту это не по силам. После добавления математической капчи к стандартной форме комментариев, моя корзина для спама абсолютно пуста. Ура товарищи! Советую и вам друзья, защитить свой сайт от спама с помощью популярного модуля Captcha (на сегодняшний день его скачали уже более 2,124,099 раз).

Установка и настройка плагина Captcha - защита сайта WordPress от спама

Плагин Captcha защита сайта от спама

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

Установка плагина Captcha через админпанель сайта

После успешной установки и активации плагина, у вас появится дополнительный раздел в панели управления - BWS Plugin и подраздел Captcha. Вот и на Captcha кликните мышкой. Русский язык присутствует, поэтому проблем с настройкой модуля не будет. На открывшейся странице настроек вам нужно отметить галочкой, где вы хотите отображать математическую капчу. Бесплатную версию плагина можно использовать для стандартных форм , регистрации, входа на сайт, а также для формы восстановления пароля:

Затем, придумайте заголовок для CAPTCHA в форме комментариев. Например: Решите задачку или Анти-спам.

Арифметические действия - лучше всего отметить все (Плюс (+), Минус (−), Умножение (×).

Уровень сложности - также выбрать все (цифры и слова):

Настройки Captcha - защита сайта от спама

Математическая капча в форме комментариев WP

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

Регистрационная форма:

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

Надеюсь, друзья, пост был полезен для вас. Всего доброго и удачи.

(function(w, d, n, s, t) { w[n] = w[n] || ; w[n].push(function() { Ya.Context.AdvManager.render({ blockId: "R-A-292864-4", renderTo: "yandex_rtb_R-A-292864-4", async: true }); }); t = d.getElementsByTagName("script"); s = d.createElement("script"); s.type = "text/javascript"; s.src = "//an.yandex.ru/system/context.js"; s.async = true; t.parentNode.insertBefore(s, t); })(this, this.document, "yandexContextAsyncCallbacks");

Установка reCAPTCHA на сайт делится на 3 этапа:

  1. Регистрация и получение API key.
  2. Интеграция на стороне клиента.
  3. Интеграция на стороне сервера.

В данной статье мы рассмотрим процесс добавления Google reCAPTCHA в стандартную форму комментариев WordPress. Если ваш сайт работает под управлением другой CMS, рекомендую воспользоваться официальным руководством от Google .

Регистрация и получение API key

После авторизации в аккаунте Google, переходим на главную страницу Google reCAPTCHA и жмем на кнопку «Get reCAPTCHA».


Google reCAPTHCA — добавление нового сайта

После регистрации мы получим два ключа:

  1. Ключ сайта (Site key) – используется в открытом виде как идентификатор.
  2. Секретный ключ (Secret key) – используется на стороне сервера для связи с Google.

На этом подготовка к работе завершена.

Интеграция на стороне клиента

Интеграция Google reCAPTCHA на стороне клиента заключается в добавлении HTML-кода в шаблон сайта. Сделать это можно разными способами, но мы рассмотрим только наиболее правильный. Его суть заключается в использовании специализированных функций WordPress. При этом весь код добавляется в файл functions.php, не затрагивая других файлов, в частности файлов движка сайта.

Всего нужно выполнить 2 действия:

  1. Подключить скрипт reCAPTHCA api.js
  2. Добавить HTML-код блока reCAPTCHA.

Подключение reCAPTCHA api.js

Подключение нового скрипта в WordPress сводится к трем операциям:

  1. Регистрации скрипта при помощи функции wp_register_script().
  2. Инициализации скрипта при помощи функции wp_enqueue_script().
  3. Привязке функций к событию wp_enqueue_scripts при помощи функции add_action(). Для этого функции wp_register_script() и wp_enqueue_script() помещаются в еще одну функцию, которая вызывается в add_action().
add_action("wp_enqueue_scripts", "add_recaptcha_js", 5, 1);
function add_recaptcha_js() {
// Регистрация reCAPTHCA api.js, version - null, in footer - false
wp_register_script("recaptcha", "https://www.google.com/recaptcha/api.js?hl=ru", array(), null, false);
// Подключение reCAPTHCA api.js
wp_enqueue_script("recaptcha");
}

Добавление HTML-кода блока Google reCAPTCHA

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

Add_action("comment_form_after_fields", "recaptchadiv");
function recaptchadiv($post_id) {
global $user_ID;

if ($user_ID) {
return $post_id;
}
echo "

";
return $post_id;
}

Не забываем заменить site_key на свой ключ.

Интеграция на стороне сервера

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

Таким образом, для защиты комментариев WordPress нам потребуется две функции:

  1. Функция проверки ответа сервера Google.
  2. Функция предварительной обработки данных комментария.

Как и в случае интеграции на стороне клиента, весь код добавляется в файл functions.php.

Функция проверки ответа сервера Google reCAPTCHA

function verify_recaptcha_response() {
$recaptcha_secret_key = "secret_key";
$recaptcha_site_key = "site_key";
if (isset ($_POST["g-recaptcha-response"])) {
$captcha_response = $_POST["g-recaptcha-response"];
} else {
return false;
}
// Verify the captcha response from Google
$response = wp_remote_post(
"https://www.google.com/recaptcha/api/siteverify",
array(
"body" => array(
"secret" => $recaptcha_secret_key,
"response" => $captcha_response
)
);
$success = false;
if ($response && is_array($response)) {
$decoded_response = json_decode($response["body"]);
$success = $decoded_response->success;
}
return $success;
}

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

Функция предварительной обработки комментария

Завершающим этапом является написание функции предварительной проверки данных комментария и ее привязка к событию preprocess_comment.

Add_action("preprocess_comment", "preprocess_comment_cb");
function preprocess_comment_cb($commentdata) {
global $user_ID;
if ($user_ID) {
return $commentdata;
}
if (! verify_recaptcha_response()) {
echo "

Вы не прошли защиту от спама Google reCAPTCHA. Вернитесь на предыдущую страницу и повторите попытку.";
exit;
}
return $commentdata;
}

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

Плагин защиты комментариев от спама

Для тех, кто любит простые решения, я написал плагин для защиты комментариев WordPress от спама при помощи Google reCAPTCHA. Для его использования вам необходимо:

  1. Установить плагин.
  2. Ввести ключи в настройках WordPress.

Ключи необходимо вводить на главной странице настроек WordPress (Меню -> Настройки). Поля станут доступны внизу страницы настроек сразу после активации плагина.


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

Для придания отступов и других стилей, добавьте в файл style.css правило для класса g-recaptcha.

G-recaptcha {
}

Заключение

Использование Google reCAPTCHA в комментариях позволит избавится от автоматически распространяемого спама и значительно снизит нагрузку на базу данных сайта. В свою очередь, подключение плагина Akismet защитит вас от спама, распространяемого вручную. Таким образом, рекомендую использовать Google reCAPTCHA в связке с плагином Akismet. Это гарантирует практически 100% защиту от спама, за исключением редких случаев «хитрого спама».

На этом статья про установку Google reCAPTHCA подошла к концу. Если у Вас остались какие-то вопросы или пожелания, вы всегда можете оставить свой комментарий к статье.

Плагин Captcha — по праву можно назвать лучшим антиспам фильтром для WordPress. Минимум настроек, максимум защиты. Используется, что соответствует названия самого плагина, капча. Так часто любимая Гуглом или Яндексом, если вдруг у них закралось подозрение на нехарактерные (злые?) действия пользователя …

Скачать и установить:

  • Через админ панель: Плагины -> Добавить новый: Captcha (установить, активировать);
  • Или скачать: С оф. сайта — (переместить и разархивировать в Ваш_сайт/wp-content/plugins )

О плагине Captcha. Описание

Зачем некоторые подозрительные личности спамят — оставим вопрос для других. Но спам (инфо хлам в комментариях вашего блога, с ссылкой в непонятном направлении) будет постоянно стучаться к вам.

Можно поставить классическую связку: Akismet (постоянно обновляемая база данных спамеров, если где-то определенный адрес посчитали спамным, тут же его вносят в реестр) и Antispam Bee (плагин отслеживает характерные действия спам бота и блокирует его).

Но на практике, в чем вы сами можете убедиться, если поставите данные плагины: спам проходит. На посещаемость более 1000 ч/с до 15 сообщений. Да и понятно почему: спам боты переезжают на новые адреса и придумывают новые способы, как симулировать живого человека.

Это раз, что работают нормально, но недостаточно хорошо. И два — нагрузка на хостинг. Судите сами: Akismet нужно постоянно обновляться, а это лишние операции, выполнение функций, что и грузят ЦП хоста. Antispam Bee — ситуация подобная, хотя уже не помню насколько от «тяжёлый».

Вот, если бы был анти спам плагин для Вордпресс полегче, попроще и чтоб работал на все 100% (99%). И со временем я нашел его: .

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

При наличии настройки самого ВП: Настройки -> Обсуждение -> Перед появлением комментария: Комментарий должен быть одобрен вручную . Защита на все 100%. Но в отличии от связки Akismet + Antispam Bee , на проверку попадают только от живых людей, спам ботных нет.

Еще добавлю. Что я пробовал и экспериментировал по разному со всеми этими плагинами. И скажу уверенно: можете сносить Akismet + Antispam Bee и им подобные, плагина Captcha для защиты от спама (плюс выше упомянутая настройка) — достаточно! (И не грузит хостинг).

Недостатки Captcha

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

  • Не пропускает некоторые почтовики . Так у меня одно время настойчиво не хотел пропускать адреса эл. почты с сервиса i.ua (недавно с Яндекс почты). Но со временем, после обновления — все было хорошо.
  • Часто визуально не гармонирует с шаблоном, с полем комментария. «Лечиться», но правит шаблон (особенно, если он часто любит обновляться) — надоедает.

Настройки Captcha

Итак, скачали и установили, активировали …

В меню админ част ВП появится:

Пройдем во вкладку с одноименным названием

Так вот, все на русском и понятном, кто этот самый русский знает. Я убираю только галочку с (*), не люблю умножать. Все остальное — оставляю, как есть.

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