Яндекс SmartCaptcha

Защита форм магазина OpenCart 4 капчей Yandex SmartCaptcha — российской заменой reCAPTCHA — и, вторым компонентом, Google reCAPTCHA v2: регистрация, отзывы, комментарии, возвраты и обратная связь.

Назначение и совместимость

В OpenCart 4.1.0.4 есть только простая капча с картинкой. Расширение добавляет капчу Yandex SmartCaptcha: большинство посетителей проходят проверку без задания, роботы отсеиваются на сервере Яндекса. Расширение работает через штатный механизм капчи OpenCart: страницы с капчей выбираются в настройках магазина.

ВиджетВстраивается в формы вместо штатной картинки; язык — по языку магазина или заданный.
Серверная проверкаТокен виджета проверяется запросом к серверу SmartCaptcha с серверным ключом; подделать ответ на стороне браузера нельзя.
Повторная отправкаПосле ответа магазина на отправку формы виджет сбрасывается — новый токен для новой попытки.
Тестовый режимВиджет всегда показывает задание — для проверки на стенде.

Проверено на OpenCart 4.1.0.4 и PHP 8.2 со штатной темой (нужно расширение PHP cURL). Другие версии OpenCart 4 и сторонние темы не проверялись: виджет вставляется туда, где шаблон темы выводит {{ captcha }}. Ядро не меняется.

В сборке OCM Store обе капчи установлены, но выключены, в настройках магазина выбрана штатная «Базовая капча»: введите ключи нужной капчи, включите её и выберите в настройках магазина — см. ниже. Страницы настроек — в разделе Безопасность левого меню.

Ключи в Yandex Cloud

  1. В консоли Yandex Cloud создайте капчу (сервис SmartCaptcha); укажите домен магазина в списке разрешённых сайтов.
  2. Скопируйте два ключа: клиентский (встраивается в страницы магазина) и серверный (хранится только на сервере и используется для проверки).
Серверный ключ — секрет: не публикуйте его и не вставляйте в шаблоны.

Установка и включение

  1. Расширения → Установщик → «Загрузить», файл smartcaptcha_oc4.ocmod.zip (имя не менять: OpenCart 4 берёт из него код расширения) → «Установить». В сборке OCM Store этот шаг и следующий уже сделаны.
  2. Расширения → Расширения, тип «Защита от ботов» → «Установить» у «Яндекс SmartCaptcha», затем «Редактировать».
  3. Вставьте клиентский и серверный ключи, включите «Статус», сохраните. Без ключей включить нельзя: включённая капча без ключей заблокировала бы отправку форм.
  4. Система → Настройки → Опции → Капча: выберите «Яндекс SmartCaptcha», отметьте страницы (регистрация, отзывы, комментарии, возвраты, обратная связь), сохраните.
  5. Откройте на витрине форму регистрации или обратной связи: вместо картинки появился виджет.

Права получает группа пользователя, который нажал «Установить». Другим группам — Система → Пользователи → Группы пользователей, маршрут extension/smartcaptcha_oc4/captcha/smartcaptcha.

Настройки

Расширения → Расширения → Защита от ботов → Яндекс SmartCaptcha → Редактировать. Вверху показано, выбрана ли капча в настройках магазина и на каких страницах.

НастройкаПо умолчаниюСмысл
СтатусвыключеноВключается только с заполненными ключами
Клиентский ключпустоКлюч виджета из консоли Yandex Cloud
Серверный ключпустоКлюч проверки; в форме скрыт
Язык виджетапо языку магазинаРусский, английский, белорусский, казахский, татарский, украинский, узбекский, турецкий; «по языку магазина» — по коду текущего языка витрины (неизвестный код — английский)
Тестовый режимвыключеноВиджет всегда показывает задание — удобно проверять на стенде; в рабочем магазине выключите
Если сервис проверки недоступенпропускать формуСервер SmartCaptcha не ответил или не принял ключ: «Пропускать форму» — покупатель не блокируется, факт пишется в журнал ошибок; «Не отправлять форму» — покупатель видит «Сервис проверки недоступен»

Как работает проверка

Google reCAPTCHA

Второй компонент пакета — Google reCAPTCHA v2 («Я не робот», флажок). Он появляется в том же списке Расширения → Расширения → Защита от ботов и в разделе Безопасность → Google reCAPTCHA; одновременно в магазине работает одна капча — та, что выбрана в настройках магазина.

  1. Зарегистрируйте сайт в консоли Google reCAPTCHA, тип «reCAPTCHA v2 → флажок „Я не робот“»; скопируйте ключ сайта и секретный ключ.
  2. Безопасность → Google reCAPTCHA: вставьте ключи, при необходимости выберите домен скриптов и тему виджета, включите «Статус», сохраните.
  3. Система → Настройки → Опции → Капча: выберите «Google reCAPTCHA», отметьте страницы, сохраните.
НастройкаПо умолчаниюСмысл
СтатусвыключеноВключается только с заполненными ключами
Ключ сайта, Секретный ключпустоКлючи из консоли Google reCAPTCHA
Домен скриптовrecaptcha.netОткуда загружать виджет и куда отправлять проверку: recaptcha.net работает там, где google.com недоступен (обычный случай для магазинов в России); google.com — если ограничений нет
Тема виджетасветлаяСветлая или тёмная
Если сервис проверки недоступенпропускать формуКак у SmartCaptcha: пропускать с записью в журнал или не отправлять форму

Проверка проходит так же: виджет кладёт в форму поле g-recaptcha-response, магазин проверяет его запросом к Google с секретным ключом; после ответа магазина виджет сбрасывается. Записи в журнале начинаются с reCAPTCHA: ….

Пакет добавляет в левое меню панели раздел «Безопасность» с пунктами «Яндекс SmartCaptcha» и «Google reCAPTCHA» — те же страницы настроек, что открываются из списка «Защита от ботов». Пункты видят пользователи, у которых есть права на эти страницы. Другие модули защиты магазина могут добавлять в этот раздел свои пункты.

Отключение и удаление

Чтобы временно отключить капчу, выберите в настройках магазина другую капчу или пустое значение — либо выключите «Статус» расширения (ядро пропускает выключенную капчу). Удаление: Расширения → Расширения → Защита от ботов → «Удалить» у каждой из двух капч, затем Расширения → Установщик → удалить пакет. Ключи удаляются вместе с настройками; раздел меню исчезает, когда удалены обе капчи.

Типовые вопросы