Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在twitter、facebook上发布链接时,避免机器人进入www.domain.com/thishhash_Ruby On Rails_Ruby On Rails 3_Robots.txt_Web Crawler - Fatal编程技术网

Ruby on rails 在twitter、facebook上发布链接时,避免机器人进入www.domain.com/thishhash

Ruby on rails 在twitter、facebook上发布链接时,避免机器人进入www.domain.com/thishhash,ruby-on-rails,ruby-on-rails-3,robots.txt,web-crawler,Ruby On Rails,Ruby On Rails 3,Robots.txt,Web Crawler,我正在建立一个服务,当人们使用www.domain.com/this_is_a_hash格式的链接时,会收到通知(邮件)。使用此服务器的用户可以在不同的地方共享此链接,如twitter、tumblr、facebook等 我遇到的主要问题是,一旦链接在任何一个平台上共享,很多对www.domain.com/this_is_a_散列的请求就会到达我的服务器。问题是,每次有一个请求到达我的服务器时,都会向this_is_a_散列的所有者发送一个通知,当然这不是我想要的。我只想在真正的人进入这个资源时得

我正在建立一个服务,当人们使用www.domain.com/this_is_a_hash格式的链接时,会收到通知(邮件)。使用此服务器的用户可以在不同的地方共享此链接,如twitter、tumblr、facebook等

我遇到的主要问题是,一旦链接在任何一个平台上共享,很多对www.domain.com/this_is_a_散列的请求就会到达我的服务器。问题是,每次有一个请求到达我的服务器时,都会向this_is_a_散列的所有者发送一个通知,当然这不是我想要的。我只想在真正的人进入这个资源时得到通知

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

所以我需要的是避免搜索引擎点击“资源”url。。。www.mydomain.com/this\u是一个\u散列

有什么想法吗?我使用的是rails 3


谢谢

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

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

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

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

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

然而,这并不是很有效,因为即使是一些支持这种链接类型的搜索引擎

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

但是我假设他们只是复制粘贴普通的URL,所以这无论如何都不会起作用

所以你唯一的机会就是在点击链接后决定它是机器人还是人

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

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