【问题标题】:Detect spiders or browsers with cookies enabled检测启用了 cookie 的蜘蛛或浏览器
【发布时间】:2010-08-20 19:41:34
【问题描述】:

许多蜘蛛/爬虫访问我们的新闻网站。我们依靠 GeoIP 服务来识别访问者的物理位置并为他们提供相关内容。所以我们开发了一个带有module_init()功能的模块,它可以向MaxMind发送IP并设置带有位置信息的cookies。为了避免每次页面浏览都发送请求,我们首先检查是否设置了cookie,如果没有,我们发送信息并设置cookie。这适用于普通客户,但当蜘蛛爬过网站时效果不佳。每个页面浏览都会提示对 MaxMind 的查询,并且此活动变得有些昂贵。我们正在寻找一种解决方案来识别爬虫,或者如果更简单的话,是启用 cookie 的合法浏览器,并仅在有用时查询 MaxMind。

【问题讨论】:

    标签: php drupal cookies web-crawler


    【解决方案1】:

    说实话,要做的不止一件事。 我会建议我过去为解决同样的问题所做的工作。使用浏览器检测脚本 有一种用于检测浏览器的类。然后根据已知浏览器的数据库检查浏览器。然后,如果浏览器在您的列表中,则如果不使用“最佳猜测”脚本,则允许调用服务。

    我的意思是这样的:

    Generic ip lookup class

    因此,如果浏览器类型不在您的列表中,它不会使用您的付费服务数据库,而是使用可以尽可能接近的此类。通过这种方式,您可以获得两全其美的机器人不会在您的 ip 服务上获得点击量,如果用户由于某种原因确实滑过了您的浏览器检查,他们很可能会获得正确的位置,从而在您的网站上正常显示。

    我知道这有点令人不安,我只是希望你能明白我在这里想说的话。

    真正的答案是,这个问题没有简单的答案或 100% 正确的答案,我做过很多网站都有同样的情况,并且疯狂地试图弄清楚,这和我一样接近完美来。由于 99% 的大多数 ligit 爬虫都会有这样的值:

    $_SERVER['HTTP_USER_AGENT'] = 'Googlebot', 'Yammybot', 'Openbot', 'Yahoo'... etc.
    

    一个简单的浏览器检查就可以了,但它可能会响应 IE6 或其他东西。

    我真的希望这会有所帮助,就像我说这里没有真正的答案至少不是我发现是 100%,这有点像现在找出用户是否在手持设备上,你可以获得 99 % 在那里,但从来没有 100%,而且它总是表明客户使用了 1% 不起作用,哈哈。

    【讨论】:

    • 谢谢。我通过写出用户代理来记录和添加条件来过滤合法的爬虫。技术含量低但有效。谢谢!
    【解决方案2】:

    蜘蛛和爬虫通常​​有一个不同的用户代理,也许你可以对其进行过滤?

    【讨论】:

    • 谢谢。你给了我一个想法。我用用户代理写出每个请求的日志。过滤明显的很容易。谢谢。
    【解决方案3】:

    可以使用www.atlbl.com 的 ATL webcrawler API 来检测网络爬虫(合法的和恶意的)

    【讨论】:

      猜你喜欢
      • 2012-06-14
      • 1970-01-01
      • 2010-12-02
      • 2013-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      相关资源
      最近更新 更多