Настройка 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 без лишних затрат. Свяжитесь с нами, чтобы начать миграцию.







