Перейти к содержанию

Условие при котором узнаем, бот или реальный посетитель


Рекомендуемые сообщения

{{if }} 

{{endif}}

Как в шаблонных условиях прописать, узнать является текущий посетитель поисковым ботом или нет. Вроде в php есть функция useragent, по которой возможно узнать браузер и тп. И если в строчке присутствует 'bot'. То есть если есть вхождения, тогда в данный момент возможно узнать что текущую страницу подгрузил бот.

Ссылка на комментарий
Поделиться на другие сайты

В режиме разработчика в плагинах создаем такой хук не шаблона (не помню как он называется) и выбираем там класс \IPS\core\modules\front\system\plugins

В этом хуке создаем метод класса:

public function isBot() {
	$userAgent = $_SERVER['HTTP_USER_AGENT'];
    $bots = [
        'Googlebot',
        'Bingbot',
        'Slurp',
        'DuckDuckBot',
        'Baiduspider',
        'YandexBot',
        'Sogou',
        'Exabot',
        'facebot',
        'ia_archiver',
        'Twitterbot',
        'facebookexternalhit',
        // Добавьте другие строки, которые могут быть в юзер-агентах ботов
    ];

    foreach ($bots as $bot) {
        if (stripos($userAgent, $bot) !== false) {
            return true;
        }
    }

    return false;
}

public function getBotName() {
	// добавьте тут вывод имени поискового бота по аналогии с методом выше
	return $bot;
}

 

В шаблоне:
 

{{$plugins = new \IPS\core\modules\front\system\plugins;}}                     
{{if ($plugins->isBot())}} 
	<p>Это бот: {{$plugins->getBotName();}}</p>
{{endif}}

 

Ссылка на комментарий
Поделиться на другие сайты

7 часов назад, Zuldek199 сказал:

И если в строчке присутствует 'bot'

а вот насчет этого хочу предупредить.

Любой пользователь может писать в юзер агент все что угодно. В том числе html и js код. Поэтому не должно быть никаких проверок на bot и прочих универсальных решений. Все боты должны быть четко прописаны и все имена ботов для вывода на страницу должны быть храниться на сервере.

Если найдено совпадение в юзерагенте - вывести имя бота из своего списка. Строки и подстроки из юзерагента выводить категорически запрещено.

Даже если вы запретите спецсимволы чтобы предотвратить вывод кода, посетитель может засунуть туда просто 100500 символов и они отобразятся на странице.

Ссылка на комментарий
Поделиться на другие сайты

17 часов назад, Zuldek199 сказал:
{{if }} 

{{endif}}

Как в шаблонных условиях прописать, узнать является текущий посетитель поисковым ботом или нет. Вроде в php есть функция useragent, по которой возможно узнать браузер и тп. И если в строчке присутствует 'bot'. То есть если есть вхождения, тогда в данный момент возможно узнать что текущую страницу подгрузил бот.

самый простой вариант методом ips

{{if \IPS\Http\UserAgent::parse()->spider}}
ты спидер
{{endif}}

но там мало ботов, для добавления регулярок нужно расширять $searchEngineUseragents в \IPS\Http\UserAgent
 

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...