AjaxForm и reCaptcha V3

Доброе время суток. Сталкивался ли кто-нибудь с использованием reCaptcha V3 через плагин?

Каким образом происходит проверка на робота? Обычных пользователей не пропускает, а проверку не дает.

Сама каптча на сайте подключена, но нет возможности ее проверить. Смотрел в документации, написано «Параметр rcv3Action предназначен для изменения идентификатора action.», но так и не понял для чего он и что выполняет. Если зайти через приватное окно, то никаких проверок не происходит и форма надежно отправляет, а другие пользователи отправляют форму и у них не выскакивает никакой проверки а сразу выдается сообщение «Вы не прошли проверку reCaptcha.» Смотрел видео на ютубе, парень делал не через плагин и говорит что существуют 3 спосоа проверки и по умолчанию стоит на кнопке, при нажатии на нее если есть подозрения то всплывающим окном выходит проверка на картинках — но ничего. PS на странице несколько форм.
Евгений Лазарев
30 января 2020, 15:10
modx.pro
1
1 688
0

Комментарии: 13

Сергей Самусев
30 января 2020, 19:26
0
Делал по инструкции, не на одном сайте. Проблем не было. Как проверить не знаю, но спама нет. Она как то в фоне проверяет…
    Андрей
    30 января 2020, 19:46
    0
    Смотрел в документации, написано «Параметр rcv3Action предназначен для изменения идентификатора action.», но так и не понял для чего он и что выполняет.
    Если форм на странице несколько (а их несколько как написано), то в этом параметре должны быть разные значения для каждой из форм, например:
    'rcv3Action' => 'contactform' - в первой
    'rcv3Action' => 'feedbackform' - во второй, и т.д.
    Если настроено всё по инструкции, как написали выше, то проблем быть не должно. И покажите вызовы сниппетов и чанки форм на всякий случай.
      Евгений Лазарев
      30 января 2020, 19:51
      0
      {if $type?}
          {switch $type}
          	{case 'blue'}
          	    {var $conf = [
          	        'subject' => 'Заявка '~$_modx->config.site_name,
          	        'tpl' => 'tplBlueForm',
          	        'action' => 'blue_feedback'
          	    ]}
          	{case 'green'}
          	    {var $conf = [
          	        'subject' => 'Вопрос '~$_modx->config.site_name,
          	        'tpl' => 'tplGreenForm',
          	        'action' => 'green_feedback'
          	    ]}
          	{case 'popup'}
          	    {var $conf = [
          	        'subject' => 'Связаться с нами '~$_modx->config.site_name,
          	        'tpl' => 'tplPopupForm',
          	        'validate' => 'name:required,phone:required,email:email,form:required,g-recaptcha-response:required',
          	        'action' => 'fb-popup'
          	    ]}
          {/switch}
          {if !$conf.validate?}
              {var $conf.validate = 'name:required,phone:required,comment:required,email:email,form:required,g-recaptcha-response:required'}
          {/if}
          {$_modx->runSnippet('!AjaxForm', [
          	'snippet' => 'FormIt',
          	'validationErrorMessage' => 'В форме содержатся ошибки!',
          	'successMessage' => 'Спасибо за обращение, наш менеджер свяжется с Вами в ближайшее время',
          	'hooks' => 'rcv3,email',
          	'emailSubject' => $conf.subject,
          	'emailFromName' => $_modx->config.site_name,
          	'emailFrom' => $_modx->config.org_noreply,
          	'emailTo' => $_modx->config.org_email,
          	'emailTpl' => 'tplFormitEmail',
          	'form' => $conf.tpl,
          	'validate' => $conf.validate,
          	'rcv3Action' => $conf.action,
          	'titleForm' => $title
          ])}
      {/if}
        Андрей
        30 января 2020, 23:29
        0
        Вроде как всё должно работать. Единственное что можно попробовать убрать из validate:
        g-recaptcha-response:required
        Здесь это не нужно
        Евгений Лазарев
        30 января 2020, 19:52
        0
        {var $title = $titleForm ? $titleForm : 'Оформите заявку на Бесплатные тестовые образцы продукции'}
        <form class="reionbm">
            <div>
                <h3 class="iijgpnomn489b">{$title}</h3>
                <div class="yeuongmnm">
                    <div>
                        <div>
                            <input type="text" name="name" placeholder="Имя*" required>
                        </div>
                        <div class="otstp"></div>
                        <div>
                            <input type="text" name="phone" placeholder="Телефон*" required>
                        </div>
                        <div class="otstp"></div>
                        <div>
                            <input type="text" name="email" placeholder="E-mail*">
                        </div>
                        <input type="hidden" name="form" value="{$title}" />
                    </div>
                    <div>
                        <textarea name="comment" required placeholder="Напишите, какие образцы и в каком количестве Вы хотели бы получить, а так же Ваши контактные данные для организации доставки образцов."></textarea>
                    </div>
                </div>
                <div class="regu3hb">
                    <button type="submit" class="ryuihgmv" onclick="checkForm(this);">Отправить заявку</button>
                </div>
                <div class="kgire9j0m">
                    <div class="squaredThree">
                        <input type="checkbox" class="gnrji08bxz" id="squaredThree5hfh5" name="check" onclick="checkCheck($(this));">
                        <label for="squaredThree5hfh5"></label>
                    </div>
                    <a href="/politika-konfidenczialnosti.html" target="_blank">Политика конфиденциальности</a>
                </div>
                {'!rcv3_html' | snippet : [
                    'action' => $rcv3Action,
                    'error' => $_modx->getPlaceholder('fi.error.g-recaptcha-response'),
                ]}
                <div class="message"></div>
            </div>
        </form>
        Это первая tpl
          Евгений Лазарев
          30 января 2020, 23:39
          0
          Просто не совсем понятно, может что-то я не понимаю. Ты обычный пользователь заходишь и хочешь отправить форму, твой score не набрал например нужный 0.7 — и все, ты бот. И это никак не оспорить. Хоть всплывающий тест бы был.
          Александр Мельник
          30 января 2020, 22:44
          0
          Не очень в тему, но добавлю от себя про reCaptcha 3, недавно просто обнаружил.
          Заметил, что формы, защищенные рекапчей 3, а именно если внутри идет вызов сниппета
          {'!rcv3_html' | snippet : [
                      'action' => $rcv3Action,
                      'error' => $_modx->getPlaceholder('fi.error.g-recaptcha-response'),
                  ]}
          которые обязательно нужно вызывать по инструкции, приводит просто к катастрофической просадке, если проверять сайт в google page speed.
          На сайте 5 форм с защитой — для мобильного показывает 30 баллов.
          Оставляю только одну с защитой, с остальных просто убираю вызов сниппета в форме — 60 баллов.
          Отключаю совсем защиты во всех формах — 98 баллов.
            Scorp Satex
            31 января 2020, 15:20
            0
            Поддерживаю. Может автор плагина @Игорь Терентьев пояснит зачем так?

            5 форм — 5 раз вызывается скрипты каптчи. Может это можно как-то исправить?

            Мне тоже потом прилетает от SEOшников. :)
              Игорь Терентьев
              02 февраля 2020, 15:44
              0
              Всем привет, пока что нет времени заняться компонентом.
              Примерно представляю, как решить проблему с тормозами при использовании нескольких форм на странице — выставлять плэйсхолдер в сниппете и проверять на пустоту.
                Aleksandr Huz
                03 февраля 2020, 17:15
                0
                А можно просто принять мой PR
            Aleksandr Huz
            03 февраля 2020, 17:29
            0
            Попробуйте заменить содержимое сниппета rcv3_html на это и сравните разницу.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          13