Мои проекты

Подключаем Яндекс SmartCaptcha

Создаём учебную CAPTCHA, сохраняем клиентский и серверный ключи и проверяем домен.

Урок 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.

Подключим к приложению

Объедините фрагмент с существующим словарём настроек:

python
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 в том же каталоге. Не удаляйте облако или общие ресурсы, чтобы убрать один тест.

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

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

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

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

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

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

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

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