【问题标题】:Access a website by a bot but only after setting a variable by a browser/human通过机器人访问网站,但只有在浏览器/人设置变量之后
【发布时间】:2010-12-07 07:11:49
【问题描述】:

我们正在使用 Drupal 开发一家啤酒厂的网站。由于未满 18 岁的未成年人不得浏览本网站,因此访问的任何页面都会通过一个模块(法律),如果用户单击“继续”以确认其年龄超过 18 岁,则该网站将显示给用户将法定年龄保存为真实。

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

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

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

}

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

【问题讨论】:

  • 我不知道 Drupal 可以生产啤酒!
  • @Greg 我也没有,我想是时候切换我的网络 CMS。

标签: php browser seo bots


【解决方案1】:

检测 bots/spider/crawlers 不是一门精确的科学我有一个 PHP 数组,我过去使用过它并针对用户代理进行了检查。该数组包含大多数(如果不是全部)您想让访问您的站点的主要蜘蛛/爬虫。你会对此感兴趣吗?还是您在寻找其他东西?

【讨论】:

  • 这会很有趣,如果你能分享我会很高兴。
【解决方案2】:

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

尝试围绕执行重定向回年龄验证页面的代码而不是年龄验证页面本身进行用户代理检查。

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

【讨论】:

    【解决方案3】:

    一种可能性可能是放置 javascript 重定向而不是标头重定向 .. 机器人将无法处理它,并且正常的 ppl 将被重定向 .. 但是总会有一群 ppl 将禁用 javascript .. . 但那群人会很小,通常超过 18 岁 :)

    【讨论】:

      【解决方案4】:

      你的逻辑是正确的。但是,我不确定机器人是否接受并回显会话 cookie。我建议在需要 $_SESSION['legalage'] = true; 的页面深处您还添加代码以忽略机器人的此逻辑。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-08-06
        • 2012-02-05
        • 2013-04-01
        • 2011-09-14
        • 1970-01-01
        • 2015-05-26
        • 1970-01-01
        相关资源
        最近更新 更多