2012-03-25 37 views
5

我在我的ASP.NET MVC 3网站上有几个页面(并不是说这里的技术很重要),我在页面上呈现出<script>标记中的某些URL,以便我的JavaScript(存储在外部文件中)可以对服务器执行AJAX调用。如何阻止漫游器抓取我的基于AJAX的URL?

事情是这样的:

一),他们只能通过AJAX来访问(例如XmlHttpRequest的):

<html> 
    ... 
    <body> 
     ... 
     <script type="text/javascript"> 
     $(function() { 
      myapp.paths.someUrl = '/blah/foo'; // not hardcoded in reality, but N/A here 
     }); 
     </script> 
    </body> 
</html> 

现在在服务器端,大多数这些网址都与属性,指出保护

b)它们只能通过HTTP POST访问(因为它返回JSON - 安全)

的问题是,一些reaso n,漫游器正在爬取这些URL,并试图对它们执行HTTP GET,结果是404。

我的印象是机器人不应该尝试爬行的JavaScript。那么他们如何获得这些URL呢?

有什么办法可以阻止他们这样做吗?

我无法真正将这些URL变量移动到外部文件,因为正如上面的代码中的注释所示,我使用服务器代码(必须在实际页面上完成)呈现URL。

我基本上已经添加了路由到我的网站HTTP 410(去)这些URL的(当它不是一个AJAX POST)。这真的很烦人,因为它为我已经疯狂的路线表增加了另一条路线。

任何提示/建议?

+1

是否有指向他们,任何地方的''标签?哪些机器人正在击中他们? – SLaks 2012-03-25 23:12:17

+0

@ RPM1984:出于好奇,你是否编写了关于用户代理点击次数的统计数据?由此,你最受困扰的是哪种机器人? – 2012-03-25 23:15:08

+0

我认为googlebot的抓取JavaScript的能力有限,所以这可能是一个问题。不过,Googlebot会尊重robots.txt,因此您可以将其设置为防止抓取它们。 – 2012-03-25 23:15:09

回答

2

不允许通过URL在robots.txt前缀

+0

你是什么意思“由前缀”?你能扩大一点吗? – RPM1984 2012-03-26 02:47:51

+0

即 “不允许/嗒嗒” ,这将防止爬虫看起来与/等等(如/废话/富 你可以更具体,因为你需要禁止的条目数开始的所有URL。 – 2012-03-26 02:55:27

+0

嗯不是真的可行。我有大约20个ajax化的网址,有不同的路径/格式,所以除非我把它们全部移动到某个url路径,否则我需要20个robots.txt条目 – RPM1984 2012-03-26 03:33:48

相关问题