Налаштування reCAPTCHA для захисту форм сайту

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Налаштування reCAPTCHA для захисту форм сайту
Проста
~2-3 години
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Налаштування reCAPTCHA для захисту форм сайту

Google reCAPTCHA захищає форми від автоматичних ботів: спам-реєстрацій, брутфорсу паролів, масового відправлення форм зворотного зв'язку. Існує три версії з різними UX-компромісами.

Версії reCAPTCHA

v2 Checkbox — класичний «Я не робот». Користувач ставить галочку, іноді проходить візуальний тест.

v2 Invisible — не вимагає взаємодії, аналізує поведінку в фоні. При підозрі показує вызив.

v3 — повністю невидимий, повертає score від 0.0 до 1.0. Розробник сам вирішує, що робити при низькому score.

Реєстрація та ключі

Отримати ключі: google.com/recaptcha/admin. Потрібні site_key (публічний, для фронту) та secret_key (приватний, тільки на сервері).

Інтеграція reCAPTCHA v3

Фронтенд:

<script src="https://www.google.com/recaptcha/api.js?render=SITE_KEY"></script>
<script>
grecaptcha.ready(function() {
    document.getElementById('submit').addEventListener('click', async function(e) {
        e.preventDefault();
        const token = await grecaptcha.execute('SITE_KEY', {action: 'contact_form'});
        document.getElementById('recaptcha-token').value = token;
        document.getElementById('myForm').submit();
    });
});
</script>
<input type="hidden" id="recaptcha-token" name="recaptcha_token">

Перевірка на сервері (PHP):

$token = $request->input('recaptcha_token');
$secret = config('services.recaptcha.secret');

$response = Http::post('https://www.google.com/recaptcha/api/siteverify', [
    'secret'   => $secret,
    'response' => $token,
    'remoteip' => $request->ip(),
]);

$data = $response->json();

if (!$data['success'] || $data['score'] < 0.5 || $data['action'] !== 'contact_form') {
    abort(422, 'reCAPTCHA verification failed');
}

Score-стратегія для reCAPTCHA v3

Score Інтерпретація Дія
0.9–1.0 Явно людина Пропустити
0.5–0.9 Вірогідно людина Пропустити
0.3–0.5 Неопределено Додаткова перевірка / підтвердження email
0.0–0.3 Вірогідно бот Блокувати або показати v2 Checkbox

Інтеграція з React

import ReCAPTCHA from 'react-google-recaptcha';

function ContactForm() {
    const recaptchaRef = useRef(null);

    const handleSubmit = async (e) => {
        e.preventDefault();
        const token = await recaptchaRef.current.executeAsync();
        recaptchaRef.current.reset();
        // Відправити token разом з даними форми
        await submitForm({ ...formData, recaptcha_token: token });
    };

    return (
        <form onSubmit={handleSubmit}>
            {/* поля форми */}
            <ReCAPTCHA
                ref={recaptchaRef}
                sitekey={process.env.REACT_APP_RECAPTCHA_SITE_KEY}
                size="invisible"
            />
            <button type="submit">Відправити</button>
        </form>
    );
}

Строк реалізації

Базова інтеграція reCAPTCHA v3 — 4–8 годин включаючи серверну верифікацію.