如何阻止机器人抓取我的基于AJAX的URL?

RPM*_*984 6 javascript asp.net url bots web-crawler

我的ASP.NET MVC 3网站上有几个页面(不是技术在这里很重要),我<script>在页面上的标签中渲染出某些URL ,这样我的JavaScript(存储在外部文件中)就可以执行AJAX调用服务器.

像这样的东西:

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

现在在服务器端,大多数这些URL受属性保护,声明:

a)它们只能通过AJAX访问(例如XmlHttpRequest)

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

问题是,出于某种原因,机器人正在抓取这些URL,并尝试对它们执行HTTP GET,从而产生404.

我的印象是机器人不应该尝试抓取javascript.那么他们如何掌握这些网址呢?

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

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

我基本上已经添加到我的网站的路由到HTTP 410(Gone)这些URL(当它不是AJAX POST时).这真的很烦人,因为它正在为我已经被篡改的路线表添加另一条路线.

有什么提示/建议吗?

Eug*_*sky 3

通过 robots.txt 中的前缀禁止 URL

  • 您应该补充一点,您可以使用通配符,例如“*”。这意味着您可以让所有 ajax url 以“/bleh/”开头,并在“robots.txt”中添加“bleh/*”。 (4认同)