首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php爬虫检测

php爬虫检测
EN

Stack Overflow用户
提问于 2009-07-24 09:57:04
回答 2查看 3.2K关注 0票数 2

我正在尝试编写一个sitemap.php,它根据查看对象的不同而执行不同的操作。

我想将爬虫重定向到我的sitemap.xml,因为这将是最新的页面,并将包含他们需要的所有信息,但我希望我的老读者在php页面上显示一个html站点地图。

这一切都是在php头中控制的,我在网上发现了this code,从外观上看,它应该可以工作,但事实并非如此。有人能帮我破解这个吗?

代码语言:javascript
复制
function getIsCrawler($userAgent) {
    $crawlers = 'firefox|Google|msnbot|Rambler|Yahoo|AbachoBOT|accoona|' .
    'AcioRobot|ASPSeek|CocoCrawler|Dumbot|FAST-WebCrawler|' .
    'GeonaBot|Gigabot|Lycos|MSRBOT|Scooter|AltaVista|IDBot|eStyle|Scrubby';
    $isCrawler = (preg_match("/$crawlers/i", $userAgent) > 0);
    return $isCrawler;
}

$iscrawler = getIsCrawler($_SERVER['HTTP_USER_AGENT']);

if ($isCrawler) {
    header('Location: http://www.website.com/sitemap.xml');
    exit;
} else {
    echo "not crawler!";
}

它看起来很简单,但正如您所看到的,我已经将firefox添加到代理列表中,并且确实没有被重定向。

感谢您的帮助:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-24 10:02:38

您的代码中有一个错误:

代码语言:javascript
复制
$crawler = getIsCrawler($_SERVER['HTTP_USER_AGENT']);

应该是

代码语言:javascript
复制
$isCrawler = getIsCrawler($_SERVER['HTTP_USER_AGENT']);

如果你在开发的时候注意到了,你会更容易捕捉到这些错误。

此外,您可能想要在header之后执行exit

警告:伪装可能会给搜索提供商带来麻烦。This article解释了其中的原因。

票数 11
EN

Stack Overflow用户

发布于 2009-07-24 10:06:08

http://develobert.blogspot.com/2008/11/php-robot-check.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1176727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档