Урок 10 / 22 · Commentail 1.3.2
Для Яндекса используйте SmartCaptcha со стандартным виджетом. Настройки Google из предыдущего урока целиком заменяются: два backend одновременно не включаются.
Создадим учебный ресурс
В Yandex Cloud выберите облако и каталог для эксперимента, откройте SmartCaptcha и создайте отдельную CAPTCHA. Укажите фактические разрешённые домены по инструкции создания. До создания проверьте условия оплаты и квоты аккаунта. Не отключайте проверку домена ради того, чтобы заработал пример.
В карточке ресурса получите клиентский и серверный ключи. Клиентский соответствует CAPTCHA_SITE_KEY, серверный — CAPTCHA_SECRET_KEY. Используйте окружение из урока 5, подставляя ваши значения вместо YOUR_SITE_KEY и YOUR_SECRET_KEY.
Подключим к приложению
Объедините фрагмент с существующим словарём настроек:
import os
# Merge into the existing COMMENTAIL["default"] dictionary.
COMMENTAIL = {
"default": {
"CAPTCHA_BACKEND": "commentail.captcha_providers.YandexSmartCaptcha",
"CAPTCHA_OPTIONS": {
"site_key": os.environ["CAPTCHA_SITE_KEY"],
"secret_key": os.environ["CAPTCHA_SECRET_KEY"],
"timeout": 3,
},
},
}
Перезапустите сайт и выполните python manage.py check. Для локального стенда проверьте, что домен разрешён провайдером и что Wagtail Site соответствует реальному адресу. Яндекс-адаптер проверяет точный host ответа, включая нестандартный порт: результат для другого адреса не подходит.
Commentail сам монтирует виджет при появлении формы и при переключении на ответ. Достаточно {% commentail_js %} в базовом шаблоне; не добавляйте ещё один загрузчик SmartCaptcha.
Проверим загрузку и отправку
Откройте приватное окно, заполните форму, решите проверку и отправьте. Затем проверьте пустой ответ и повтор после ошибки. Если подтверждённый гость пропускает CAPTCHA в adaptive-режиме, используйте новую приватную сессию либо временно GUEST_CAPTCHA_MODE: "always".
Если виджет не появился, проверьте Console и Network в инструментах браузера: загрузку скрипта, CSP и блокировщик. Разрешения script/frame/connect берите из актуальной документации провайдера, не отключайте CSP целиком. Секретный ключ в браузерном коде появляться не должен.
При недоступности сервиса проверка закрывается отказом. Черновик можно сохранить и повторить позже; автоматического обхода на арифметику нет. Внешний виджет требует JavaScript. Локальная привязка живёт по FORM_TICKET_SECONDS — по умолчанию час, но срок выданного провайдером токена проверяется отдельно.
Для завершения опыта сначала верните арифметику (CAPTCHA_BACKEND: None) или подключите рабочий ресурс, затем удалите учебную CAPTCHA в том же каталоге. Не удаляйте облако или общие ресурсы, чтобы убрать один тест.
Другие уроки по этой задаче
- 5. Переменные окружения без путаницы с ключами
- 9. Подключаем Google reCAPTCHA
- 11. Правила слов, CSV и защита от спама
Выберите способ входа или оставьте комментарий как гость ниже.