Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多语言网站-如何检测机器人/蜘蛛?_Php - Fatal编程技术网

Php 多语言网站-如何检测机器人/蜘蛛?

Php 多语言网站-如何检测机器人/蜘蛛?,php,Php,我的网站会根据用户浏览器的语言更改语言。我想在英语网站(比如twitter)上向所有的Spinders/Bot开放。什么是蜘蛛/机器人的HTTP_接受_语言?如何检测bot/spider以将文件翻译包含在英语中?我见过列出蜘蛛/机器人的方法,但我觉得它不令人满意。您有更好的解决方案吗?您可以这样做: function isSpider() { $spiders = array("googlebot","WebCrawler","Slurp","msn", "VoilaBot", "Fur

我的网站会根据用户浏览器的语言更改语言。我想在英语网站(比如twitter)上向所有的Spinders/Bot开放。什么是蜘蛛/机器人的HTTP_接受_语言?如何检测bot/spider以将文件翻译包含在英语中?我见过列出蜘蛛/机器人的方法,但我觉得它不令人满意。您有更好的解决方案吗?

您可以这样做:

function isSpider()
{
    $spiders = array("googlebot","WebCrawler","Slurp","msn", "VoilaBot", "FurlBot", "NaverBot", "MMCrawler");
    $spider_count = 0;
    foreach($spiders as $Val) {
        if (preg_match("/$Val/i", getenv("HTTP_USER_AGENT"))) {
            $spider_count++;
        }
    }
    if ($spider_count!= "0") {
        return true;
    }
        else
        {
            return false;
        }
}
if (isSpider())
{
        // Set the language to English
}
您可以在此处找到bot名称列表:


这假设bot设置了用户代理,这对于搜索引擎爬虫来说是一个有效的假设。

如果未设置HTTP\u ACCEPT\u语言,会发生什么情况?如果未设置HTTP\u ACCEPT\u语言或未翻译HTTP\u ACCEPT\u语言,则翻译将包含在英语中。由于bot不发布语言,站点是否自动翻译为英语?正确,bot将看到“默认”版本无需,bot不发送语言标题,因此将对站点的默认版本进行爬网