Вы должны проверить recaptcha. No CAPTCHA reCAPTCHA русская версия

25.04.2019
  • Опубликовано в: Статьи
  • Сообщение: Оставить комментарий
  • Каждый владелец веб-ресурса сталкивается с такой проблемой как спам и бороться с этим можно с помощью CAPTCHA, который используется для того, чтобы отличить машину от человека методом определения цифр на картинке, отдельных фрагментов на изображении и другое. С это задачей легкостью справится даже ребенок, она достаточно сложная для машины. В сегодняшней статье мы рассмотрим, как установить и настроить ReCaptcha v2.0, более новую и улучшенную версию, с усовершенствованным дизайном и интерфейсом. После обновления программы, значительно упростился процесс серверной проверки.

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

    В предложенную форму вводим наименование сайта, владельца (почтовый ящик) и домен. Без использования «http://» и «www» и нажимаем кнопку «Регистрация», после чего получаем 2 ключа, один из них секретный, далее приступаем к установке CAPTCHA на сайте.


    Для того чтобы установить CAPTCHA необходимо ввести CAPTCHA в предложенную форму следуя достаточно понятной инструкции Google. В коде HTML необходимо использовать первый ключ, API можете подключить в любом месте, можно сразу после формы, не обязательно должно быть в HEAD

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

    //Получаем пост от recaptcha $recaptcha = $_POST["g-recaptcha-response"]; //Сразу проверяем, что он не пустой if(!empty($recaptcha)) { //Получаем HTTP от recaptcha $recaptcha = $_REQUEST["g-recaptcha-response"]; //Сюда пишем СЕКРЕТНЫЙ КЛЮЧ, который нам присвоил гугл $secret = "ВАШ_СЕКРЕТНЫЙ_КЛЮЧ"; //Формируем utl адрес для запроса на сервер гугла $url = "https://www.google.com/recaptcha/api/siteverify?secret=".$secret ."&response=".$recaptcha."&remoteip=".$_SERVER["REMOTE_ADDR"]; //Инициализация и настройка запроса $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_TIMEOUT, 10); curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16"); //Выполняем запрос и получается ответ от сервера гугл $curlData = curl_exec($curl); curl_close($curl); //Ответ приходит в виде json строки, декодируем ее $curlData = json_decode($curlData, true); //Смотрим на результат if($curlData["success"]) { //Сюда попадем если капча пройдена, дальше выполняем обычные //действия(добавляем коммент или отправляем письмо) с формой } else { //Капча не пройдена, сообщаем пользователю, все закрываем стираем и так далее } } else { //Капча не введена, сообщаем пользователю, все закрываем стираем и так далее }

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

    От автора: создавая сайты или различные веб-приложения, на страницах которых в публичном доступе присутствует форма отправки некоторых данных, всегда необходимо заботиться о защите от нежелательных сообщений, то есть спама. В данный момент есть достаточно много всевозможных способов блокирования спам сообщений, но самый простой и надежный – это, конечно же, каптча, которая известна практически всем пользователям интернета. При этом, каптчи бывают различных видов графические, текстовые, математические, вопрос-ответ и т.д. Но в уроке Новая reCaptcha от Google мы поговорим о каптче от сервиса Google, под названием reCaptcha, которая реализует достаточно хороший барьер от спам сообщений на Вашем сайте. К тому же недавно вышла новая версия данной каптчи, поэтому давайте посмотрим, как с ней работать.

    Установка каптчи reCaptcha

    Итак, давайте перейдем на официальный сайт каптчи reCaptcha, http://google.com/recaptcha . При, этом хотел бы заметить, что Вам потребуется учетная запись сервиса Google, поэтому зарегистрируйтесь, если у Вас нет учетной записи и выполните авторизацию.

    При этом заполняем следующие поля:

    Название – в данном поле прописываем название сайта.

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

    Владельцы – в данном поле перечисляем почтовые ящики владельцев каптчи (по одному в строке).

    Затем для завершения регистрации кликаем по кнопке Регистрация. После этого сервис Google сгенерирует два ключа, которые необходимы для работы каптчи:

    Публичный ключ – который необходим для отображения блока каптчи.

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

    Для отображения каптчи, необходимо подключить библиотеку reCapthca на странице где она должна быть отображена:

    Затем в месте, где должна отображаться каптча, добавляем следующий блок:

    < div class = "g-recaptcha" data - sitekey = "6LfyBhATAAAAAOoLy4thSKZLkmcosy_mkjnpqxkG" > < / div >

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

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

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

    Первым делом давайте посмотрим, какие данные мы получим в скрипте обработчике после успешной активации чекбокса каптчи. Для этого, в скрипте обработчике формы, распечатаем на экран данные суперглобального массива POST.

    print_r($_POST);

    print_r ($ _POST ) ;

    При этом на экране мы увидим следующее.

    То есть в суперглобальном массиве POST в ячейке g-recaptcha-response, содержится код, который возвращает сервис Google после активации чекбокса каптчи, если же чекбокс не активирован то данная ячейка будет пуста. При этом код представляет собой определенную последовательность символов, которую нам ни как не прочитать. Поэтому далее необходимо отправить POST запрос по следующему адресу: https://www.google.com/recaptcha/api/siteverify

    И отправить следующие параметры:

    secret — секретный ключ, который был сгенерирован при регистрации пользователя;

    response — код, который был получен при активации чекбокса каптчи;

    remoteip – IP адрес, с которого отправляется форма.

    Для отправки запроса, по указанному запросу используем curl – соединение:

    Похожие статьи