【问题标题】:Avoid robots from going into a www.domain.com/thishash when link posted to twitter, facebook当链接发布到 twitter、facebook 时,避免机器人进入 www.domain.com/thishash
【发布时间】:2013-05-10 18:26:59
【问题描述】:

我正在构建一项服务,当人们点击格式为 www.domain.com/this_is_a_hash 的链接时,他们会收到通知(邮件)。使用这个服务器的人可以在不同的地方分享这个链接,比如 twitter、tumblr、facebook 等等......

我遇到的主要问题是,一旦在任何此类平台上共享链接,就会向我的服务器发送大量对 www.domain.com/this_is_a_hash 的请求。这样做的问题是,每次其中一个请求到达我的服务器时,都会向 this_is_a_hash 的所有者发送通知,当然这不是我想要的。我只想在真实的人进入此资源时收到通知。

我发现了一篇非常有趣的文章 here,它谈到了服务器在发布到 twitter 时收到的大量请求...

所以我需要的是避免搜索引擎点击“资源”网址...... www.mydomain.com/this_is_a_hash

有什么想法吗?我正在使用 Rails 3。

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 robots.txt web-crawler


    【解决方案1】:

    如果您不希望这些网页被搜索引擎索引,您可以使用 robots.txt 来阻止这些网址。

    User-agent: *
    Disallow: /
    

    (这将阻止所有用户代理的所有 URL。您可能希望添加一个文件夹以仅阻止其中的那些 URL。或者您可以在创建禁止的 URL 时动态添加它们,但是,某些机器人可能会缓存robots.txt 一段时间,因此他们可能无法识别出新的 URL 也应该被阻止。)

    当然,它只会阻止那些有礼貌地遵守 robots.txt 规则的机器人。

    如果您的用户要复制和粘贴 HTML,您可以使用 nofollow 链接关系类型:

    <a href="http://example.com/this_is_a_hash" rel="nofollow">cute cat</a>
    

    但是,这不会很有效,因为即使是一些支持这种链接类型still visit the pages 的搜索引擎。

    或者,您可以要求 JavaScript 能够点击链接,但这当然不是很优雅。

    但我假设他们只复制和粘贴纯 URL,所以这无论如何都行不通。

    所以你唯一的机会就是在链接被点击之后确定是机器人还是人类

    您可以检查用户代理。您可以分析页面上的行为(例如,第一次点击需要多长时间)。或者,如果它对您来说真的很重要,您可以强制用户输入验证码才能看到页面内容。当然,你永远无法用这种方法捕获所有个机器人。

    您可以在页面上使用分析,例如 Piwik。他们试图将用户与机器人区分开来,以便只有用户出现在统计数据中。我确信大多数分析工具都提供了一个 API,允许为每次注册访问发送邮件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-20
      • 1970-01-01
      • 2018-06-23
      • 2012-04-02
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多