установка невидимой капчи на сайт google recatcha v3

Установка Google reCaptcha v3 на сайт 2019. Как установить невидимую капчу на сайт.

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

Первым делом вам нужно зарегистрировать google почту и авторизоваться.

Далее переходим по данной ссылке https://www.google.com/recaptcha/intro/v3.html и нажимаем на кнопку “Admin console”

Если вы впервые создаете капчу то у вас появится окно с создание капчи. Здесь вам нужно заполнить поля.

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

Далее вы выбираете тип капчи. Сегодня мы рассматриваем капчу версии 3, поэтому выбирайте её.

После это прописываем доменные имена. Если вы пользуетесь локальным сервером, то прописывайте localhost или название папки, если это OpenServer.

!!!Внимание при работе с локальным сервером могут возникнуть проблемы в аутентификации пользователей. Google Recaptcha может работать некорректно, поэтому лучше тестировать на реальных хостингах!!!

После того как вы прописали домены, вы принимаете условия использования reCaptcha и нажимаете на кнопку отправить.

После этого вы попадаете на страницу с ключами. Вам нужно скопировать данные ключи.

Нажав на кнопку “Перейти в google аналитику” вы попадаете на страницу статистики, где показаны все выполнения и блокировки представленной капчи.

На данной странице вы можете посмотреть статистику по каждой капче, добавить новую капчу, изменить старую.

Код для Google reCaptcha

И так правильнее было бы разбить код по файлам, но для наглядности я занесу весь код в один файл.

Весь код выглядит так…

<?php
/*КЛЮЧИ*/
define('SITE_KEY', '6LfH-aIUAAAAANTmsRDS2lZRIjjOxL4Q9q0fIFTl');
define('SECRET_KEY', '6LfH-aIUAAAAAEWJIQJizklZldRxFeTGseZSbRxu');

/*ОБРАБОТКА ЗАПРОСА*/
if($_POST){
    /*СОЗДАЕМ ФУНКЦИЮ КОТОРАЯ ДЕЛАЕТ ЗАПРОС НА GOOGLE СЕРВИС*/
    function getCaptcha($SecretKey) {
        $Response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".SECRET_KEY."&response={$SecretKey}");
        $Return = json_decode($Response);
        return $Return;
    }
    
    /*ПРОИЗВОДИМ ЗАПРОС НА GOOGLE СЕРВИС И ЗАПИСЫВАЕМ ОТВЕТ*/
    $Return = getCaptcha($_POST['g-recaptcha-response']);
    /*ВЫВОДИМ НА ЭКРАН ПОЛУЧЕННЫЙ ОТВЕТ*/
    var_dump($Return);
    
    /*ЕСЛИ ЗАПРОС УДАЧНО ОТПРАВЛЕН И ЗНАЧЕНИЕ score БОЛЬШЕ 0,5 ВЫПОЛНЯЕМ КОД*/
    if($Return->success == true && $Return->score > 0.5){
        echo "Succes!";
    }
    else {
        echo "You are Robot";
    }
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
   
   <form action="/" method="POST">
       <input type="text" name="name" /><br/><br/>
       <input type="hidden" id="g-recaptcha-response" name="g-recaptcha-response" /><br/><br/>
       <input type="text" value="Submit" />
   </form>
   
    <script src="https://www.google.com/recaptcha/api.js?render=<?php echo SITE_KEY?>"></script>
    <script>
        grecaptcha.ready(function() {
            grecaptcha.execute('<?php echo SITE_KEY;?>', {action: 'homepage'}).then(function(token) {
                //console.log(token);
                document.getElementById('g-recaptcha-response').value=token;
            });
        });
    </script>

</body>
</html>

HTML

Давайте начнем разбор с HTML. Здесь я создал простую форму которая состоит из двух полей и кнопки. Каждому полю необходимо прописать значение для атрибута name . Одно из полей мы будем использовать для капчи, поэтому зададим ему специальный идентификатор – g-recaptcha-response.

<form action="/" method="POST">
       <input type="text" name="name" /><br/><br/>
       <input type="hidden" id="g-recaptcha-response" name="g-recaptcha-response" /><br/><br/>
       <input type="submit" value="Submit" />
</form>

Данные из формы будут отправляться методом POST, обработку я буду проводить в этом же файле, поэтому в атрибуте action ставлю значение /.

JavaScript

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

<?php
/*КЛЮЧИ*/
define('SITE_KEY', '6LfH-aIUAAAAANTmsRDS2lZRIjjOxL4Q9q0fIFTl');
define('SECRET_KEY', '6LfH-aIUAAAAAEWJIQJizklZldRxFeTGseZSbRxu');
...
...
?>

Ниже я прописываю JavaScript код. Здесь мы подключаем API от Google и прописываем основной скрипт который подключает капчу. Здесь в качестве параметра нужно передать значение ключа который вы получали при создании капчи. Вы можете передать значение целиком или как я передать значение из константы в которой находится данный ключ.

<script src="https://www.google.com/recaptcha/api.js?render=<?php echo SITE_KEY?>"></script>
    <script>
        grecaptcha.ready(function() {
            grecaptcha.execute('<?php echo SITE_KEY;?>', {action: 'homepage'}).then(function(token) {
                //console.log(token);
                document.getElementById('g-recaptcha-response').value=token;
            });
        });
  </script>

Раскомментируйте функцию console.log(token), чтобы увидеть токен в консоли. Данный токен мы будем передавать в качестве значения для поля #g-recaptcha-response.

PHP

Теперь рассмотрим PHP. Вначале я занес ключи в константы, чтобы с ними было удобнее работать(одну из них я уже прописывал в js скрипте).

Ниже мы прописываем проверку что массив POST не пустой и данные из формы записываются.

Далее мы создаем функцию которая будет делать запрос на google сервис и возвращать нам данные этого запроса.

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

В документации написано, что если значение параметра score ниже 0.5 то скорее всего это бот, а если выше то это человек. Исходя из этого мы создаем данное условия и плюсом проверяем что проверка прошла успешно.

/*КЛЮЧИ*/
define('SITE_KEY', '6LfH-aIUAAAAANTmsRDS2lZRIjjOxL4Q9q0fIFTl');
define('SECRET_KEY', '6LfH-aIUAAAAAEWJIQJizklZldRxFeTGseZSbRxu');

/*ОБРАБОТКА ЗАПРОСА*/
if($_POST){
    /*СОЗДАЕМ ФУНКЦИЮ КОТОРАЯ ДЕЛАЕТ ЗАПРОС НА GOOGLE СЕРВИС*/
    function getCaptcha($SecretKey) {
        $Response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".SECRET_KEY."&response={$SecretKey}");
        $Return = json_decode($Response);
        return $Return;
    }
    
    /*ПРОИЗВОДИМ ЗАПРОС НА GOOGLE СЕРВИС И ЗАПИСЫВАЕМ ОТВЕТ*/
    $Return = getCaptcha($_POST['g-recaptcha-response']);
    /*ВЫВОДИМ НА ЭКРАН ПОЛУЧЕННЫЙ ОТВЕТ*/
    var_dump($Return);
    
    /*ЕСЛИ ЗАПРОС УДАЧНО ОТПРАВЛЕН И ЗНАЧЕНИЕ score БОЛЬШЕ 0,5 ВЫПОЛНЯЕМ КОД*/
    if($Return->success == true && $Return->score > 0.5){
        echo "Succes!";
    }
    else {
        echo "You are Robot";
    }
}
На этом всё!
Если у вас есть вопросы, пишите их в нашей группе - https://vk.com/progtime
Вы так же можете разместить свой вопрос на нашем форуме, где другие программисты смогут вам помочь в решение вашей задачи - https://vk.com/prog_time
В ней мы делимся своим опытом с другими начинающими программистами, поэтому обязательно ответим на ваш вопрос.
Так же прокачивайте свои навыки на нашем канале - https://www.youtube.com/c/ProgTime

141
Оставить комментарий

avatar
131 Цепочка комментария
10 Ответы по цепочке
0 Последователи
 
Популярнейший комментарий
Цепочка актуального комментария
134 Авторы комментариев
BruceripJerrydemJerrydemJerrydemJerrydem Авторы недавних комментариев
  Подписаться  
новее старее большинство голосов
Уведомление о
Serg
Гость
Serg

)

Дмитрий
Гость
Дмитрий

Нихуя не понятно. Где переменные полей то? Где сама отправка? Хоть бы комментариями показал где код отправки формы идет в случае успеха , а где в случае отказа, пиздец

дима
Гость
дима

А каптча подключается для всех страниц или только на определенные?

Илья
Гость

Все зависит от вас. По стандарту она подключается в файле в котором вы ее пропишите. Но если у вас CMS, то в теории вы можете ее подключить и на всем сайте.

Алексей
Гость
Алексей

А как разбить код на несколько файлов? Как установить на html сайт, из PHP только отправка формы

Andriy
Гость

https://www.site4study.com/lesson/86
PHP reCAPTCHA V3 class приклад класу

if ($_SERVER[‘REQUEST_METHOD’] == ‘POST’) {

$recaptcha = new RecaptchaModule();
if ($recaptcha->isChecked()) {
echo ‘HELLO PEOPLE’;
echo ‘
‘ . $_POST[‘name’];
} else {
echo ‘HELLO ROBOT’;
}

}

Анна
Гость
Анна

Здравствуйте.
Лично у меня ошибка Invalid site key or not loaded in api.js: SITE_KEY на строчке grecaptcha.execute(‘SITE_KEY’, {action: ‘homepage’}).then(function(token) в том числе. Сделала все по инструкции, а в итоге вот(

Павел
Гость
Павел

Поправьте общий код -> форма, submit hidden, recaptcha – text

ilyeah
Гость
ilyeah

подскажите почему token всегда null

Михаил
Гость
Михаил

У меня тот же вопрос. И по это причине получаю “object(stdClass)#72 (2) { [“success”]=> bool(false) [“error-codes”]=> array(1) { [0]=> string(20) “invalid-input-secret” } } You are Robot”

Александр
Гость
Александр

А не подскажете в чем может быть проблема: в ваш код при успешном выполнении добавил отправку писем на e-mail. Ранее он работала, но теперь когда поставляю ее в ваш код система выдает ошибку 500 при попытке отправить форму.Не подскажете с чем это может быть связано?)

Евгений
Гость
Евгений

Здравствуйте. В чем может быть проблема? Все установил, даже работает, но работает только одна форма, остальные выдают ошибку “Вы робот”.
На сайте около 10 форм и все в сплывающих окнах, работает только та форма, которая находится выше всех в коде.
Выдает такую ошибку: object(stdClass)#1 (2) { [“success”]=> bool(false) [“error-codes”]=> array(1) { [0]=> string(22) “missing-input-response” } } You are Robot

Вася
Гость
Вася

потому что скрипт который в HTML пишется, вставляет токен только в 1 поле по id=”g-recaptcha-response”, как сделать на остальные такие же id=”g-recaptcha-response” я хз пока

Вася
Гость
Вася

Понял, сделал как понимаю но работает. у меня 4 формы на странице, скрипт пролдил просто, получилось так.

grecaptcha.ready(function() {
grecaptcha.execute(‘6LeZ3d8UAAAAAMEXQBXZSCiLNCGEqmlWonuMGemW’, {action:’homepage’}).then(function(token) {
document.getElementById(‘g-recaptcha-response’).value=token;
document.getElementById(‘g-recaptcha-response2’).value=token;
document.getElementById(‘g-recaptcha-response3’).value=token;
document.getElementById(‘g-recaptcha-response4’).value=token;
});
});

Ну и в каждой форме ID поставил в соответствии со скриптом

Bennysoype
Гость

Секрет евреев: Еврейские мужчины лечат простатит за 2-3 недели!
Один раз в жизни! Раз и навсегда! Узнаем как… http://bit.ly/3bqeXp9

pancheskodon
Гость
pancheskodon

Поддерживаю, нихуя не понятно!

JanleF
Гость

Cialis Viagra Efficacite [url=https://buyciallisonline.com/#]where to buy cialis[/url] Stendra 50mg Ed Can I Purchase safe place to buy cialis online Acquisto Viagra Generico In Contrassegno

Genarodrisy
Гость
Genarodrisy

buy cheap viagra uk online https://canadianpharmacystorm.com can you buy viagra over the counter

Brianrix
Гость
Brianrix

cialis 5 mg generic cialis buy cheap cialis australia

Mauriceprert
Гость
Mauriceprert

generic viagra cialis coupon buy cheap viagra cialis

Михаил
Гость
Михаил

Все прикручено по инструкции. Ключ перепроверен 100500 раз. При отправке сообщение таки уходит и приходит но при этом получаю сообщение “object(stdClass)#72 (2) { [“success”]=> bool(false) [“error-codes”]=> array(1) { [0]=> string(20) “invalid-input-secret” } } You are Robot”. Что может быть ? В какую сторону копать ? Пересмотрел и перечитал что проблема возможна из-за ключа. Но повторю что ключ перепроверен 10 раз.И даже пробовал пересоздать его.

Allenploft
Гость
Allenploft

cheap cialis black https://viagrawithoutdoctorspres.com order viagra online illegal

Israelevago
Гость
Israelevago

cheap viagra/ kamagra from the u.k https://edpillsphrm.com viagra pfizer buy

Thomasneomo
Гость
Thomasneomo

how can i order cialis https://www.sildwithdoctorprescription.com buy levitra without rx

535125
Гость

Предлагаем Вам несложную работу в домашних условиях.

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

Более подробная информация на нашем сайте: https://v.ht/zarabotok_mask

881376
Гость

Заработок на просмотре видеороликов без вложений и продаж.

Бeз влoжeний!
Бeз свoeгo вебсайта!
Бeз тeхничeских знaний!
Бeз вoзрaстных oгрaничeний!
Рaбoтaя 2-4 чaсa в дeнь!

Более подробная информация на нашем сайте: http://v.ht/biznes_na_video

Michealfrapy
Гость
Michealfrapy

buy cialis online no prescription http://tadal24ph.com – cialis 20 mg best price buy genuine cialis

Michealfrapy
Гость
Michealfrapy

how to order generic viagra online http://kaletra24.com – kaletra price cheap viagra tablets sale

Michealfrapy
Гость
Michealfrapy

viagra online buying http://hydroxychloroquine24.com – hydroxychloroquine buy viagra sydney

Michealfrapy
Гость
Michealfrapy

generic viagra online for sale http://kaletra24.com – Ritonavir how to buy cialis online uk

Michealfrapy
Гость
Michealfrapy

buy viagra paypal accepted http://aralenph.com – alaren online viagra cheap online order

Michealfrapy
Гость
Michealfrapy

buy.viagra.com http://hydroxychloroquine24.com – plaquenil online buy viagra cialis online canada

Michealfrapy
Гость
Michealfrapy

buy cialis by paypal http://tadal24ph.com – cialis generic viagra sale tesco

Michealfrapy
Гость
Michealfrapy

cheapest generic viagra cialis http://hydroxychloroquine24.com – hydroxychloroquine buy cialis uk next day delivery

Michealfrapy
Гость
Michealfrapy

can i buy viagra in boots http://tadal24ph.com – cheap cialis how to buy cialis in london

Michealfrapy
Гость
Michealfrapy

buy levitra pakistan http://aralenph.com – generic alaren cheapest viagra cialis levitra

Michealfrapy
Гость
Michealfrapy

best place to buy cialis online reviews http://zithazi.com – zithromax online cheap cialis black

Michealfrapy
Гость
Michealfrapy

can buy viagra dublin http://alexa24ph.com – viagra pills buy cialis no prescription canada

Harryjab
Гость
Harryjab

viagra
buy levitra 20mg

Harryjab
Гость
Harryjab

viagra online
buying cialis in peru

Harryjab
Гость
Harryjab

cheap viagra
order levitra professional oo

Harryjab
Гость
Harryjab

viagra
generic cialis pills e20

Harryjab
Гость
Harryjab

viagra without doctor prescription
order viagra online australia

Harryjab
Гость
Harryjab

viagra online
levitra for cheap

Harryjab
Гость
Harryjab

sildenafil
buy viagra in the usa

Harryjab
Гость
Harryjab

generic viagra
viagra cheap next day delivery

Harryjab
Гость
Harryjab

generic viagra
buy viagra hyderabad india

Harryjab
Гость
Harryjab

viagra without a doctor prescription
viagra sale in thailand

Harryjab
Гость
Harryjab

buy viagra
viagra to buy online uk

Harryjab
Гость
Harryjab

generic viagra 100mg
buy cialis mexico

Harryjab
Гость
Harryjab

generic viagra 100mg
buy viagra johannesburg

Harryjab
Гость
Harryjab
Immof
Гость
Immof

http://reyna.userbet.xyz
Высокотехнологичные инструменты для заработка на криптовалютных активах

[url=https://habarovsk.podarki-market.ru/catalog/product-418514/?MID=1193&result=reply#message1193]Высокотехнологичные инструменты для заработка на криптовалютных активах[/url] [url=https://autopravo.club/strakhovanie/osago/pokupka-prodazha/#comment-807]Высокотехнологичные инструменты для заработка на криптовалютных активах[/url] [url=https://tomsk.podarki-market.ru/catalog/product-468590/?MID=191&result=reply#message191]Высокотехнологичные инструменты для заработка на криптовалютных активах[/url] 24f16ec

MichealLogUe
Гость
MichealLogUe

taking l-citrulline and cialis together buy here