×

seo php

最新php精准判断百度搜索引擎蜘蛛方法

刘二手 刘二手 发表于2025-04-29 06:01:13 浏览37 评论0

抢沙发发表评论

<?php
//定义当前php文件编码为utf-8防止乱码
header("Content-type:text/html;charset=utf-8");
//获取用户访问的header头里的UA标识
$userAgent = $_SERVER['HTTP_USER_AGENT'];
//获取用户ip
$ip = $_SERVER['REMOTE_ADDR'];
//根据IP地址获取主机域名
 $hostname = gethostbyaddr($ip);
//判断ip主机名是否为百度的,根据百度官方提供的主机域名说明,非baidu.com和baidu.jp的均为伪造不过baidu.jp是海外的所以下面不考虑
if (strpos($hostname, "baidu.com")==false) {
    //不是百度的就把UA就设定为null
    $userAgent=null;
}
//过滤掉UA里的所有空格,确保switch的准确性,因为有的ua可能带多个空格
$userAgent = preg_replace('/\s+/', '', $userAgent);
//拿UA标识判断是否是百度蜘蛛的
switch ($userAgent) {
    //百度移动蜘蛛
    case "Mozilla/5.0(Linux;u;Android4.2.2;zh-cn;)AppleWebKit/534.46(KHTML,likeGecko)Version/5.1MobileSafari/10600.6.3(compatible;Baiduspider/2.0;+http://www.baidu.com/search/spider.html)":
            $SpiderName="百度移动蜘蛛";
        // break为如果存在就跳出switch
        break;
    //百度移动副蜘蛛
        case "Mozilla/5.0(iPhone;CPUiPhoneOS9_1likeMacOSX)AppleWebKit/601.1.46(KHTML,likeGecko)Version/9.0Mobile/13B143Safari/601.1(compatible;Baiduspider-render/2.0;+http://www.baidu.com/search/spider.html)":
                        $SpiderName="百度移动副蜘蛛";
                // break为如果存在就跳出switch
                break;
    //百度PC蜘蛛
    case "Mozilla/5.0(compatible;Baiduspider/2.0;+http://www.baidu.com/search/spider.html)":
            $SpiderName="百度PC蜘蛛";
        // break为如果存在就跳出switch
        break;
    //百度PC副蜘蛛
    case "Mozilla/5.0(compatible;Baiduspider-render/2.0;+http://www.baidu.com/search/spider.html)":
            $SpiderName="百度PC副蜘蛛";
        // break为如果存在就跳出switch
        break;
    //百度小程序蜘蛛
    case "Mozilla/5.0(iPhone;CPUiPhoneOS9_1likeMacOSX)AppleWebKit/601.1.46(KHTML,likeGecko)Version/9.0Mobile/13B143Safari/601.1(compatible;Baiduspider-render/2.0;Smartapp;+http://www.baidu.com/search/spider.html)":
            $SpiderName="百度小程序蜘蛛";
        // break为如果存在就跳出switch
        break;
    default:
        // 如果UA没有匹配到就设置默认值
            $SpiderName="非百度蜘蛛";
}
//输出当前结果
echo  $SpiderName;
?>


群贤毕至

访客