Как подключить гугл капчу на сайт php
Перейти к содержимому

Как подключить гугл капчу на сайт php

  • автор:

Как установить капчу на сайт

Капчей (captcha) называется автоматизированный тест для различения человека и робота, который используется в качестве защиты от спама на сайтах и в приложениях. За время своего развития этот инструмент претерпевал немало изменений. Если раньше капча представляла собой проверку в виде изображения с искаженными символами, которые требовалось ввести перед отправкой данных на сервер, то сейчас для ее прохождения пользователям даже не нужно предпринимать никаких дополнительных действий. Добавление капчи на веб-сайт поможет вам защититься от ботов. В статье мы расскажем об известных сервисах, позволяющих это сделать, и объясним, как установить капчу на сайт, используя самый популярный из них.

Популярные сервисы для капчи

В сети есть множество сервисов, которые поставляют собственные реализации технологии CAPTCHA. Большая часть сайтов (по некоторым данным, до 98%), использующих капчу, выбирают для этого reCAPTCHA от компании Google. Это обусловлено ее эффективностью и тем фактом, что долгое время сервис оставался лидером в разработке передовых решений для спам-защиты. Сейчас главным конкурентом рекапчи является hCAPTCHA, ориентированная на сохранение конфиденциальности интернет-пользователей. В отличие от Гугл-капчи, она не только успешно блокирует запросы от ботов и отражает спам-атаки через формы, но и более щепетильно относится к данным посетителей: сервис не собирает и не хранит сведения об их поведении и т. п.

Также существует отечественный аналог reCaptcha, разработанный Яндексом: SmartCAPTCHA. В целом, алгоритм тестирования повторяется, но вместо поиска картинок с указанными предметами, как в рекапче, здесь используют задания по распознаванию текста. То, с чего капча начиналась, но в более продвинутой форме.

Поскольку подключение captcha в разных сервисах проходит по плюс-минус одинаковой схеме, мы покажем, как добавить капчу на сайт на примере установки reCaptcha. Это самый распространенный случай ее применения, так что можно обращаться к нему, как к шаблону.

Как добавить reCaptcha на сайт: инструкция

Подключить капчу от Google можно вручную, если сайт самописный, или посредством расширений в системе управления контентом (CMS), если проект построен на ней. Мы разберем оба варианта и подскажем, как ставить разные версии рекапчи (v2 и v3).

Регистрация и получение ключей

Чтобы установить капчу на website, нужно вносить изменения в код — очевидно. Но перед этим нам потребуется получить ключи от Google. Для этого обязательно иметь аккаунт в его экосистеме. Если вы пользуетесь YouTube, Gmail, Google Drive или другим гугл-сервисом, скорее всего, он у вас уже есть. Если нет, завести его нетрудно.

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

В поле «Ярлык» можно вставить любое понятное вам обозначение, оно нужно лишь для опознания веб-сайта в списке. Непосредственно адрес проекта указывается в блоке «Домены» (без www, http/https и пути к странице). Все поддомены будут зарегистрированы автоматически. Также здесь нужно указать email-адрес владельца и проставить галочки в чекбоксах с соглашениями. Мы рекомендуем не отказываться от функции отправки оповещений о проблемах.

Заполнив все поля, нажмите кнопку «Отправить». Откроется страница с вашими ключами. Скопируйте их в отдельный файл, не забыв пометить, какой к чему относится. Теперь приступим к установке.

Руководство по reCaptcha v2

При выборе второй версии рекапчи появится небольшой список. Первый пункт подразумевает внедрение уже знаменитого флажка «Я не робот» в какие-либо формы на сайте (регистрация, обратная связь, комментарии и пр.). При «Невидимом значке» проверка начинается только после нажатия определенной кнопки на странице или если трафик выглядит подозрительно. Третий пункт выбирают, если нужно установить капчу на Android-приложение. Нам подходят лишь первые два варианта.

Итак, чтобы добавить reCaptcha, понадобится интегрировать ее на клиентской и на серверной стороне. Для начала откройте файл с вашим HTML-кодом. Перед закрывающим тегом вставьте строчку:

Если что, требование не обязательное, поскольку скрипт можно подключить в любом месте. Теперь найдите блок с формой, где планируется делать проверку (установить виджет с флажком), и внедрите туда фрагмент такого вида:

Вместо «ВАШ_КЛЮЧ» подставьте значение из первого поля на странице с выданными ключами. Клиентская часть готова.

Чтобы провести интеграцию с сервером, нужно прописать код проверки там, где у вас проверяются данные, присланные с фронта. На PHP это может выглядеть следующим образом (вариант на curl, через POST):

$error = true; $secret = 'СЕКРЕТНЫЙ_КЛЮЧ'; if (!empty($_POST['g-recaptcha-response'])) < $curl = curl_init('https://www.google.com/recaptcha/api/siteverify'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, 'secret=' . $secret . '&response=' . $_POST['g-recaptcha-response']); $out = curl_exec($curl); curl_close($curl); $out = json_decode($out); if ($out->success == true) < $error = false; >> if ($error)

Вместо «СЕКРЕТНЫЙ_КЛЮЧ» подставьте значение из второго поля на странице с ключами. После этого капча должна заработать.

Руководство по reCaptcha v3

Капчу третьей версии также называют невидимой. Суть проверки заключается не в выполнении заданий пользователем, а в анализе его поведения на сайте. Капча работает в фоновом режиме: буквально оценивает те или иные действия, и на основе этих оценок делается вывод о том, кем является посетитель (человеком или ботом).

Чтобы поставить такую рекапчу, для начала добавьте в вашу форму скрытое поле «token». Результат может выглядеть примерно так:

 

Имейте в виду, что генерируемый токен действует только в течение двух минут. Если создать его при загрузке страницы, он может истечь до момента нажатия пользователем кнопки отправки формы, и тогда человека примут за бота. Google рекомендует вызывать капчу при выполнении действия. Подробную информацию можно прочитать здесь . На странице подробно расписано, какие фрагменты кода использовать для подключения reCaptcha в разных вариациях.

С помощью CMS

Чтобы внедрить капчу при помощи CMS, вам понадобятся лишь полученные ключи и специальный плагин. Мы подобрали несколько расширений для разных систем, которые можно использовать с этой целью:

  1. «No Captcha ReCaptcha» для WordPress. Позволяет установить проверку в любые формы, а также стилизовать сам виджет reCaptcha под дизайн сайта.
  2. «reCAPTCHA» для Joomla!. Можно выбрать светлый или темный стиль капчи.
  3. «Google reCAPTCHA» для 1С-Битрикс. В настройках можно указать допустимую оценку, добавить сообщение в случае ошибки.

Заключение

Установка капчи на сайт существенно сокращает количество спам-атак. Этот инструмент давно стал необходимостью, так что, надеемся, вы сумеете защитить свой сайт при помощи рекомендаций из нашей статьи. Можете установить один простой плагин или вписать код самостоятельно — главное, чтобы сервис работал.

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

Как найти битые ссылки на сайте бесплатно

Битые ссылки (broken links) — это ссылки на сайте, которые не работают: например, ведут на несуществующие страницы с кодом ошибки 404 (Page Not Found). Большое количество битых ссылок ухудшает позиции сайта в поисковых системах, а также негативно сказывается на удобстве для пользователей. В нашей статье мы расскажем, как проверить сайт на битые ссылки с помощью бесплатных онлайн-инструментов.

CMS или конструктор: что лучше выбрать

Сегодня, чтобы создать полноценный работающий сайт, вовсе не обязательно владеть языками программирования и другими специальными знаниями. Для этого давно существуют программные продукты, которые делают всю техническую работу за вас. Конструкторы сайтов и системы управления контентом (CMS) являются простыми и удобными инструментами, позволяющими запустить собственный веб-проект. Их часто сравнивают, но на самом деле оба этих решения эффективны — в разных обстоятельствах. Мы расскажем, чем CMS отличаются от конструкторов сайтов, и перечислим особенности каждого метода.

Как получить SSL-сертификат Let’s Encrypt

SSL-сертификат — это цифровой сертификат, удостоверяющий подлинность веб-сайта и позволяющий использовать зашифрованное соединение. Без защищенного соединения сайту будет проблематично продвинуться в поисковых системах и завоевать доверие клиентов. Для небольших веб-проектов, лендингов и блогов отлично подойдет бесплатный SSL-сертификат Let’s Encrypt. В нашей статье мы подробно расскажем, как получить его на виртуальном хостинге и VPS/VDS сервере.

Нажмите дважды, чтобы увеличить

Как подключить Google ReCAPTCHA на сайт

Заметки айтишника

Пример подключения Google reCaptcha на сайт, регистрация в API, вставка кода в форму, проверка правильности введенной капчи.

Регистрация сайта в сервисе reCaptcha

Итак, сначала нужно добавить сайт в ReCaptcha API перейдя по ссылке https://www.google.com/recaptcha/admin/create (нужна авторизация), в форме нужно указать название и домен сайта где будет использоваться капча.

После отправки формы появится страница с данными для интеграции.

Вывод на сайте

Чтобы вывести капчу в форме, нужно подключить api.js и добавить c классом g-recaptcha и атрибутом data-sitekey с открытым ключом.

 

Несколько reCaptcha на странице

В таком случае, в формах вставляются несколько DIVов с уникальным идентификатором, а далее к ним подключается reCaptcha JS-скриптом.

Форма #1 
Форма #2

Проверка заполнения капчи

На стороне сервера проверку введенной капчи можно реализовать двумя способами:

Вариант на curl (через POST)

$error = true; $secret = 'СЕКРЕТНЫЙ_КЛЮЧ'; if (!empty($_POST['g-recaptcha-response'])) < $curl = curl_init('https://www.google.com/recaptcha/api/siteverify'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, 'secret=' . $secret . '&response=' . $_POST['g-recaptcha-response']); $out = curl_exec($curl); curl_close($curl); $out = json_decode($out); if ($out->success == true) < $error = false; >> if ($error)

Вариант на file_get_contents

$error = true; $secret = 'СЕКРЕТНЫЙ_КЛЮЧ'; if (!empty($_POST['g-recaptcha-response'])) < $out = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=' . $secret . '&response=' . $_POST['g-recaptcha-response']); $out = json_decode($out); if ($out->success == true) < $error = false; >> if ($error)

  • ← Кэширование данных в PHP на примере класса
  • Как отправить HTML-форму без перезагрузки страницы →

Устанавливаем капчу на свой сайт / Google reCAPTCHA

Устанавливаем капчу на свой сайт / Google reCAPTCHA

Каждый пользователь хоть раз встречался с “капчей”. Это надоедливое окно вечно затягивает время при взаимодействии с сайтом, а используется оно почти повсеместно. Давайте рассмотрим как её установить.

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

Появление термина CAPTCHA

Когда в конце 90-х появились новые форматы сайтов с возможностью вести переписку в режиме реального времени – наиболее предприимчивые программисты начали создавать чат-ботов. Хакерам это было выгодно как для получения денег, так и просто ради забавы.

Чат-боты производили в тысячи раз больше операций, чем обычный пользователь. Это приводило к отключению сайта или постоянной перегрузке сервера. Именно для решения этих проблем в 2000 году была создана CAPTCHA.

Создателем защитника стал частный университет Карнеги. CAPTCHA – это аббревиатура от Completely Automated Public Turing test to tell Computers and Humans Apart – полностью автоматизированный публичный тест Тьюринга для различения компьютеров и людей. Такое длинное определение вряд ли прижилось бы в повседневном обиходе, поэтому сокращение в “капча” стало идеальным для всех пользователей.

По сути тест Тьюринга генерируется программным кодом, и необходим для определения, кто является системным пользователем – человек или бот. Иными словами, капча выдает рандомные символы или изображения, которые легко определяются человеком, но бот их идентифицировать не может. Защита позволяет исключить из сайта всех нежелательных “гостей”.

Виды капчи

Сегодня существует множество видов и подвидов капчи. Разработчики создают собственных защитников при помощи языка программирования PHP для придания своим проектам некой индивидуальности. Мы выбрали самые распространенные виды для презентации, т.к. они встречаются на большинстве платформ:

yaCAPTCHA

Одним из самых первых капча был yaCAPTCHA. Несмотря на то, что его разработали 15 лет назад, он до сих пор надежно защищает все сайты от ботов. Но многие пользователи, мягко говоря, его недолюбливают, т.к. расшифровать написанные буквы с первого раза не удается почти никому. С тех пор появилось немало аналогов защитника, которые, по сравнению с классическим, еще более изощренные. Так к картинке с разноразмерными буквами многие разработчики добавляют шумы, пикселизацию и другие дополнения.

reCAPTCHA

Самой популярной капчей является reCAPTCHA от Google. Ежедневно ее проходят более 700 000 000 пользователей. Она может иметь как цифровой, так и текстовый формат, а выполняет при этом не только защитную функцию. Так, с помощью капчи и пользователей, которые ее проходят – Google ежедневно оцифровывает порядка 100 000 000 слов, распознает названия улиц, места, локации и пр. для Google.Maps.

Anti-Spam Image

Несмотря на свою неэстетичность и абсолютное несоответствие современному дизайну сайта, многие разработчики внедряют капчу Anti-Spam Image. Она имеет вид изображения со специальным кодом. Последний распознать можно с первого раза, что экономит время и нервы пользователя. Этот защитник имеет отличный функционал и остается конкурентоспособным по сей день.

CheckBot

Наиболее простой как для разработчиков, так и для пользователей вариант капча – CheckBot. Чтобы добавить его на сайт, достаточно сделать пару кликов, также легко произвести его настройку. А пользователям необходимо выбрать одну картинку с “человечком” из нескольких, опираясь на расписанное задание. Человек легко справится с задачей за пару секунд, а вот боту это будет не по силу.

Math Comment Spam Protection

Также простым во внедрении и использовании является Math Comment Spam Protection. Его несложно установить на сайт и настроить. Он представлен изображением с цифрами и математическими действиями, рядом с которыми есть окно для введения ответа. Для человека будет просто сложить 2+2, а вот большинство ботов даже не смогут считать цифры с изображения.

Устанавливаем капчу на свой сайт

Сегодня reCAPTCHA является не только самой популярной, но и наиболее удобной для внедрения. К такому выводу пришел ее создатель Google на основе проведенных исследований. Поэтому именно его стоит внедрять на свой сайт.

Также данный вид капча имеет встроенные плагины и модули почти во всех системах управления сайтами, что позволяет установить ее на сайт с помощью пары кликов.

Для тех, кто использует блокнот для прописывания кода сайта и почтовых форм, предлагаем пошаговую инструкцию по внедрению reCAPTCHA на сайт:

  1. Находим ссылку на проект и reCAPTCHA .
  2. Переходим на сайт капчи, регистрируемся, получаем серийный ключ и привязываем к нему сайт.
  3. Заходим в блокнот с прописанным HTML кодом и находим . Перед ним необходимо прописать:
  1. Ищем необходимую форму и вписываем:

Вместо нулей прописывается ключ, полученный при регистрации в Google. На выходе должно получится:

  1. Вот и все, reCAPTCHA прописана в форуме комментария сайта. Осталось ее затестить и настроить необходимым образом. Для этого попробуйте “поиграться” с кодом.
  2. Для добавления капчи на страницу PHP, следует сделать дополнительный шаг, а именно перейти к работе над формой. В примере это /comm.php и добавить к нему скрипт:

а после в PHP прописать:

if (isset($_POST['g-recaptcha-response']) && $_POST['g-recaptcha-response']) < $secret = '0000000000000000000000'; $ip = $_SERVER['REMOTE_ADDR']; $response = $_POST['g-recaptcha-response']; $rsp = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$secret&response=$response&remoteip=$ip"); $arr = json_decode($rsp, TRUE); if ($arr['success']) < // . >>

Здесь также необходимо заменить нолики на ключ, полученный при регистрации в Google, но тот, который расположен под грифом “*secret”.

Возможно в будущем еще появятся более оптимальные виды капчи, но сегодня reCAPTCHA от Google остается наиболее популярной и востребованной среди разработчиков, а также менее назойливой для пользователей.

Больше интересных новостей

15 интересных и полезных библиотек JavaScript и CSS

15 интересных и полезных библиотек JavaScript и CSS

Рационально ли запускать коммерческий сайт на WordPress сегодня?

Рационально ли запускать коммерческий сайт на WordPress сегодня?

Самые медленные из популярных языков программирования

Самые медленные из популярных языков программирования

Подборка крутых готовых плагинов для сайтов

Подборка крутых готовых плагинов для сайтов

Как подключить Google reCAPTCHA v3 в PHP

В этой статье будет показываться установка Google reCaptcha v3 в PHP, это нужно для проверки, что ваш посетитель сайта, не робот.

Также у нас есть статья о том, как подключить Google reCaptcha v2 в PHP, посмотрите и её.

Получение API ключей:

Сначала надо получить ключ для работы с Google reCaptcha, для этого заходим на сайт Google reCAPTCHA, и там нажимаем на кнопку «Admin console».

После, настраиваем капчу, настраиваем так, как из скриншота ниже.

Давайте не много разберём, первым делом мы пишем название ярлыка, если грубо говоря, то это название для нашей капчи, потом выбираем тот тип, который нам нужен, в нашем случае reCaptcha v3, дальше вводим домен своего сайта и email, если надо, ну и ставим везде галочки, нажимаем в самом нижу кнопку «ОТПРАВИТЬ».

Когда нажали кнопку, если всё правильно, у вас должно появится, что-то, типа этого.

Если всё так, то всё хорошо.

HTML:

С HTML всё просто, вот он.

Google reCAPTCHA
grecaptcha.ready(function() < grecaptcha.execute('Ключ_для_сайта', ).then(function(token)
document.getElementById('token').value = token

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

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

PHP:

В PHP всё интереснее, суть программы будет в том, что мы отправляем данные секретного ключа и токин, и возвращается массив, с данными запроса, вот код.

$sicret_key = 'секретный ключ' ;
// Функция для получения данных reCaptcha
function returnReCaptcha ( $token , $sicret_key ) < // URL куда отправлять токин и секретный ключ $url = 'https://www.google.com/recaptcha/api/siteverify' ; // Параметры отправленных данных 'secret' = > $sicret_key , // Секретный ключ
'response' = > $token , // Токин
'remoteip' = > $_SERVER [ 'REMOTE_ADDR' ] , // IP-адрес пользователя
// Делаем запрос
$ch = curl_init ( $url ) ;
curl_setopt ( $ch , CURLOPT_POST , true ) ;
curl_setopt ( $ch , CURLOPT_POSTFIELDS , $params ) ;
curl_setopt ( $ch , CURLOPT_FOLLOWLOCATION , true ) ;
curl_setopt ( $ch , CURLOPT_HEADER , false ) ;
curl_setopt ( $ch , CURLOPT_RETURNTRANSFER , true ) ;
// Отправляем запрос
$response = curl_exec ( $ch ) ;
// Возвращаем массив полученных данных
return json_decode ( $response , true ) ;
// Проверка, что есть POST запрос
echo '

' ;

print_r ( returnReCaptcha ( $_POST [ 'token' ] , $sicret_key ) ) ; // Вывод данных массива

Разберём код, в начале мы объявляем наш секретный ключ, дальше создаётся функция для отправки и получения подтверждения капчи.

Внутри функции объявляем перемеренную $url , со значение куда отправлять запрос и массив $params с токином, ключом и с IP-адресом, с которого пользователь просматривает текущую страницу.

Дальше создаём запрос и настраиваем его, с помощью стандартной PHP библиотеки CURL, тут я не буду рассказывать как с ней, потому что очень много объяснять, если интересно, то зайдите в документацию по ней.

После настройки, отправляем запрос, с помощью curl_exec() и получаем ответ, его декодируем в массив благодаря json_decode() , полученный массив возвращаем.

После функции, идёт проверка, что есть запрос типа POST, если верно, то объявляем функцию returnReCaptcha() , передаём ей токин и секретный ключ, одно временно с этим выводим что она возвращает, у вас должно быть что типа этого.

google recaptcha v3 php

Самый главное значение тут, это success, если он равен один, то всё хорошо, если ноль, то значит какая-то ошибка, дальше можете просто сделать условие проверки этого значения в массиве и зависимо от результата, делать то или иное действие например так.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *