Jump to content
View in the app

A better way to browse. Learn more.

IPBMafia.ru - поддержка Invision Community, релизы, темы, плагины и приложения

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Featured Replies

Posted
{{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
 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.