
CrawlerDetect
Определение ботов по заголовкам запроса и защита форм от спама без CAPTCHA
- MODX 3
- PHP 8.2


Определяет, бот ли посетитель. Без &userAgent библиотека склеивает заголовки JayBizzle: HTTP_USER_AGENT, HTTP_FROM, HTTP_SEC_CH_UA и остальные из её списка.
Возвращает: "1" (бот) или "0" (не бот).
Вызывайте без кэша: [[!isCrawler]] (MODX) или $modx->runSnippet('isCrawler', []) (Fenom). Иначе результат общий для всех посетителей.
| Параметр | Описание | По умолчанию |
|---|---|---|
| userAgent | Явная строка. Пусто: заголовки JayBizzle из запроса | — |
| placeholderPrefix | Префикс плейсхолдера для имени обнаруженного бота | crawlerdetect. |
При обнаружении бота в плейсхолдер crawlerdetect.matches (или с вашим префиксом) записывается имя бота, например Googlebot. Нужно для отладки.
[[!isCrawler:eq=`0`:then=`[[$chatWidget]]`]]{if $modx->runSnippet('isCrawler', []) == '0'}
{$modx->getChunk('chatWidget')}
{/if}[[!isCrawler:eq=`0`:then=`[[$googleAnalytics]]`]]{if $modx->runSnippet('isCrawler', []) == '0'}
{$modx->getChunk('googleAnalytics')}
{/if}[[!isCrawler:eq=`0`:then=`[[$fullContent]]`:else=`[[$liteContent]]`]]{set $isBot = $modx->runSnippet('isCrawler', [])}
{if $isBot == '0'}
{$modx->getChunk('fullContent')}
{else}
{$modx->getChunk('liteContent')}
{/if}[[!isCrawler]]
[[+crawlerdetect.matches]]{$modx->runSnippet('isCrawler', [])}
{if $modx->getPlaceholder('crawlerdetect.matches')}
Бот: {$modx->getPlaceholder('crawlerdetect.matches')}
{/if}