+
95
-

回答

<?php
class RequestTypeDetector {
    public function detectRequestType() {
        $userAgent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
        $isAjax = isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest';

        // 检查是否是AJAX请求
        if ($isAjax) {
            return 'AJAX Request';
        }

        // 检查是否是搜索引擎爬虫请求
        if ($this->isSearchEngineBot($userAgent)) {
            return 'Search Engine Bot';
        }

        // 检查是否是正常的浏览器请求
        if ($this->isBrowserRequest($userAgent)) {
            return 'Browser Request';
        }

        // 其他请求
        return 'Other Request';
    }

    private function isSearchEngineBot($userAgent) {
        // 常见搜索引擎User-Agent关键字
        $bots = [
            'googlebot', 'bingbot', 'slurp', 'duckduckbot', 'baiduspider', 'yandexbot', 'sogou', 'exabot', 'facebot', 'ia_archiver'
        ];

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

        return false;
    }

    private function isBrowserRequest($userAgent) {
        // 常见浏览器User-Agent关键字
        $browsers = [
            'mozilla', 'chrome', 'safari', 'firefox', 'opera', 'edge', 'trident'
        ];

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

        return false;
    }
}

// 示例使用
$detector = new RequestTypeDetector();
$requestType = $detector->detectRequestType();
echo "请求类型: " . $requestType;

网友回复

我知道答案,我要回答