Прикручиваем reCAPTCHA к комментариям в WordPress

Сейчас проходит бета-тестирование 2-й версии reCaptcha от Google. Она называется «Invisible reCAPTCHA» — вроде как невидимая кепча. Но вы уже можете её установить на свой сайт, чем мы и займемся в этой статье.

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

Вот пример:

Пользуясь случаем, я решил заменить уже попахивающие нафталином :) антиспам меры на этот новый тест от Гугл. Т.е. будем внедрять технологии гугла на сайт под управлением WP.

Регистрация ключей для reСaptcha

Это первый этап. Нужно получить ключ для общения с API кепчи. В принципе, вы можете подцепить к одному ключу — разные домены (сайты), но по каждому из ключей ведется отдельная статистика. Если эта статистика вам интересна, то я думаю вы не будете «валить всё в кучу».

https://www.google.com/recaptcha/admin

В результате регистрации мы получим пару ключей — открытый и закрытый (секретный).

Добавляем код в шаблон комментариев

Получив ключи, приступим к изменению клиентской части. Базовые примеры можно посмотреть по ссылкам, которые даёт гугл при регистрации : ими я и руководствовался. Так как мы решили править форму комментариев, то потребуется внести правки в шаблон темы — comments.php.

Сразу после формы вставим необходимые скрипты:

Как видите, шаблон не пострадал — нужно лишь добавить скрипты.

Добавляем обработку на стороне сервера

Теперь нужно проверить кепчу на сервере, пользуясь API Google, и проанализировать результат этой проверки (например, послать спамеров куда подальше :) ).

Хуки обычно добавляют в файл темы functions.php.

Зацепимся к preprocess_comment, т.е. комментарий ещё не сохранен в базу. Нужно будет выполнить запрос к API Captcha, получить ответ и в соответствии с результатом разрешить/запретить сохранение комментария.

Бóльшая часть кода, как видим, связана с обслуживанием CURL. Если кепча в порядке, то $result->success == true. Дальше действуем по ситуации :).

Написать комментарий

Мало букафф? Читайте есчо !

Удаление бот-пользователей с сайта на Drupal

Сентябрь 22, 2015 г.

Несколько лет назад, когда решил попробовать 7ю версию drupal, я создал сайт wbserv.ru. Тогда только начали предлагать разные облачные услуги, это показалось ...

Читать

Спаммеры на острие атаки.

Ноябрь 27, 2007 г.

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

Читать

 

Комментарии к «Прикручиваем reCAPTCHA к комментариям в WordPress»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий:

Много комментариев в “Прикручиваем reCAPTCHA к комментариям в WordPress”

  1. Василий:

    А если прикрутить эту фичу, то в правом нижнем углу будет тоже светиться плавающая кнопка? Ока куда больше портит общий вид т.к. отображается всегда

    • Это резонно, но никто вам не мешает добавить стили, вроде:

      .grecaptcha-badge {
      display: none;
      }

      А в сравнении со стандартной кепчей, которая болтается в форме, это меньшая плата.

  2. Валерий:

    Доброго времени суток.

    Возможно вас заинтересует идея борьбы со спамом и вы опубликуете новую статью с кодом, реализующим сие.
    Спамерские сообщения в 98% случаев содержат ссылку, начинающуюся на (http или https). Было бы прекрасно при наличии этих «стоп слов» в отправляемом комментарии выводить страницу, на которой необходимо подтверждение посредством установки галки Рекапча, дабы сообщение было отправлено далее (на модерацию, публикацию). А в остальных случаях (в отсутствии стоп слов) комментарий отправлялся как и обычно.
    А то хоть и стоит Акисмет, но папка со спамом наполняется всё равно. Отключить не могу из-за того, что туда хоть и редко, но попадают сообщения и от реальных пользователей. Вот и приходится просматривать весь этот мусор. А с описанным способом проблема будет решена вообще полностью. И при этом никаких дополнительных препятствий не создастся для 90% комментаторов, а оставшиеся 10% (которые отправляют коммент со ссылкой) поставят галочку на странице-заглушке с капчей, благо коммент то уже написан.
    Думаю, что не стоит говорить, что комментаторы бывают ленивые, и видя капчу под формой комментов, уже могут отказаться от идеи написать комментарий.

  3. Antey:

    Уже вышла Капча Версия 3. О ней напишите? В вашем кода непонятно куда именно вводить текст от гугла? div class=»g-recaptcha» data-sitekey=»…

    И почему вы не написали как добавляли код в header.php

    Сколько статей блогеров читаю, часто пишут не полностью, а только часть того, что нужно сделать. Блогер просто забывает об этом написать. Надо полностью писать, а не частично. В инете много неопытных пользователей — не все знают то, что знаете вы. Я вот, например, хорошо знаю html и css, но php для меня вообще темный лес. И в добалении к этой статье капча почему-то не стоит. Почему?

    • Тот код, которым я поделился, до сих пор работает на сайте, но если будет задача с установкой новой кепчи, то обязательно напишу :)

  4. Максим:

    Проверка работы капчи — если коммент появится, то капча не сработала.

  5. Иван:

    Подскажите — ввод ключей, должен выглядеть — так ‘—== ваш Секретный Ключ ==—‘,
    или достаточно одинарных кавычек?

    • Ключ не содержит каких либо кавычек. Кавычки в данном случае служат маркером границ строковой константы в синтаксисе PHP.