所以我建立了一个年龄验证页面,阻止爬虫进入主站点。但是,我添加了一些代码,如果没有为他们设置 cookie,应该允许爬虫通过而不是普通用户。但是它似乎不起作用,facebook 只是被重定向,我需要打开图形信息。我转到调试器并输入站点的 url,它只显示 facebook 爬虫被重定向。以下代码验证根本不起作用,例如,当我将浏览会话更改为 googlebot 时,它会被重定向。
<?php
if (!in_array($_SERVER['HTTP_USER_AGENT'], array(
'facebookexternalhit/1.0 (+https://www.facebook.com/externalhit_uatext.php)',
'facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)',
'Googlebot/2.1 (+http://www.googlebot.com/bot.html)',
'Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)',
'msnbot/2.0b (+http://search.msn.com/msnbot.htm)'
))) {
if(!isset($_COOKIE['legal'])) {
header("Location: verify.php");
}
if($_COOKIE['legal'] == "no") {
header("Location: http://www.centurycouncil.org/");
}
}
?>
下面的代码适用于 googlebot 和其他搜索爬虫,但不适用于 facebook。如果 facebooks 试图抓取,facebook 就会被重定向。
<?php
if((!strpos($_SERVER['HTTP_USER_AGENT'], "Googlebot")) && (!strpos($_SERVER['HTTP_USER_AGENT'], "bingbot")) && (!strpos($_SERVER['HTTP_USER_AGENT'], "Yahoo! Slurp")) && (!strpos($_SERVER['HTTP_USER_AGENT'], "facebookexternalhit")))
{
if(!isset($_COOKIE['legal'])) {
header("Location: verify.php");
}
if($_COOKIE['legal'] == "no") {
header("Location: http://www.centurycouncil.org/");
}
}
?>