Не так давно мне пришлось бороться с массовой регистрацией ботов на сайте. Вроде и не страшно, была включена необходимость подтверждения своего аккаунта, но необходимость каждодневного удаления нескольких десятков неподтвержденных аккаунтов стала со временем напрягать.
Были испробованы различные методы защиты, устанавливались капчи, форма регистрации переносилась на отдельную страницу, но ничего не помогало. Было ясно, что если за сайт взялся Хрумер, то остановить его сможет только алгоритм проверки на js. Решил обратить внимание на ReCaptcha от Google как готовое решение.
Найденный плагин из репозитория WP не сильно помог - после всех настроек так и не вывел в форме регистрации долгожданную капчу, решил разобраться и произвести интеграцию вручную, тем более, что необходимость получения данных для вывода Google ReCaptcha и в первом и во втором обязательна.
Итак, первое, что потребовалось сделать - зарегистрировать свой сайт по ссылке https://www.google.com/recaptcha/admin
Пройдя всю несложную процедуру регистрации домена, заполнив предлагаемую форму
мы получаем два ключа - публичный и секретный
и скрипт
<script src='https://www.google.com/recaptcha/api.js'></script>
который необходимо разместить в пределах тега head сайта.
После того, как предлагаемый скрипт был размещен в коде сайта, переходим к php-интеграции на стороне сервера.
Размещаем в файле functions.php используемой темы или в каком то, более удобном для вас файле:
add_action('register_form','rcl_add_google_captcha_register_form'); function rcl_add_google_captcha_register_form(){ echo '<div class="g-recaptcha" data-sitekey="recaptcha_public_key"></div>'; } add_filter('registration_errors','rcl_chek_google_captcha_form',10); function rcl_chek_google_captcha_form($errors){ $recaptcha_response = sanitize_text_field($_POST["g-recaptcha-response"]); $recaptcha_secret = 'recaptcha_secret_key'; $response = wp_remote_get("https://www.google.com/recaptcha/api/siteverify?secret=".$recaptcha_secret."&response=".$recaptcha_response); $response = json_decode($response["body"], true); if (isset($response['error-codes']) && $response['error-codes']) { $errors = new WP_Error(); $errors->add( 'rcl_register_google_captcha', __('Проверка Google reCAPTCHA не пройдена!') ); } return $errors; }
В данном коде заменяем значения recaptcha_public_key и recaptcha_secret_key на полученные ранее первый и второй ключи соответственно.
Немного подправляем стилями вывод блока ReCaptcha в форме регистрации:
.form-block-rcl .g-recaptcha{ margin-bottom: 30px; } .form-block-rcl .g-recaptcha > div{ box-sizing: border-box; max-width: 100%; width: 294px !important; } .form-block-rcl .g-recaptcha iframe{ width: 100%; }
На этом процедура интеграции Google ReCaptcha с формой регистрации WP-Recall закончена, регистрация должна предлагать к заполнению подобную форму:
Мой опыт использования данной интеграции однозначно можно назвать положительным, регистрации ботов прекратились, а проблем с регистрацией у обычных пользователей при этом не возникает.
Рекомендую данное решение всем кто устал бороться с бесконечными левыми регистрациями ботов.
Мне кажется это вполне можно включить в базовую версию плагина. Галочку "Включить капчу" и если она есть то показать поля для ввода ключей. т.к. функция очень полезная и лишней точно не будет )
Полностью согласен с Preci, считаю даже это необходимостью.
Не хотелось бы привязывать плагин к какому то конкретному решению. Если кто то оформит это в дополнение, то я против не буду.
Спасибо большое за статью и решение в ней! А то меня тоже уже одолели эти боты. Пошел по пути, описанному в одной из статей, и создал обязательный чекбокс. Частично это помогло, но регистрации продолжают идти.
Соглашусь с коллегами, что это решение можно внедрить в базовый функционал.
Плюс этого решения еще вижу в том, что данная капча от гугл, поэтому можно предположить, что ее использование (в связке с https) может повысить траст сайта в "глазах" поисковиков. Конечно, это всего лишь предположение, но кто поймет эти поисковые алгоритмы)))
Соглашусь с остальными в базовом функционале она точно не была бы лишней.
Я выход нашел с помощью плагина wp-recaptcha как ни странно он легко вписался в форму регистрации recall.
я подозревал, что есть решение, которое работает, но видимо самому написать быстрее чем искать) Тогда данную статью можно рассматривать как инструкцию по интеграции без плагина.
Похожий плагин (No CAPTCHA reCAPTCHA) упоминался тут
У меня этот плагин не подружился с реколл. Капча на wp-login и в форме комментариев появилась, а в формах рекгистрации/логина реколл - нет.
У меня работает с реколл регистрацией https://yadi.sk/i/5FILsauW3Gq3wL
Вопрос чисто в образовательных целях появился.
А что с этим не так или почему ее не использовать Google ReCAPTCHA Invisible?
ReCAPTCHA Invisible появилась достаточно недавно, у меня с ней опыта работы нет, потому ее и не описывал.
ок, понял, я пожалуй попробую на одном сайтике посещаемом не плохо и отпишусь, если будет что писать.
Она же в бета тестировании идет эта невидимая капча.- хотел это написать потому как первым в выдаче шло это https://www.google.com/recaptcha/intro/comingsoon/invisible.htmlВот так и сам гугл ранжирует свои старые промостраницы и не ставит редирект. Бревна ему в огород...
Я тут нашел вариант (короткий по времени) как v2 recaptcha обойти, надо глянуть - невидимая имеет такой же баг.
Поставил, сейчас в личку скину.
ReCAPTCHA Invisible в итоге поставил не на самый посещаемый, но облюбленный спамерами. В итоге за ночь ни одной регистрации левой, обычно минимум 2 и с утра чистка. Пока отключил, так как попробовал с оперы зайти через Wp-Recall всплывающую форму и один раз нормально, второй пришлось два раза тыкнуть. Разберусь как время будет и включу на постоянную. Может совпадение, но пока так.
За последний месяц, меня тоже задолбили боты. Ставил плагины, но и с ним есть свои минусы. Лично для меня это решение более удобное. Спасибо!
реально ли ее приделать к форме публикации?
Все реально если у вас есть знания. А если нет - задания публикуются здесь https://codeseller.ru/publikaciya-zadaniya/
Всем доброго здоровья. Подскажите пожалуйста: скрипт, который необходимо разместить в пределах тега head сайта - в каком файле размещать?
Привет.
Два варианта - напрямую его засунуть в header файл шаблона
Второй: использовать wp_enqueue_script
Спасибо - всё работает, даже стили подправлять не пришлось. Воспользовался 1-м способом (на 2-й у меня пока ума не хватает), но при обновлении темы этот скрипт по моему "свозанёт" от туда и придётся каждый раз засовывать его по новой (хотя это не трудно)...
- Делайте дочернюю тему и файл темы хедера переносите в дочернюю - тогда не слетит.
Или второй способ используйте (было бы желание) + файл функций от дополнения Alpha fixator - тогда и файл функций не затрется при обновлении основной темы. Но можно файл функций в дочерней теме использовать - тогда тоже не затрется.
Вот - уже три варианта выхода из ситуации с обновлениями
У меня уже установлена "hueman-child" дочерняя - я уже сам хотел туда закинуть, но подумал - WordPress будет использовать этот новый header.php вместо версии из родительской темы, а если автор темы вдруг надумает в header тоже какие то изменения внести - тогда, придется как то мониторить на обновление этого файла тоже. В общем показалось: проверять каждый раз файл на изменения или добавлять каждый раз, одно и тоже - как то так. или может я просто загоняюсь.
День добрый!
Посоветуйте, пожалуйста, как прицепить recaptcha к формам логина и восстановления пароля? Как установить несколько штук на одной странице, я разобрался, и они все втроем отображаются, и галка ставится. Но вот в форме регистрации капча учитывается при проверке, а в двух других - нет. Я попробовал, конечно, добавить фильтр 'login_errors' и повесить на него тот же обработчик, что для регистрации. Но результат, увы, тот же - проверка капчи не осуществляется. Как исправить?
Здравствуйте.
Подобные вопросы не решают в комментариях. Есть форум https://codeseller.ru/forum/faq/ создаем новую тему там, показываем что и как делаем и что не выходит.
Спасибо за статью!
Классно! Видел и не помню где. Если бы не коммент предыдущий, опять бы в незнании спать лёг со старой капчей. Несколько плагинов установлено с уже имеющейся интергацией Google ReCaptcha (просто нужно ключи ввести). Я как-то отказался от плагина Google ReCaptcha, потому что он наверное конфликтовал с интегрированными плагинами или я не знаю что. Картинки по пол часа вводить приходилось, хотя и правильно всё вводилось и выбиралось. Новенькие посетители сайта разворачивались 100% и тикали с сайта при такой регистрации. Тут попробовал (с этим кодом) всё вроде работает.
А вот несколько недель назад (уже месяц как)была прям атака какая-то по регистрации. Я писал и на веб ру и на американ европа и всё бестолку. Несколько скринов осталось.
Регистрируются несколько аккаунтов с почтой https://yadi.sk/i/RgHdPq6k3ReKSV
Я перехожу на домен почты https://yadi.sk/i/-j-rCPKc3ReKgW
Я смотрю откуда домен https://yadi.sk/i/DtFh70xk3ReKjP
Пишу им и получаю ответ https://yadi.sk/i/7m2eHY_73ReLDd
Шерсти у меня тода не осталось на пятой точке.
Позже мне написали или позвонили (не нашёл переписку, может вконтакте написали так как я им в группу писал изначально, потому что на сайте контакты спрятаны как специально) но и там нет переписки. В общем как-то ответили, а как не помню. Они ответили, что домен и ip их, а сам гадила на американ сервере и ничего они сделать не моут. Попросили им написать (в Амеруку). Группа>> на email ре ру>> с рег ру попросили отписаться на америкосов. В футбик решили они поиграть.
Пока улеглось и сайт заблокировали этот, но понятное дело это не последний хмырь на белом свете. Так ладно бы 1-2 ну 3 регистрации на один и тот же сайт. Нет. У него как прорвало. Под 50 наверное если больше.
Спасибо за коды!
Задействована ли капча при логине/регистрации через соц кнопки? У меня установлен плагин No Captcha ReCaptcha, но капча работает только на обычную регистрацию через заполнение полей.
Да, соц кнопки через uLogin
Тут описано с какими капчами была замечена работа формы реколл https://codeseller.ru/post-group/vsyo-o-forme-vxoda-i-registracii-wp-recall/ - но соцкнопки всегда идут особняком и не участвуют с капчами
Ваш вопрос не касается этой статьи - стоит подобные вопросы задавать на форуме поддержки плагина.
Из этой статьи и взял плагин капчи No CAPTCHA reCAPTCHA.
Понял, спасибо.
А вот здесь не совсем понял. На мой взгляд, вопрос как раз по теме статьи - о капче. На скриншоте увидел соц кнопки, потому и спросил именно про данный метод использования капчи.
Вы про какой плагин говорите, чтобы на форум поддержки обратиться?
В статье говорится о программировании. Никаких плагинов - только интеграция гуглокапчи.
На форуме много разделов - выбирайте и задавайте вопросы там
Мой первый вопрос как раз и касался метода, описанного в данной статье.
Ответ получил, спасибо.
Если нажать на галочку каптчи и просто зарегаться. то пишет: ОШИБКА: Некорректное имя пользователя или пароль!
Как это можно исправить, чтобы он сказал: Проверка Google reCAPTCHA не пройдена! ??
Все верно пишет - галка то поставлена
Блокировка гугла роскомнадзором нарушила работу Google reCAPTCHA - нет её больше, в форме регистрации (и сайт долго стал грузиться и этот в том числе - у меня одного?).
Подобные темы давайте решать не под технической статьей - а на форуме
Со стилями приведенными в статье, капчу обрезает справа - выглядит безобразно. Я делал так:
.form-block-rcl .g-recaptcha {
transform:scale(0.95);
transform-origin:0 0;
}
Подскажите пожалуйста, а ваш код надо отдельно вставлять или его надо вписать в тот, что указан в статье?
Пробовал по-разному, но все равно обрезается справа (((
Лян, не имеет значения, вставляйте в файл стилей дочерней темы или используйте Alpha fixator
Попробуйте дописать -webkit-
.g-recaptcha {
transform:scale(0.89);
transform-origin:0 0;
-webkit-transform:scale(0.89);
-webkit-transform-origin:0 0;
}
Возможно, в вашем случае, требуется дописать !important; или предшествующий класс...
Всем привет. А есть ли какие-нибудь обновления по данному вопросу? Там уже v3 капча вышла..
Обратите внимание в сторону плагина "WPBruiser". Он решит проблему со спамом и с брут-форсом.
Доброго дня! А в каком именно месте делаем:
"Немного подправляем стилями вывод блока ReCaptcha в форме регистрации:
.form-block-rcl .g-recaptcha{
margin-bottom: 30px;
}
.form-block-rcl .g-recaptcha > div{
box-sizing: border-box;
max-width: 100%;
width: 294px !important;
}
.form-block-rcl .g-recaptcha iframe{
width: 100%;
}
"
Не нашел в настройках поля для ввода своих Css ((((
Здравствуйте.
"Куда мне вставить этот код и стили" https://codeseller.ru/post-group/kuda-mne-vstavit-etot-kod-i-stili/
p.s. подобные вопросы решаем через форум поддержки
Работает сто процентов No CAPTCHA reCAPTCHA, все остальное не завелось, версия 2 для ключей гугла.
На данный момент у гугла у же есть reCAPTCHA ver. 3, подскажите как ее подключить для защиты формы регистрации wp-recall. Спасибо!
Привет. Подключил V3? Подскажите как, если да!
Спасибо за пост. Заметил, что при регистрации в мобильном приложении Яндекс на Андроид (версия 22.97 от 19 окт.2022 сборка 220907013) не сразу устанавливается галочка в чекбокс "Я не робот" 🙂