Google предоставляет замечательное средство для борьбы со спамом — reCaptcha
Обычно это просто галочка «Я не робот»
Однако есть возможность не делать даже этого — Invisible reCAPTCHA проверяет пользователя в фоне и только если возникли сомнения отображает окно с дополнительным подтверждением
Подключить невидимую рекапчу очень просто:
Создаем контейнер и подключаем скрипт
1
2
3
|
<div id="recaptcha"></div>
<script src="https://www.google.com/recaptcha/api.js?onload=onloadReCaptchaInvisible&render=explicit"
async defer></script>
|
Настраиваем и пару функций для удобной работы
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
var g_cfg = {
'sitekey': 'your-api-code',
'theme': 'dark',
'size': 'invisible',
'callback': 'grecaptcha_callback',
};
// храним идентификатор
var recaptcha_id;
// функция которую мы вызовим что бы проверить
function gcaptcha_check(callback) {
window.grecaptcha_callback = callback;
window.grecaptcha.execute(recaptcha_id);
}
// если требуется обновить рекапчу, например для еще одной проверки пользователя
function gcaptcha_reset() {
window.grecaptcha.reset(recaptcha_id);
}
// колбек для самой рекапчи
window.onloadReCaptchaInvisible = function () {
recaptcha_id = grecaptcha.render('recaptcha', g_cfg)
};
|
Изначально reCaptcha отображает свой логотип в правом нижнем углу страницы
Что бы ее скрыть достаточно добавить в стили
1
2
3
|
.grecaptcha-badge {
display: none;
}
|
Однако, по условиям использования, если вы скрываете этот значек, вам необходимо самим уведомить пользователя что используется reCaptcha, показав текст
1
2
3
|
This site is protected by reCAPTCHA and the Google
<a href="https://policies.google.com/privacy">Privacy Policy</a> and
<a href="https://policies.google.com/terms">Terms of Service</a> apply.
|
Подробнее на https://developers.google.com/recaptcha/docs/faq