2

ページがボットによって訪問されたかどうかを検出する方法はありますか?

$_SERVER['HTTP_USER_AGENT']が配列内にあるかどうかを確認してみました。それは正常に動作します。

$bot = array("Slurp", "Scooter", "URL_Spider_SQL", "Googlebot", "Firefly", "WebBug", "WebFindBot", "crawler",  "appie", "msnbot", "InfoSeek", "FAST", "Spade", "NationalDirectory",);

if (in_array($_SERVER['HTTP_USER_AGENT'], $bot)) {
    return true;
}
else {
return false;
}

これを行うためのより良い安全な方法はありますか? (すべてのボット名を入力する必要がある以外は?)私の方法とこれの違いは何ですか?

4

2 に答える 2

2

さて、Google内を掘り下げた後、これを見つけました。

$agent = strpos(strtolower($_SERVER['HTTP_USER_AGENT']));
foreach($bots as $name => $bot)
{
    if(stripos($agent,$bot)!==false)
    {
        return true;
    }
    else {
        return false;
    }
}

デール応援ありがとう!!

于 2012-11-30T10:46:42.853 に答える
0

シドの答えを見て、グーグルでこのサイトで別の検出方法を見つけました。見る:

function detect_is_bot () {
    $bots = array("Slurp", "Scooter", "URL_Spider_SQL", "Googlebot", "Firefly", "WebBug", "WebFindBot", "crawler",  "appie", "msnbot", "InfoSeek", "FAST", "Spade", "NationalDirectory",);
    $agent = strtolower($_SERVER['HTTP_USER_AGENT']);
    foreach($bots as $bot) {
        if(stripos($agent,$bot)!==false) {return true;}
    }
    return false;
}
于 2013-09-16T22:37:31.683 に答える