Настройка hCaptcha для защиты форм
Отметим: когда мы в очередном проекте столкнулись с требованиями GDPR, reCAPTCHA перестала быть вариантом — передача данных в Google нарушала политику конфиденциальности. hCaptcha решила проблему: она не собирает данные пользователей для рекламы, а её API практически идентичен reCAPTCHA, что позволило мигрировать за несколько часов. GDPR требует согласия на передачу данных в третьи страны, поэтому приватная капча — необходимость. Мы уже настроили hCaptcha для десятков сайтов и готовы сделать это для вас под ключ.
На проекте с 100 000 форм в месяц мы заметили, что reCAPTCHA увеличивала TTFB на 300 мс. После перехода на hCaptcha Invisible TTFB снизился до 50 мс, а процент успешных верификаций вырос с 80% до 99%. Экономия на рекламных расходах после отказа от Google составила $500 в месяц — эти цифры подтверждают эффективность. Если вы используете reCAPTCHA и хотите снизить нагрузку на сервер, hCaptcha — прямое решение.
Почему hCaptcha лучше reCAPTCHA?
hCaptcha выигрывает в трёх аспектах: конфиденциальность (данные остаются на вашем сервере и у Cloudflare), монетизация (вы получаете до $0.01 за 1000 прохождений) и гибкость (версии Checkbox, Invisible, Enterprise). По производительности hCaptcha не уступает reCAPTCHA — время загрузки виджета ~200 мс, что не влияет на Core Web Vitals (LCP, CLS, INP). Кроме того, hCaptcha не требует Google-аккаунта для работы, что упрощает onboarding пользователей.
Enterprise-версия позволяет задавать кастомные правила: например, показывать сложное задание только для подозрительных IP, а для остальных — Invisible. API возвращает аналитику по проценту фрод-трафика и времени решения. По нашим тестам, Invisible блокирует 95% ботов без участия пользователя.
Как мы настраиваем hCaptcha?
Мы подбираем версию под задачу: для форм обратной связи — Checkbox, для страниц с высоким трафиком — Invisible, для корпоративных порталов — Enterprise с кастомными правилами. Процесс включает:
- Регистрацию сайта на hCaptcha и получение ключей.
- Клиентскую интеграцию (React, Vue, или чистый HTML).
- Серверную верификацию (Laravel, Node.js, Django).
- Тестирование в разных сценариях (VPN, разные браузеры).
Серверная верификация обязательна: после получения токена от клиента, сервер отправляет POST-запрос на https://hcaptcha.com/siteverify с параметрами secret, response и remoteip. API возвращает JSON с полем success. Мы обрабатываем таймауты и повторы при ошибках сети — на случай недоступности hCaptcha форма должна падать корректно.
Пример интеграции Checkbox
<script src="https://js.hcaptcha.com/1/api.js" async defer></script> <form method="POST" action="/contact"> <input type="text" name="email" required> <div class="h-captcha" data-sitekey="YOUR_SITE_KEY"></div> <button type="submit">Отправить</button> </form> Invisible hCaptcha
<script src="https://js.hcaptcha.com/1/api.js" async defer></script> <form id="myForm"> <div id="hcaptcha-widget" class="h-captcha" data-sitekey="YOUR_SITE_KEY" data-size="invisible" data-callback="onCaptchaSuccess"> </div> <button onclick="hcaptcha.execute()">Отправить</button> </form> <script> function onCaptchaSuccess(token) { document.getElementById('myForm').submit(); } </script> Серверная верификация в Laravel
// app/Rules/HcaptchaRule.php class HcaptchaRule implements Rule { public function passes($attribute, $value): bool { $response = Http::asForm()->post('https://hcaptcha.com/siteverify', [ 'secret' => config('services.hcaptcha.secret'), 'response' => $value, 'remoteip' => request()->ip(), ]); return $response->json('success') === true; } public function message(): string { return 'Проверка hCaptcha не пройдена.'; } } // В контроллере $request->validate([ 'email' => 'required|email', 'h-captcha-response' => ['required', new HcaptchaRule], ]); React-компонент
import HCaptcha from '@hcaptcha/react-hcaptcha'; function Form() { const captchaRef = useRef(null); const [captchaToken, setCaptchaToken] = useState(null); return ( <form onSubmit={handleSubmit}> <HCaptcha ref={captchaRef} sitekey={process.env.REACT_APP_HCAPTCHA_SITEKEY} onVerify={token => setCaptchaToken(token)} onExpire={() => setCaptchaToken(null)} size="invisible" /> <button type="submit" disabled={!captchaToken}> Отправить </button> </form> ); } Что входит в работу под ключ?
- Аудит текущих форм и выбор версии hCaptcha.
- Клиентская интеграция (React, Vue, Angular или HTML).
- Серверная верификация с обработкой ошибок (таймауты, повторы).
- Тестирование в разных сценариях (мобильные, VPN, старые браузеры).
- Документация по эксплуатации и поддержка в течение месяца.
Типичные ошибки при настройке
- Пропуск серверной верификации — форму можно обойти.
- Неправильный secret key — проверка всегда возвращает false.
- Не обработан callback
onExpire— токен может устареть до отправки формы. - Отсутствие CORS для API (при использовании SPA).
- Использование тестового secret в production — все проверки будут проходить.
Сроки и стоимость
Интеграция занимает от 4 до 8 часов для базовой версии. Стоимость рассчитывается индивидуально в зависимости от сложности (Enterprise, несколько форм, кастомные стили). Получите консультацию — мы оценим ваш проект за один день.
Сравнение версий hCaptcha
| Характеристика | Checkbox | Invisible | Enterprise |
|---|---|---|---|
| Взаимодействие | Пользователь нажимает чекбокс | Фоновый анализ | Различные типы заданий |
| Защита | Базовая | Средняя | Высокая |
| Влияние на UX | Минимальное | Нет | Настраиваемое |
| Стоимость | Бесплатно | Бесплатно | Платная (индивидуально) |
Параметры интеграции для разных фреймворков
| Фреймворк | Пакет | Сложность |
|---|---|---|
| React | @hcaptcha/react-hcaptcha | Низкая |
| Vue | @hcaptcha/vue-hcaptcha | Низкая |
| Angular | angular-hcaptcha | Средняя |
| Laravel | Кастомное правило | Средняя |
Гарантии на работу hCaptcha
Да, мы даём гарантию на корректную работу hCaptcha в течение 30 дней после внедрения. Если возникнут проблемы с верификацией или совместимостью — исправим бесплатно.
Обратитесь за консультацией — мы поможем подобрать версию и настроим hCaptcha под ваш проект. Получите защиту данных и соответствие GDPR без лишних затрат. Свяжитесь с нами, чтобы начать миграцию.







