Боты и всяческие Хрумеры являются конечной точкой эволюции человечества, к сожалению, эта точка вызывает радость у единиц, у остальных же регистрирует праведное негодование, икоту и нервные колики. Блог Zegeberg бомбили и боты, и XRumer, с первыми я справился довольно быстро с помощью скрипта, с Хрумером пришлось бороться только с помощью reCAPTCHA V2. Ниже я расскажу, как интегрировать рекапчу на Joomla 3, в том числе, поведаю, как поставить её на JComments.
Процедура первая – регистрация и ключ
Для начала надо зарегистрировать сайты на https://www.google.com/recaptcha/intro/android.html, для чего переходим на страницу, ищем справа вверху синее окошко «Получить reCAPTCHA» и зеленеем от ожидания.
Ниже в окне «Регистрация сайтов» выбираем reCAPTCHA V2, указываем домены, на которых хотим её использовать и принимаем пользовательское соглашение.
После регистрации вы получаете два ключа – публичный и секретный.
Интеграция reCAPTCHA на joomla
Ключи на руках – счастье в кармане, переходим в админку Joomla. Для начала идём по пути наименьшего сопротивления:
Система – Общие настройки – Настройки сайта
Ищем пункт «CAPTCHA (по умолчанию)» и ставим
CAPTCHA – reCAPTCHA
С версии Joomla 3.8.6 V1 нет, если движок моложе, то выбираем V2 вручную.
Теперь идём в компоненты – плагины, ищем:
CAPTCHA - reCAPTCHA
И включаем его безо всяких настроек и перестроек, указав только два полученных от google ключа.
Теперь на странице контактов при отправке письма будет появляться гугловская капча…. Дело решено? Отнюдь, так как спам на 99% идёт через компонент JComments, которому чихать на системные настройки joomla.
reCAPTCHA V2 в JComments
По умолчанию в JComments стоит буквенная капча, которая ломается Хрумером, как консервная банка с тушёнкой в руках голодного туриста. В настройках компонента нет возможности переключиться на reCAPTCHA. Что делать, как защитить сайт от спама в комментариях и найти в мире красоту и гармонию?
Тут можно писать много умных слов и приводить примеры с кодом, но я этого делать не буду, жалея и без того слабую нервную систему владельца сайта. Скажу лишь, что надо внести правки в два файла:
components\com_jcomments\tpl\default\tpl_form.php
components\com_jcomments\jcomments.ajax.php
Ниже я предлагаю готовые файлы tpl_form.php и jcomments.ajax.php, просто замените старые на новые и на вашей улице тоже перевернётся грузовик с тульскими пряниками. Код замены универсальный, подходит для всей линейки joomla 3 и не зависит от цифр публичного и секретного ключа. Фома-неверующий может сделать бекап, но файлы взяты с этого блога, они рабочие и не нуждаются в корректировке.
Вот архив rar, в котором две изменённых файла JComments.
Ах, Joomla-Joomla, с версии 3.9.5 интеграция не работает, ищу решение, пока его нет. Как временный вариант предлагаю, вместо reCAPTCHA, использовать обычную капчу и запрет на ссылки в комментариях. Спамеров может остановить, по крайней мере, не будет такого азарта. Как запретить спамить ссылками написал тут. Что касается полного решения проблемы, то оно тут в виде компонента Jcomments со встроенной Рекапчей от Гугл. Скачивайте на здоровье.