Classes

File phpboost/stats/Robots.class.php

File phpboost/stats/Robots.class.php

  1:   2:   3:   4:   5:   6:   7:   8:   9:  10:  11:  12:  13:  14:  15:  16:  17:  18:  19:  20:  21:  22:  23:  24:  25:  26:  27:  28:  29:  30:  31:  32:  33:  34:  35:  36:  37:  38:  39:  40:  41:  42:  43:  44:  45:  46:  47:  48:  49:  50:  51:  52:  53:  54:  55:  56:  57:  58:  59:  60:  61:  62:  63:  64:  65:  66:  67:  68:  69:  70:  71:  72:  73:  74:  75:  76:  77:  78:  79:  80:  81:  82:  83:  84:  85:  86:  87:  88:  89:  90:  91:  92:  93:  94:  95:  96:  97:  98:  99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 
<?php
/**
 * @package     PHPBoost
 * @subpackage  Stats
 * @copyright   &copy; 2005-2019 PHPBoost
 * @license     https://www.gnu.org/licenses/gpl-3.0.html GNU/GPL-3.0
 * @author      Kevin MASSY <reidlos@phpboost.com>
 * @version     PHPBoost 5.2 - last update: 2018 11 22
 * @since       PHPBoost 4.0 - 2013 01 06
 * @contributor Julien BRISWALTER <j1.seth@phpboost.com>
 * @contributor Arnaud GENET <elenwii@phpboost.com>
 * @contributor mipel <mipel@phpboost.com>
*/

class Robots
{
    public static function is_robot()
    {
        return self::get_current_robot_name() !== null;
    }

    public static function get_current_robot_name()
    {
        $user_agent = AppContext::get_request()->get_user_agent();

        if (!empty($user_agent))
        {
            foreach (self::get_robots_list() as $robot)
            {
                if (TextHelper::stripos($user_agent, $robot) !== false)
                    return $robot;
            }
            if (preg_match('`(http:\/\/|bot|spider|crawl)+`iu', $user_agent))
            {
                return 'unknow_bot';
            }
        }

        return null;
    }

    // Robots list from https://udger.com/resources/ua-list/crawlers?c=1
    private static function get_robots_list()
    {
        return array(
            'Googlebot',
            'Bingbot',
            'Yahoo',
            'DuckDuckBot',
            'Baiduspider',
            'YandexBot',
            'Sogou',
            'Exabot',
            'Exalead',
            'Facebot',
            'Qwantify',
            'Applebot',
            '13TABS',
            '360Spider',
            'AntBot',
            'Apexoo Spider',
            'Barkrowler',
            'BehloolBot',
            'CarianBot',
            'Cliqzbot',
            'coccocbot',
            'Daumoa',
            'DeuSu',
            'Elefent',
            'exif-search',
            'Findxbot',
            'Gigabot',
            'glindahl-cocrawler',
            'Gowikibot',
            'IstellaBot',
            'KD Bot',
            'KOCMOHABT bot',
            'Laserlikebot',
            'LetsearchBot',
            'Mail.Ru bot',
            'MojeekBot',
            'NaverBot',
            'omgilibot',
            'parsijoo-bot',
            'Plukkie',
            'psbot',
            'Seekport Crawler',
            'SeznamBot',
            'SnowHaze SearcH',
            'SOLOFIELD bot',
            'Sosospider',
            'TarmotGezgin',
            'TeeRaidBot',
            'TinEye',
            'Toweyabot',
            'UptimeRobot',
            'vebidoobot',
            'WBSearchBot',
            'Wotbox',
            'yacybot',
            'YioopBot',
            'YisouSpider',
            'Yooo bot',
            'yoozBot'
        );
    }
}
?>