通过机器人访问网站,但仅在浏览器/人员设置变量之后

时间:2009-10-16 08:18:14

标签: php browser seo bots

我们正在使用Drupal在啤酒厂的网站上工作。由于18岁以下的未成年人不允许查看该网站,所以访问的任何页面都通过模块(legalage)传递,如果用户点击“继续”以确认他/她的年龄超过18岁,则该网站会向用户显示将法定年龄保持为真。

问题是当搜索引擎机器人访问页面时,它们也会被重定向到法定年龄验证页面。我尝试使用以下脚本来确定PHP中的bot或浏览器:

$agent = $_SERVER['HTTP_USER_AGENT'];
if(( eregi("bot", $agent) || eregi("slurp", $agent) )) {

$_SESSION['legalage'] = true;
drupal_goto($_REQUEST['destination']); 

$_SESSION['legalage'] = true; drupal_goto($_REQUEST['destination']);

但它似乎不起作用。如果有人可以建议我如何处理这个问题,以便浏览器/人类必须通过年龄要求继续的事情和机器人可以直接访问内容。提前谢谢。

4 个答案:

答案 0 :(得分:4)

存储会话数据通常需要客户端上的cookie。如果机器人不接受cookie,它将无法工作。 (除非您启用use_trans_sid,这将为每个URL添加会话ID查询字符串。)

尝试对执行重定向的代码执行用户代理检查,然后再回到年龄验证页面。

顺便说一句,不要使用eregi - 它已被弃用。请改用perl兼容的正则表达式函数。

答案 1 :(得分:1)

一种可能性可能是放置javascript重定向而不是标题重定向..机器人将无法处理它并且正常的ppl将被重定向..但是总会有一组ppl将hava javascript禁用..但是这个群体很小,一般都超过18岁。)

答案 2 :(得分:1)

你的逻辑是正确的。但我不确定机器人是否接受并回应会话cookie。我建议在内部的页面上需要$ _SESSION ['legalage'] = true;你还要为机器人添加代码来忽略这个逻辑。

仅供参考,Google网站管理员工具添加了一个方便的新功能,可以显示服务器在Google bot访问时发送的实际内容。继续使用它!

答案 3 :(得分:0)

检测机器人/蜘蛛/爬行器并不是一门精确的科学我有一个过去曾使用的PHP数组,并针对用户代理进行了检查。该阵列包含大多数(如果不是全部)您希望访问您网站的主要蜘蛛/爬虫。你会感兴趣吗?或者你在寻找别的东西吗?