Google представила новую версию системы защиты веб-сайтов от ботов под названием reCAPTCHA 3. Этот вариант системы не требует от пользователя совершать какие-либо действия, чтобы подтвердить, что он человек, а не робот. Напомним, прежние версии reCAPTCHA просят пользователя распознать картинки — например, указать все изображения из предложенного набора, на которых присутствуют дорожные знаки, или торты, или котики.
Recaptcha google
px" />
Вместо этого reCAPTCHA 3 анализирует поведение пользователя в интернете за последние несколько дней, обращая внимание на особенности движения курсора мышки или ввода текста. На основании этих данных система оценивает естественность поведение пользователя по шкале от 1 до 0 баллов. 1 балл получают люди, 0 баллов — боты. Авторы проекта заявляют, что точность определения равняется 99,98%. При этом алгоритм никак не отвлекает пользователя от работы в интернете.
В настоящий момент reCAPTCHA 3 находится на стадии бета-тестирования. Познакомиться с системой и применить ее к своему сайту можно здесь.
Что такое reCAPTCHA
reCAPTCHA была создана на основе похожей системы под названием CAPTCHA, что расшифровывается как Completely Automated Public Turing test to tell Computers and Humans Apart — «полностью автоматизированный публичный тест Тьюринга для различения компьютеров и людей». CAPTCHA предлагает пользователю распознать текст, в деформированном виде представленный на картинке.
CAPTCHA начала применяться в 1997 г. одновременно двумя командами разработчиков — в поисковом движке AltaVista, чтобы воспрепятствовать добавлению URL-адресов ботами, и в фаерволе компании Sanctum. В 2007 г. сотрудниками Университета Карнеги — Меллона была создана reCAPTCHA, также ориентированная на распознавание различных объектов на изображениях, и приобретенная Google в сентябре 2009 г.
os-chrome.ru
Журнал изменений
V1.42 — 26.02.2019
- PRO : The compatibility with Divi Builder has been added.
- Update : All functionality was updated for WordPress 5.1.
V1.41 — 13.02.2019
- PRO : The compatibility with Ninja Forms has been added.
- Update : The user interface has been updated.
- Bugfix : The code refactoring was performed.
V1.40 — 18.01.2019
- Update : All functionality was updated for WordPress 5.0.3.
- Update : The enqueueing of styles and scripts has been improved.
V1.39 — 20.12.2018
- Update : All functionality was updated for WordPress 5.0.1.
V1.38 — 26.11.2018
- NEW : Google Captcha (reCAPTCHA) Version 3 has been added.
V1.37 — 07.08.2018
- NEW : The compatibility with Testimonials by BestWebSoft has been added.
- Обновлено: чешский языковой файл обновлен.
- PRO : The bug related to WooCommerce Checkout form has been fixed.
V1.36 — 19.03.2018
- PRO версия: устранена ошибка, связанная с регистрационной формой BuddyPress.
V1.35 — 08.02.2018
- Обновлено: чешский языковой файл обновлен.
- Исправлено: исправлены стили Google Captcha.
- Исправлено: исправлена потенциальная уязвимость брутфорс.
V1.34 — 06.02.2018
- Добавлено: добавлена совместимость с опцией Wordfence «Немедленно заблокировать IP-адреса пользователей, которые пытаются войти в систему под этими именами».
- Обновлено: оптимизирован функционал вывода в формах reCAPTCHA.
- Обновлено: улучшена совместимость с плагином Limit Attempts by BestWebSoft.
V1.33 — 15.11.2017
- Исправлено: удалена проверка ненужной reCAPTHCA.
- Обновлено: улучшена совместимость с плагинами Captcha by BestWebSoft и Contact Form by BestWebSoft.
V1.32 — 13.10.2017
- Добавлено: добавлена совместимость с плагином Limit Attempts by BestWebSoft.
- Добавлено: добавлена возможность скрывать Google Captcha для зарегистрированных пользователей.
- Обновлено: возможность проверять Google Captcha с помощью AJAX была удалена.
- Обновлено: добавлена возможность отображать и проверять Google Captcha в сторонних формах с использованием фильтров.
- Обновлено: добавлена возможность отключать вызов функции по окончанию загрузки скрипта Google Captcha.
- PRO версия: добавлена совместимость с формами плагинов bbPress, Fast Secure Contact Form, Jetpack, Forums — wpForo.
V1.31 — 21.08.2017
- Обновлено: обновлена страница настроек плагина.
V1.30 — 18.05.2017
- Обновлено: испанский языковой файл обновлен.
V1.29 — 27.04.2017
- Добавлено: добавлена невидимая версия reCAPTCHA.
- Обновлено: чешский языковой файл обновлен.
V1.28 — 14.04.2017
- Исправлено: уязвимость межсайтового скриптинга (XSS) была устранена.
V1.27 — 26.10.2016
- Добавлено: возможность скрывать Google Captcha (reCAPTCHA) для IP-адресов из белого списка и устанавливать уведомления белого списка.
- PRO версия: добавлена совместимость с плагином WooCommerce.
- PRO версия: обновлен список языков reCAPTCHA.
V1.26 — 15.08.2016
- Обновлено: изменен приоритет хука для отображения капчи в форме регистрации.
- Обновлено: совместимость с плагином JetPack.
V1.25 — 15.07.2016
- Обновлено: раздел плагинов BWS обновлен.
V1.24 — 27.06.2016
- Обновлено: обновлен функционал для использования Captcha с плагином Contact Form Multi.
- Обновлено: раздел плагинов BWS обновлен.
V1.23 — 19.04.2016
- Добавлено: возможность проверить введенный ключ сайта и секретный ключ.
- Добавлено: возможность добавлять пользовательские стили.
V1.22 — 25.02.2016
- Добавлено: чешский языковой файл был добавлен в плагин.
- Обновлено: добавление функционала скриптов плагина было изменено так, что они будут добавлены только на страницах отображения капчи.
- Исправлено: устранена ошибка с отображением нескольких блоков reCAPTCHA на одной странице в разных формах.
- Исправлено: устранена ошибка с определением функции JS на().
V1.21 — 10.12.2015
- Добавлено: добавлена кнопка для вставки шорткода Google Captcha в контент.
- Добавлено: фарси/персидский языковой файл был добавлен в плагин.
- Добавлено: французский языковой файл был добавлен в плагин.
V1.20 — 02.10.2015
- Обновлено: textdomain был изменен.
V1.19 — 28.08.2015
- Исправлено: исправлена ошибка в работе Google Captcha (reCAPTCHA) версии 2 в PHP версии ниже 5.3.
V1.18 — 26.08.2015
- Добавлено: возможность восстанавливать стандартные настройки.
- Обновлено: раздел плагинов BWS.
- Обновлено: весь функционал плагина обновлен под версию WordPress 4.3.
V1.17 — 29.06.2015
- Исправлено: устранена ошибка при проверке капчи в пользовательской форме входа, регистрации, восстановления пароля.
V1.16 — 18.05.2015
- Исправлено: устранена ошибка при проверке капчи при удалении ‘recaptcha_widget_div’.
- Исправлено: устранена ошибка, связанная с использованием устаревших методов jQuery (благодаря Junio Vitorino, github.com/juniovitorino).
- Добавлено: арабский языковой файл был добавлен в плагин.
- Добавлено: немецкий языковой файл был добавлен в плагин.
- Добавлено: языковой файл хинди был добавлен в плагин.
- Обновлено: весь функционал плагина обновлен под версию WordPress 4.2.2.
V1.15 — 09.04.2015
- Исправлено: устранена ошибка при проверки капчи для пользователей из списка исключений.
V1.14 — 07.04.2015
- Исправлено: исправлена работа капчи с формой комментариев при неактивном JavaScript.
- Исправлено: исправлена проверка reCaptcha v2 в PHP версии 5.6 и выше.
- Добавлено: итальянский языковой файл был добавлен в плагин.
V1.13 — 13.02.2015
- Исправлено: исправлена уязвимость при входе в панель администратора.
- Добавлено: греческий языковой файл был добавлен в плагин.
V1.12 — 20.01.2015
- Добавлено: болгарский языковой файл был добавлен в плагин.
- Обновлено: добавлена проверка опции «allow_url_fopen» в настройках PHP.
- Обновлено: добавлен стиль для форм, которые используются в капчи v2.
V1.11 — 30.12.2014
- Обновлено: добавлена новая версия Google Captcha (reCAPTCHA).
- Исправлено: исправлена ошибка с отображением Google Captcha (reCAPTCHA) в форме регистрации на мультисайте.
- Исправлено: исправлена ошибка с плагином Multilanguage.
- Обновлено: весь функционал плагина обновлен под версию WordPress 4.1.
V1.10 — 26.11.2014
- Обновлено: обновлен URL-адрес и названия ключей для Google Api.
V1.09 — 14.11.2014
- Исправлено: устранена ошибка с совместным отображением плагинов Google reCaptcha and Captcha.
- Исправлено: устранена ошибка с неверными ответами в пользовательских формам.
- Исправлено: устранена ошибка при переадресации входа.
V1.08 — 14.10.2014
- Добавлено: испанский языковой файл был добавлен в плагин.
- Исправлено: устранена ошибка при работе в сети подсайтов.
- Исправлено: устранена ошибка с логином пользователя.
- Исправлено: устранена ошибка с отправкой Contact Form.
V1.07 — 02.09.2014
- Добавлено: китайский (традиционный) языковой файл был добавлен в плагин.
V1.06 — 07.08.2014
- Исправлено: брешь в безопасности была устранена.
- Исправлено: отображение персонального ключа во фротенде было удалено.
V1.05 — 21.07.2014
- Исправлено: исправлена ошибка с подтверждением формы Google Captcha (reCAPTCHA).
V1.04 — 18.07.2014
- Исправлено: исправлена ошибка с отображением Google Captcha (reCAPTCHA) с плагином Contact Form Pro (by BestWebSoft).
- Добавлено: бразильский/португальский языковой файл был добавлен в плагин.
V1.03 — 06.06.2014
- Добавлено: польский языковой файл был добавлен в плагин.
- Добавлено: украинский языковой файл был добавлен в плагин.
- Добавлено: автоматическое обновление капчи в случае ввода неправильного значени (благодаря Yaroslav Rogoza, github.com/rogyar).
- Обновлено: весь функционал плагина обновлен под версию WordPress 3.9.1.
- Исправлено: устранена проблема с проверкой капчи для сайтов, использующих протокол https.
V1.02 — 03.04.2014
- Обновлено: скриншоты были обновлены.
- Обновлено: раздел плагинов BWS обновлен.
- Исправлено: выполнена оптимизация плагина.
V1.01 — 05.02.2014
- Исправлено: исправлена ошибка с добавлением формы комментариев в панель администратора.
- Добавлено: на страницу плагина были добавлены ссылки «Настройки», «FAQ» «Поддержка».
- Добавлено: добавлены ссылки на страницы плагинов.
V1.0
- Добавлено: возможность добавлять Google Captcha (reCAPTCHA) в стандартные формы.
ru.wordpress.org
Гугл капча сейчас везде. Плюс ее в том что она заменяет CSRF-токен.
Регистрируем свой домен по ссылке https://www.google.com/recaptcha/admin#list . Получаем ключи. Гугл предоставляет свое мини-апи для запросов на проверку. Скачать его можно тут https://github.com/vaajnur/recaptcha2
Кстати, если не любите ооп и композер, в конце статьи есть способ проверки капчи всего лишь 3мя строчками кода.
Размещаем на страничке HTML-код капчи с секретным ключом.
Подключаем javascript
<script src='https://www.google.com/recaptcha/api.js'></script>
обработка отправленной капчи
require_once __DIR__ . '/vendor/autoload.php'; // Register API keys at https://www.google.com/recaptcha/admin $siteKey = '6LdISD0UAAAAAFUfApJZSRqBRuOcfiVdnT31234234'; $secret = '6LdISD0UAAAAAAkYRxJxMYahh70RCVcUn5675675'; // reCAPTCHA supported 40+ languages listed here: https://developers.google.com/recaptcha/docs/language $lang = 'ru'; if (isset($_POST['g-recaptcha-response'])){ $recaptcha = new ReCaptchaReCaptcha($secret); $resp = $recaptcha->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']); if ($resp->isSuccess()): ?> <h2>Success!</h2> <p>That's it. Everything is working. Go integrate this into your real project.</p> <p><a href="/">Try again</a></p> <?php else: ?> <h2>Something went wrong</h2> <?php endif; }
Сама форма
<form action="" method="post"> <div class="g-recaptcha" data-sitekey="<?php echo $siteKey; ?>"></div> <script type="text/javascript" src="https://www.google.com/recaptcha/api.js?hl=<?php echo $lang; ?>"> </script> <br/> <input type="submit" value="submit" /> </form>
Полный код здесь https://github.com/vaajnur/recaptcha2/blob/master/index.php
И пример http://recaptcha.dev10.ru/
Invisible recaptcha
Для этой капчи тоже нужны бэкенд обработчики. Проверка проходит по переменной g-recaptcha-response, которая попадает в post массив , или тот же token в параметрах колбека.
Регаем невидимую капчу по новой. Класс и атрибуты переносим на кнопку сабмита и навешиваем элементарный обработчик на эту кнопку. Форме присваиваем id. Внизу справа должно появиться мод. окно капчи
<form action="" method="post" id="id_of_form"> <button class="g-recaptcha" data-sitekey="<?php echo $siteKey;?>" data-callback="onSubmit"> Submit </button> var onSubmit = function(token) { grecaptcha.reset() document.getElementById("id_of_form").submit(); } </form>
Для ajax капчи добавляем
grecaptcha.render(el, {sitekey: $(el).data('sitekey')});
Ajax + invisible
Добавляем аттрибуты к кнопке сабмита, обязательно колбек. И в самом колбеке делаем аякс запрос
<button class="g-recaptcha" data-sitekey="6LcNqJIUA222AAIrX1xNU__j3Bk3fdgdfg9kcn34tGuU_" data-callback="onSubmit" >Отправить заявку</button> function onSubmit(token){ // токен нафиг он нужен, все равно приходит в g-recaptcha-response // никаких e.preventDefault(); $.ajax({ type: "POST", url: "/ajax-handler.php", data: $("#form1").serialize(), dataType: "json", success: function(result) { // ресет капчи grecaptcha.reset()
Несколько рекаптч на 1 стр.
Подключаем бибил-ку с параметрами
//www.google.com/recaptcha/api.js?onload=onloadRecaptchaCallback&render=explicit
и далее сам колбек. Селектор должен отличаться от привычного g-recaptcha
function onloadRecaptchaCallback(){ $('.g-recaptcha123').each(function(ind, el){ grecaptcha.render(el, { 'sitekey' : jQuery(el).attr('data-sitekey') }) }) }
где el это DOM element а не jquery object.
Плюс данного вызова в том что можно выбрать любой селектор, например при открытии модалки аяксом
grecaptcha.render($('.mainform .g-recaptcha123').get(0), { siteKey: $('.g-recaptcha123').data('sitekey') });
навесим обработчик конкретной форме mainform, иначе выдаст ошибку
reCAPTCHA has already been rendered in this element
Ошибки при работе с капчей.
Uncaught Error: reCAPTCHA placeholder element must be empty
Тег капчи не должен содержать вложенных тегов.
ReCAPTCHA couldn’t find user-provided function:
Бывает, что колбек существует, но не биндиться. Решение простое — вынести колбек за $(function), или прочие функции. Колбек должен быть виден напрямую.
recaptcha__ru.js:255 Uncaught (in promise) null
Здесь ошибка колбека. Попробуйте вызвать grecaptcha.reset() в колбеке.
Uncaught Error: No reCAPTCHA clients exist.
Указанный выше способ — перегенерите капчу. grecaptcha.reset()
render Missing required parameters: sitekey
скорее всего у вас 1-й параметр ф-ии render(el, {}) не dom элемент.
Error: reCAPTCHA has already been rendered in this element
возникает с динамическим контентом. Вешаем колбек правильно, а также ставим таймаут
$(document).on('click', "input[type='submit']", function(){
setTimeout(function(){
grecaptcha.render($('#form-container .g-recaptcha123').get(0), {
sitekey: $('#form-container .g-recaptcha123').eq(0).data('sitekey')
})
}, 1000)
})
$(document).on('click', "input[type='submit']", function(){
setTimeout(function(){
grecaptcha.render($('#form-container .g-recaptcha123').get(0), {
sitekey: $('#form-container .g-recaptcha123').eq(0).data('sitekey')
})
}, 1000)
})
Uncaught (in promise) null
в моем случае в колбеке был preventDefault() к-й излишен
А также возможны ошибки бэка
OPENSSL file_get_contents(): Failed to enable crypto
file_get_contents() returns “failed to open stream:
что означает надо включить директивы пхп
allow_url_fopen
allow_url_include
Есть и более простая форма проверки recaptcha.
$recaptcha_secret = '6Leao28UAAAfgfgfMR-6OKq9HBRgfsdkyIBdfXnFA7'; $response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$recaptcha_secret."&response=".$_POST['g-recaptcha-response']); $result = json_decode($response, true);
phpjs.ru
Как работает reCAPTCHA?
Пользователь жмет на кнопку «Я не робот», если анализ Google уверен, что вы человек, то все хорошо, иначе появится вторая проверка, например ввод слова или выбор нескольких картинок одной тематики из массива изображений, пример:
или
Так же на этот вопрос есть отличный ответ в виде видео от Google:
Удобно? Тогда приступим к интеграции на сайт.
Добавляем reCAPTCHA на сайт
Добавляем reCAPTCHA API key
Для начала необходимо добавить reCAPTCHA API key, для этого перейдите по ссылке: https://www.google.com/recaptcha/admin, и заполните поля: метка (1), домены (где будет использоваться reCAPTCHA) (2) и жмем на кнопку «Register» (3).
После чего получим данные для добавления reCAPTCHA на сайт:
Добавляем reCAPTCHA в форму
На страницу добавляем js скрипт из поля 3, скрипт можно добавить перед закрывающемся тегом </head>
или </body>
, далее в форму и добавляем блок с капчей из поля 4 (поля из второго скриншота):
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Добавляем reCAPTCHA от Google на сайт</title> </head> <body> <form method="post"> <label for="name">Имя:</label> <input name="name" required><br /> <label for="email">E-mail:</label> <input name="email" type="email" required><br /> <div class="g-recaptcha" data-sitekey="6LeKaREUAAAAALB6Sgjp5XqHq0Kb_aLEn_KORz6u"></div> <input type="submit" value="Отправить" /> </form> <script src='https://www.google.com/recaptcha/api.js'></script> </body> </html>
Где data-sitekey
— значение из поля 1 (второй скриншот).
Верификация reCAPTCHA
После того как добавили блок reCAPTCHA в форму нам будет приходить постом 3 значения: name
, email
и g-recaptcha-response
. Перед обработкой полученных данных необходимо валидировать name
и email
, а также отправить значение g-recaptcha-response
Google для проверки.
Пропустим валидацию name
и email
и перейдем к g-recaptcha-response
. Разработчики Google ReCAPTCHA уже сделали всю работу за нас по верификации капчи, поэтому переходим к проекту ReCAPTCHA на Github и скопируем файл recaptchalib.php: https://github.com/google/recaptcha/blob/1.0.0/php/recaptchalib.php.
Затем положим его в удобное место (я положу в корень) и подключаем перед верификацией капчи:
<?php require_once "recaptchalib.php";
Класс ReCaptchaResponse отправит содержимое g-recaptcha-response
и секретный ключ в Google, затем получит ответ и проверит, был ли он успешен:
<?php require_once "recaptchalib.php"; //секретный ключ $secret = "6LeKaREUAAAAAGgPekvD1djRejSXufWqghauFg7-"; //ответ $response = null; //проверка секретного ключа $reCaptcha = new ReCaptcha($secret); if (!empty($_POST)) { if ($_POST["g-recaptcha-response"]) { $response = $reCaptcha->verifyResponse( $_SERVER["REMOTE_ADDR"], $_POST["g-recaptcha-response"] ); } if ($response != null && $response->success) { echo "Все хорошо."; } else { echo "Вы точно человек?"; } }
Итог
Теперь соберем все вместе:
<?php require_once "recaptchalib.php"; ?> <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Добавляем reCAPTCHA от Google на сайт</title> </head> <body> <?php //секретный ключ $secret = "6LeKaREUAAAAAGgPekvD1djRejSXufWqghauFg7-"; //ответ $response = null; //проверка секретного ключа $reCaptcha = new ReCaptcha($secret); if (!empty($_POST)) { //Валидация $_POST['name'] и $_POST['email'] if ($_POST["g-recaptcha-response"]) { $response = $reCaptcha->verifyResponse( $_SERVER["REMOTE_ADDR"], $_POST["g-recaptcha-response"] ); } if ($response != null && $response->success) { echo "Все хорошо."; } else { echo "Вы точно человек?"; } } ?> <form method="post"> <label for="name">Имя:</label> <input name="name" required><br /> <label for="email">E-mail:</label> <input name="email" type="email" required><br /> <div class="g-recaptcha" data-sitekey="6LeKaREUAAAAALB6Sgjp5XqHq0Kb_aLEn_KORz6u"></div> <input type="submit" value="Отправить" /> </form> <script src='https://www.google.com/recaptcha/api.js'></script> </body> </html>
Внешний вид:
Дополнительно
Тема
Сменить цвет reCAPTCHA можно с помощью атрибута data-theme, который может принимать значение dark и light (по умолчанию):
<div class="g-recaptcha" data-sitekey="6LeKaREUAAAAALB6Sgjp5XqHq0Kb_aLEn_KORz6u" data-theme="dark"></div>
<div class="g-recaptcha" data-sitekey="6LeKaREUAAAAALB6Sgjp5XqHq0Kb_aLEn_KORz6u" data-theme="light"></div>
Язык
По умолчанию язык в reCAPTCHA определяется по языку браузера, но можно указать язык явно, например, украинский:
<script src='https://www.google.com/recaptcha/api.js?hl=uk'></script>
задать русский язык
<script src='https://www.google.com/recaptcha/api.js?hl=ru'></script>
Дополнительные настройки: https://developers.google.com/recaptcha/docs/display#config
кодер.укр
Методы снижения спам-нагрузки и почему именно reCAPTCHA?
Как вы наверное знаете, спам бывает ручной и автоматический. От первого можно защититься только включением обязательной модерации всех входящих сообщений перед их публикацией на блоге — тогда наверняка никакая «редиска» не прорвется.
Но ручной спам, как правило, представляет из себя хиленький ручеек по сравнению с полноводной рекой автоспама. Последний может генериться, например, Хрумером в просто фантастических объемах. Лично меня больше раздражает даже не то, что в сутки приходит несколько сотен спамных комментов в мою адмнинку WordPress, а то, что они бывают чудовищно длинными и устаешь их прокручивать до кнопки «Удалить». В общем, проблема сия реальна и тем более актуальна, чем популярнее будет ваш блог.
С ручным спамом бороться нет смысла (из-за обреченности этой борьбы и из-за его несущественного объема), но вот с автоспамом нужно что-то делать. Тут как бы есть два основных подхода:
- Фильтровать уже добавленные в базу WordPress комменты на предмет спам/неспам и распихивать их по соотвествующим папочкам. К сожалению, плагины, работающие по такому принципу, выдают много брака и просто так очищать папку «Спам» без просмотра ее содержимого не получится, если вы не хотите потерять десятки действительно ценных комментариев отправленных активными читателями вашего блога.
- Прикрутить к форме добавления комментария дополнительную проверку на то, кто именно оставляет это сообщение — живой человек или бот. Задача по выявлению этого различия называется тестом Тьюринга и решается в подавляющем большинстве случаев с помощью так называемой капчи (образовано от CAPTCHA, которое является аббревиатурой от набора умных слов). Основной проблемой этого метода борьбы со спамом является то, что вы напрягаете комментаторов разгадыванием «ребуса» (капчи), что может отбить у него вообще какое-либо желание продолжать пытаться оставить сообщение.
Однако, капчи, как уже говорил, бывают довольно простыми. Гугл сделал серьезный шаг в этом направлении и теперь его новая reCAPTCHA просто образец простоты и изящества для подавляющего большинства пользователей зашедших на ваш сайт (правда, малому числу из них может все же быть предложено ввести символы с картинки, если у алгоритма возникнут сомнения в его человечности).
Вот так реКапча от Гугла будет выглядеть для 99.9% посетителей вашего сайта:
Ну и вот так, в случае возникновения форс-мажора (если алгоритм после проведения десятка тестов на человечность все же засумлевается):
О стойкости этой защиты можно судить по тому, что на сервисах по распознаванию капчи (Ru-капче или Анти-капче) за рекапчку берут в два раза больше денежек. Очень говорящий показатель.
Ну, как бы выбор сделан — надо реализовывать.
Регистрация сайта в reCAPTCHA и установка ее на свой блог
Для начала нужно зайти на официальную страницу reCAPTCHA и добавить там свой сайт, чтобы в обмен на эту любезность получить два длиннющих ключа (один простой, а второй секретный). Естественно, что заходить туда уместно будет из того браузера, где вы авторизованы в Google (входите в свой аккаунт).
Регистрация представляет из себя просто как указание названия и доменного имени вашего сайта, где эту саму капчу вы планируете использовать:
После этого вы попадете в админку сервиса reCAPTCHA для вашего сайта (имеет смысл, наверное, добавить ее в закладки браузера). Со временем там будет отображаться статистика по работе данной капчи, ну, а пока самое важное, что мы отсюда можем почерпнуть — это как раз те самые ключи, без которых «Я не робот» работать не будет:
Чуть ниже приведена инструкция по установке. В области «Интеграция на стороне клиента» все понятно, но простой установки приведенного кода в указанные места не достаточно. Капча отображаться будет, но спам фильтроваться не будет. В области же «Интеграция на стороне сервера» мне вообще ничего не понятно. Туповат я для этого.
Посему было принято решение использовать плагин для интеграции reCAPTCHA в WordPress, благо, что вариантов таких плагинов достаточно много (читайте где брать плагины для Вордпресс). Правда, штуки три из них у меня не заработали (капча в области добавления комментариев не появлялась). После нескольких неудачных попыток пришлось обратиться за решением к умным людям, где и был замечен и в последствии успешно установлен плагин с замысловатым названием (типа масло не маслянное) — No CAPTCHA reCAPTCHA.
ktonanovenkogo.ru
Добавление reCAPTCHA на сайт
1. Перейдите по адресу [urlspan]https://www.google.com/recaptcha/admin#list[/urlspan] на страницу Гугла с инструкцией по установке reCAPTCHA на сайт.
2. Тут, в первой части инструкции, вы получите два ключа – простой и непростой (секретный), они вам скоро понадобятся.
Идем дальше. Если с первой частью по интеграции на стороне клиента все понятно, то интеграция на стороне сервера поставила меня в тупик и заставила остановиться. Спасибо Диме ktonanovenkogo.ru за предложенный выход из ситуации. Для установки reCAPTCHA на сайт предлагается использовать плагин «no captcha recaptcha», специально для этого написанный, и кстати не единственный, но наиболее для нас подходящий.
3. Скачать no captcha recaptcha можно со страницы https://wordpress.org/plugins/no-captcha-recaptcha/.
После установки и активации плагина, в вашей админке появится новая ссылка «No CAPTCHA reCAPTCHA». Перейдите по ней в настройки плагина.
4. Вставьте простой и секретный ключи в соответствующие поля.
5. В этом блоке настроек активацией соответствующих опций можно встроить капчу в форму входа в админ-панель сайта, в форму регистрации и в форму комментирования соответственно.
6. В последнем блоке , если хотите, выберите тему, язык и введите текст, который будет видеть отправивший комментарий посетитель, если забудет доказать свою причастность к человеческому происхождению.
Стоит отметить то, что теперь все спам-комментарии, отсеянные reCAPTCHA, будут автоматически попадать в корзину.
И еще, reCAPTCHA не убережет от ручного спама. Для борьбы с этой напастью рекомендую использовать Akismet. Обе эти защиты прекрасно дополняют друг друга.
Я вас поздравляю с окончательной победой над спамом на своем сайте!
wordpress-book.ru
Всем доброго дня. Как только появилось свободное время я все таки решил написать статью посвященную установке Google reCaptcha.
Получение recaptcha ключей
Для начала работы с нашей гуглокапчей нам необходимо получить 2 специальных ключа.
Первый ключ используется для отображения виджета на вашем сайте.
Второй ключ(секретный) используется для аутентификации виджета капчи на вашем сайте, и серверами google для проверки результата отправленного людьми, или ботами.
Чтобы получить эти ключи у вас должна быть учетная запись гугл. Если таковая есть то переходите по данной ссылке и авторизуйтесь.
После авторизации вы увидите панель reCAPTCHA и форму регистрации вашего сайта.
После заполнения и отправки формы регистрации сайта вы попадете на страницу с ключами и всей необходимой нам информацией.
Установка reCapcha на форму
Для примера я создал простую форму авторизации. Она будет отправлять данные POST запросом на сервер.
Следующим шагом после создания формы необходимо подключить скрипт капчи в секцию head вашего сайта, а также добавить блок с капчей в то место формы где она вам нужна. Весь необходимый код приведён на странице с ключами и всей дополнительной информацией.
В конечном итоге у вас должна получится следующая структура формы:
<script src='https://www.google.com/recaptcha/api.js'></script> <!--Скрипт располагать в блоке head--> <form action="/form.php" method="post"> <input type="text" name="login"> <input type="password" name="password"> <div class="g-recaptcha" data-sitekey="Тут указываете ваш первый ключ"></div> <!--блок кнопки reCapcha--> <button>Отправить</button> </form>
Форма готова. Осталось только вставить свой ключ в атрибут data-sitekey и капча заработает!
Проверка reCapcha на сервере
Следующим этапом будет написание проверки результата отправки формы на сервере.
Первым делом необходимо проверить были ли вообще переданы в POST массив данные от капчи. Если таких данных не поступало то мы просто пропускаем все проверки и просим пройти валидацию.
<?php if (isset($_POST['g-recaptcha-response'])){ //проверяем дальше }else{ exit('Вы не прошли валидацию reCaptcha'); } ?>
Дальше переходим к основной части проверки. Приведу сразу весь код и поясню что за что отвечает.
<?php if (isset($_POST['g-recaptcha-response'])) { $url_to_google_api = "https://www.google.com/recaptcha/api/siteverify"; $secret_key = '6LcdBBYUAAAAAJcHFDLRWfLYwBNomKtKGjHu21tg'; $query = $url_to_google_api . '?secret=' . $secret_key . '&response=' . $_POST['g-recaptcha-response'] . '&remoteip=' . $_SERVER['REMOTE_ADDR']; $data = json_decode(file_get_contents($query)); if ($data->success) { // Продолжаем работать с данными для авторизации из POST массива } else { exit('Извините но похоже вы робот (0_0)/'); } } else { exit('Вы не прошли валидацию reCaptcha'); } ?>
Этого базового функционала достаточно для полноценной работы с google reCaptcha.
Интеграция с WordPress
В случае с WordPress для этой же задачи прекрасно подойдет плагин — Google Captcha (reCAPTCHA) by BestWebSoft. В него встроен обширный функционал для интеграции капчи на разные разделы WordPress сайта.
Его настройка крайне примитивна, все что вам нужно сделать это вставить выданные вам ключи в определенные поля в настройках плагина.
Далее можете просто указать в каких местах сайта вы хотите видеть желаемую гуглокапчу.
Это все что я хотел поведать об установке reCaptcha.
В связи с неплохим интересом к данной статье я решил выпустить с скором времени ещё одну статью посвященную уже работе с последней версией гугл капчи. Подписывайтесь на обновления чтобы не пропустить эту статью.
Всего хорошего!
dmkweb.ru Права на контент защищены.
dmkweb.ru
От автора: создавая сайты или различные веб-приложения, на страницах которых в публичном доступе присутствует форма отправки некоторых данных, всегда необходимо заботиться о защите от нежелательных сообщений, то есть спама. В данный момент есть достаточно много всевозможных способов блокирования спам сообщений, но самый простой и надежный – это, конечно же, каптча, которая известна практически всем пользователям интернета. При этом, каптчи бывают различных видов графические, текстовые, математические, вопрос-ответ и т.д. Но в уроке Новая reCaptcha от Google мы поговорим о каптче от сервиса Google, под названием reCaptcha, которая реализует достаточно хороший барьер от спам сообщений на Вашем сайте. К тому же недавно вышла новая версия данной каптчи, поэтому давайте посмотрим, как с ней работать.
Установка каптчи reCaptcha
Итак, давайте перейдем на официальный сайт каптчи reCaptcha, http://google.com/recaptcha. При, этом хотел бы заметить, что Вам потребуется учетная запись сервиса Google, поэтому зарегистрируйтесь, если у Вас нет учетной записи и выполните авторизацию.
Далее, переходим по ссылке Get reCaptcha и регистрируем каптчу для сайта, на котором она будет использоваться.
При этом заполняем следующие поля:
Затем для завершения регистрации кликаем по кнопке Регистрация. После этого сервис Google сгенерирует два ключа, которые необходимы для работы каптчи:
Для отображения каптчи, необходимо подключить библиотеку reCapthca на странице где она должна быть отображена:
Затем в месте, где должна отображаться каптча, добавляем следующий блок:
При этом в атрибуте data-sitekey блока div должен храниться публичный ключ. После этого переходим в браузер и обновляем тестовую страницу.
Теперь reCaptcha отображается на тестовой странице, но при этом защита от спама еще не завершена, так как данную форму можно отправить и не активируя чекбокс каптчи. А значит, необходимо на стороне сервера ,в скрипте обработчике формы, осуществить проверку, на правильность заполнения каптчи.
Интеграция каптчи на стороне сервера
Первым делом давайте посмотрим, какие данные мы получим в скрипте обработчике после успешной активации чекбокса каптчи. Для этого, в скрипте обработчике формы, распечатаем на экран данные суперглобального массива POST.
При этом на экране мы увидим следующее.
То есть в суперглобальном массиве POST в ячейке g-recaptcha-response, содержится код, который возвращает сервис Google после активации чекбокса каптчи, если же чекбокс не активирован то данная ячейка будет пуста. При этом код представляет собой определенную последовательность символов, которую нам ни как не прочитать. Поэтому далее необходимо отправить POST запрос по следующему адресу: https://www.google.com/recaptcha/api/siteverify
И отправить следующие параметры:
Для отправки запроса, по указанному запросу используем curl – соединение:
Выполнив запрос, сервис Google вернет результат в виде строки формата JSON, в которой содержится объект, в структуре которого содержится свойство success. Если значение данного свойства равно TRUE, значит каптча — активирована верно и сообщение отправил пользователь, а не спам-робот. В противном же случае сообщение отправил спам-робот.
На этом данный урок завершен. Всего Вам доброго и удачного кодирования.
webformyself.com