Урок 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"], сохранив остальные настройки:
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 станут недействительными. После учебного теста удалите только созданную для него регистрацию.
Другие уроки по этой задаче
- 5. Переменные окружения без путаницы с ключами
- 10. Подключаем Яндекс SmartCaptcha
- 11. Правила слов, CSV и защита от спама
Выберите способ входа или оставьте комментарий как гость ниже.