天涯论坛

 找回密码
 立即注册
搜索
查看: 23|回复: 5

PHP判断拜访者是不是百度蜘蛛的几种办法

[复制链接]

3030

主题

312

回帖

9909万

积分

论坛元老

Rank: 8Rank: 8

积分
99099086
发表于 2024-8-25 17:12:31 | 显示全部楼层 |阅读模式

php怎样判断来访者是不是真正的百度蜘蛛?有一种完美一点的处理方法。要判断来访者是不是是真正的百度蜘蛛,本文为打算采用三种办法处理这个问题!

1. User-Agent(用户代理)办法

在HTTP请求头中,每一个浏览器或爬虫都会运用一个User-Agent标识自己。百度蜘蛛的User-Agent一般包含"baidu"关键字。因此呢,你能够获取来访者的User-Agent,而后检测是不是包括"baidu"关键字来判断是不是为百度蜘蛛。

示例代码:

if(strpos($_SERVER[HTTP_USER_AGENT], baidu) !== false) {

    // 是百度蜘蛛

} else {

// 不是百度蜘蛛

}

2. IP位置办法

百度蜘蛛拜访网站时会运用固定的IP位置(例如180.76.15.0/24)。因此呢,你能够获取来访者的IP位置而后将其与百度蜘蛛的IP位置进行比较,倘若匹配成功,则暗示来访者是百度蜘蛛。当然这一步,你需要收集所有百度颁布的IP位置才可够准确识别。倘若你收集的百度蜘蛛的IP位置比较准确全面,那样便是一个比较准确的办法

示例代码:

$visitor_ip = $_SERVER[REMOTE_ADDR];

if(preg_match(/^180\.76\.15\.[0-9]{1,3}$/, $visitor_ip)) {

    // 是百度蜘蛛

} else {

    // 不是百度蜘蛛

}

3. Reverse DNS(反向DNS)办法

百度蜘蛛拜访网站时其DNS解析一般会反向解析为以".baidu.com"结尾的域名。因此呢,你能够获取来访者的IP位置而后将其反向解析为域名,再检测解析得到的域名是不是以".baidu.com"结尾,从而判断是不是为百度蜘蛛。

示例代码:

$visitor_ip = $_SERVER[REMOTE_ADDR];

$visitor_domain = gethostbyaddr($visitor_ip);

if(substr($visitor_domain, -10) === .baidu.com) {

    // 是百度蜘蛛

} else {

    // 不是百度蜘蛛

}

4. 综合手段判断

以上办法不可完全保准判断准确,由于用户能够伪造User-Agent、IP位置和DNS解析结果。但结合运用这些办法能够过滤掉大部分非真实的百度蜘蛛拜访。当对来访者进行判断时,综合运用User-Agent和反向DNS办法能够加强判断准确率。以下是一个综合运用这两种办法的示例代码:

$visitor_user_agent = $_SERVER[HTTP_USER_AGENT];

$visitor_ip = $_SERVER[REMOTE_ADDR];

$is_baidu_spider = false;

// 检测User-Agent中是不是包括"baidu"关键字

if(strpos($visitor_user_agent, baidu) !== false) {

    $is_baidu_spider = true;

}

// 检测反向解析得到的域名是不是以".baidu.com"结尾

if(!$is_baidu_spider) {

$visitor_domain = gethostbyaddr($visitor_ip);

    if(substr($visitor_domain, -10) === .baidu.com) {

        $is_baidu_spider = true;

    }

}

if($is_baidu_spider) {

    // 是百度蜘蛛

} else {

    // 不是百度蜘蛛

}

以上代码中,首要检测User-Agent是不是包含"baidu"关键字,倘若包括则将$is_baidu_spider设置为true。而后经过反向DNS办法获取来访者的域名,再检测域名是不是以".baidu.com"结尾,倘若是则将$is_baidu_spider设置为true。最后,按照$is_baidu_spider的值来判断是不是为百度蜘蛛。

综合运用User-Agent和反向DNS办法能够经过两个方面的判断来加强准确率。然而,仍然没法保准100%准确,由于用户能够伪造User-Agent和DNS解析结果。为了进一步加强准确率,能够结合其他办法,如IP位置办法,进行更全面的综合判断。这儿为何运用IP位置来判断,由于倘若你的收集的百度蜘蛛的IP位置够全够准确,其实运用第二种办法的准确率已然高过于其他的办法了。咱们为了供给准确度、能够借用第三方库!经过综合手段来增多识别能力!





上一篇:Sitemap的重要性
下一篇:为么原创内容百度不收录?
回复

使用道具 举报

3133

主题

2万

回帖

9996万

积分

论坛元老

Rank: 8Rank: 8

积分
99968644
发表于 2024-10-3 01:33:14 | 显示全部楼层
期待你更多的精彩评论,一起交流学习。
回复

使用道具 举报

3133

主题

2万

回帖

9996万

积分

论坛元老

Rank: 8Rank: 8

积分
99968644
发表于 2024-10-7 17:37:33 | 显示全部楼层
楼主果然英明!不得不赞美你一下!
回复

使用道具 举报

3087

主题

2万

回帖

9909万

积分

论坛元老

Rank: 8Rank: 8

积分
99098778
发表于 2024-10-19 12:25:07 | 显示全部楼层
交流如星光璀璨,点亮思想夜空。
回复

使用道具 举报

3043

主题

2万

回帖

9606万

积分

论坛元老

Rank: 8Rank: 8

积分
96065868
发表于 2024-10-28 12:07:53 | 显示全部楼层
你的见解独到,让我受益匪浅,期待更多交流。
回复

使用道具 举报

3045

主题

2万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99109052
发表于 2024-11-8 23:25:09 | 显示全部楼层
楼主果然英明!不得不赞美你一下!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|天涯论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-22 14:01 , Processed in 0.162606 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.