Мои проекты

Подключаем Google reCAPTCHA

Ключи для reCAPTCHA v2 checkbox, разрешённый домен и проверка формы Commentail.

Урок 9 / 22 · Commentail 1.3.2

Встроенная арифметическая CAPTCHA не требует аккаунта у провайдера. Google — дополнительный вариант. В этой инструкции нужен именно reCAPTCHA v2 с checkbox, не v3 и не Enterprise-интеграция другого типа.

Получим пару ключей

Откройте консоль reCAPTCHA, создайте отдельную учебную регистрацию, выберите v2 checkbox и добавьте фактическое имя тестового сайта. Домены вводятся без https:// и пути. Для локального опыта используйте поддерживаемый провайдером localhost; IP 127.0.0.1 и localhost не считайте взаимозаменяемыми. Wagtail Site должен соответствовать адресу, по которому открыта страница.

Сохраните site key и secret key в CAPTCHA_SITE_KEY и CAPTCHA_SECRET_KEY по уроку 5. Site key будет виден посетителю — это нормально. Secret key читает только сервер.

Выберем backend

В активном settings-файле объедините эти поля с существующим COMMENTAIL["default"], сохранив остальные настройки:

python
import os

# Merge into the existing COMMENTAIL["default"] dictionary.
COMMENTAIL = {
    "default": {
        "CAPTCHA_BACKEND": "commentail.captcha_providers.GoogleRecaptcha",
        "CAPTCHA_OPTIONS": {
            "site_key": os.environ["CAPTCHA_SITE_KEY"],
            "secret_key": os.environ["CAPTCHA_SECRET_KEY"],
            "timeout": 3,
        },
    },
}

Оба ключа относятся к одной регистрации v2. timeout — серверный тайм-аут 3 секунды; разрешены значения 1–10. Перезапустите сайт и выполните python manage.py check. Убедитесь, что шаблон загружает {% commentail_js %}. Самостоятельно добавлять ещё один Google script не нужно: Commentail загружает виджет, когда тот требуется.

Проверим именно нового гостя

Откройте свежую приватную сессию. При adaptive подтверждённый раньше гость может не видеть CAPTCHA. Для обязательной проверки каждого гостя задайте GUEST_CAPTCHA_MODE: "always" в словаре default; после теста выберите нужную политику.

Проверьте отправку после решения, отказ при отсутствии решения, ответ на комментарий и повтор после просроченной проверки. Текст черновика должен сохраняться при ошибке enhanced-формы. Сервер также проверяет hostname: ключ от другого домена не должен приниматься.

Без JavaScript обязательная внешняя CAPTCHA не работает; обхода через письмо или очередь модерации нет. При недоступности Google форма не переключается автоматически на арифметику. Не отключайте проверку для обхода сбоя. Уведомьте читателя о необходимости JavaScript и разберите причину загрузки.

Если CSP блокирует виджет, разрешите нужные источники по официальной документации, сохраняя остальную политику. Учтите обращение браузера к внешнему сервису в информации сайта о конфиденциальности. Для возврата к арифметике задайте CAPTCHA_BACKEND: None, уберите options и перезапустите приложение; старые задания CAPTCHA станут недействительными. После учебного теста удалите только созданную для него регистрацию.

Другие уроки по этой задаче

Документация по теме

Была ли статья полезна?

Комментарии 0

Имя: до 40 символов.

После отправки мы пришлём письмо со ссылкой для подтверждения email.

Не более 5000 символов.

Опубликованных комментариев пока нет.