服务器端如何判断访问来自用户还是搜索引擎的蜘蛛

服务器端如何判断访问来自用户还是搜索引擎的蜘蛛

 

一般都是通过检测

$_SERVER['HTTP_USER_AGENT']

的值来判断,如果是普通用户,这个值就是用户所用的浏览器的名字如:

Mozilla之类的

如果是百度爬虫,那么这个值是

Baiduspider

 

所以我们代码可以这样来判断,假设是php

function is_crawler() {
    $userAgent = strtolower($_SERVER[‘HTTP_USER_AGENT’]);
    $spiders = array(
        'Googlebot', // Google 爬虫
        'Baiduspider', // 百度爬虫
        'Yahoo! Slurp', // 雅虎爬虫
        'YodaoBot', // 有道爬虫
        'msnbot' // Bing爬虫
        。。。// 更多爬虫关键字
    );
    foreach ($spiders as $spider) {
        $spider = strtolower($spider);
        if (strpos($userAgent, $spider) !== false) {
            return true;
        }
    }
    return false;
}

 

通过上面的函数的返回值可以判断,你可以更改上面的函数直接打印出爬虫的名字,这个你自己实现。

 

我们知道

HTTP_USER_AGENT

只不过是http request header的一个值,那么很容易改写它,从而来伪装是搜索引擎的爬虫。那么我们怎么来检测呢?有办法,就是域名反查工具

nslookup

这是linux的一个命令工具,后面跟ip地址,就会打印出域名

nslookup xxx.xxx.xxx.xxx

如果结果含有baidu之类的字样,就是百度的爬虫了。

版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.

    分享到:

4 Replies to “服务器端如何判断访问来自用户还是搜索引擎的蜘蛛”

留言

你的邮箱是保密的 必填的信息用*表示