
CrawlerDetect
Определение веб-краулеров по User-Agent и защита форм от спама без CAPTCHA


PreHook для FormIt: блокирует отправку формы, если запрос пришёл от бота (по User-Agent). Форма не валидируется и не обрабатывается дальше; пользователю показывается сообщение из настройки.
Использование: добавьте crawlerDetectBlock в параметр preHooks вызова FormIt.
Если у вас уже есть другие preHooks, перечислите их через запятую: crawlerDetectBlock,другойХук.
crawlerDetectBlock до валидации и отправки.crawlerdetect_block_message.Текст настраивается в Системные настройки → crawlerdetect_block_message. По умолчанию: «Не удалось отправить форму. Попробуйте позже.»
Вывод в шаблоне формы — через плейсхолдер FormIt:
[[+fi.validation_error_message]]{$modx->getPlaceholder('fi.validation_error_message')}[[!FormIt?
&preHooks=`crawlerDetectBlock`
&hooks=`email,redirect`
]]
[[+fi.validation_error_message]]
<form method="post">...</form>{$modx->runSnippet('FormIt', [
'preHooks' => 'crawlerDetectBlock',
'hooks' => 'email,redirect'
])}
{if $modx->getPlaceholder('fi.validation_error_message')}
<div class="error">{$modx->getPlaceholder('fi.validation_error_message')}</div>
{/if}
<form method="post">...</form>&preHooks=`crawlerDetectBlock,recaptcha`'preHooks' => 'crawlerDetectBlock,recaptcha'CrawlerDetect сработает первым и отсечёт ботов до CAPTCHA.
crawlerDetectBlock в preHooks FormIt на этой странице. При блокировке ботом FetchIt получит ответ с ошибкой и покажет сообщение из настроек CrawlerDetect.si_path_to_presets). Добавьте в пресет 'preHooks' => 'crawlerDetectBlock'. При блокировке ботом SendIt вернёт ошибку и покажет сообщение из настроек CrawlerDetect. Подробнее: Интеграция → SendIt.crawlerDetectBlock в preHooks FormIt — защита будет работать.