【问题标题】:crawler gets stuck on the mandatory agecheck page in Drupal爬虫卡在 Drupal 的强制年龄检查页面上
【发布时间】:2009-08-20 08:55:46
【问题描述】:

我们在 drupal 中构建了一个大型社区网站,在您访问网站内容之前,该网站有一个强制性的年龄检查

它会检查是否存在 cookie,如果不存在,您将被重定向到 agecheck 页面。

现在我们认为抓取工具会卡在这部分,它们会被重定向到年龄检查,并且永远无法抓取完整的网站。

以前有人吃过吗?处理此类事情的最佳方法是什么?

砂光机

编辑

很抱歉现在才提这个, 爬虫的问题之一是,当社区中的某个人在 facebook 上将某些内容发布到他的墙上时,facebook 会将页面爬回以获取图像和描述(在元标记中指定) 但 facebook 也会被重定向到 agecheck 页面。 如果我添加 facebook 爬虫,useragentcheck 会起作用吗? 如果是这样:那么有人会知道 facebook 爬虫的确切名称吗?

下面的解决方案是我们在网上也遇到过的一个问题。如果将 facebook 爬虫添加到该列表中有效,那么它将解决我们在使用此年龄检查页面时遇到的所有问题。

【问题讨论】:

  • “该网站有一个强制性的年龄检查” - 可能是有原因的。您希望在搜索引擎上显示什么样的信息?所有页面的“过滤”版本?只有页面的一个子集,甚至可能只有一个索引文件?

标签: php drupal web-crawler restriction


【解决方案1】:

您可以检查用户代理,如果它是爬虫,则不检查浏览器/用户是否具有所需的 cookie。

Here 是一个示例:

function crawlerDetect($USER_AGENT)
{
    $crawlers_agents = ‘Google|msnbot|Rambler|Yahoo|AbachoBOT|accoona|AcioRobot|ASPSeek|CocoCrawler|Dumbot|FAST-WebCrawler|GeonaBot|Gigabot|Lycos|MSRBOT|Scooter|AltaVista|IDBot|eStyle|Scrubby’;

    if ( strpos($crawlers_agents , $USER_AGENT) === false )
       return false;
}

// example

$crawler = crawlerDetect($_SERVER[’HTTP_USER_AGENT’]);

if ($crawler )
{
   // it is crawler, it’s name in $crawler variable
}
else
{
   // usual visitor
}

【讨论】:

  • 添加 facebook 爬虫有助于解决 facebook 问题吗? (见我的编辑)
  • 是的,这也将解决您的 facebook 链接问题。要了解 facebook 使用什么用户代理,您可以将所有未通过 cookie 测试的请求记录到数据库或文件中,然后尝试在 facebook 上发布链接。然后,您将在数据库中找到用户代理字符串。
【解决方案2】:

Gary Keith 有一个 php 类,您可以使用它来检查访问者的所有属性(例如,浏览器或爬虫),并且该类还会定期自动更新浏览器和爬虫的详尽 ini 文件。还有一个drupal module,虽然我没试过。

【讨论】:

    猜你喜欢
    • 2012-03-21
    • 2016-01-08
    • 1970-01-01
    • 2022-06-15
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    相关资源
    最近更新 更多