【问题标题】:How to stop bots from crawling my AJAX-based URL's?如何阻止机器人抓取我的基于 AJAX 的 URL?
【发布时间】:2012-04-09 12:42:12
【问题描述】:

我的 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>

现在在服务器端,这些 URL 中的大多数都受以下属性保护:

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

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

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

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

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

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

我基本上已经添加了到我的网站的路由到 HTTP 410 (Gone) 这些 URL(当它不是 AJAX POST 时)。这真的很烦人,因为它在我已经很混乱的路由表中添加了另一条路由。

任何提示/建议?

【问题讨论】:

  • 是否有任何&lt;a&gt; 标签指向它们,在任何地方?哪些机器人正在攻击他们?
  • @RPM1984:只是出于好奇,你有没有统计过用户代理的点击次数?由此看来,您最困扰的是哪种机器人?
  • 我认为 googlebot 抓取 javascript 的能力有限,所以这可能是个问题。但是,Googlebot 尊重 robots.txt,因此您可以设置它以防止它抓取它们。
  • 现在正式向您介绍在网站中执行 javascript 的新 Googlebot 功能
  • 虽然这里似乎对 Google 有很多仇恨,但我仍然不相信 OP 受到它们的困扰,尤其是因为 OP 从未提及任何具体内容,尤其是因为机器人(除了big google/yahoo/ect)通常会绕过您设置的任何限制。 OP:您能否详细说明您认为哪些机器人正在试图压倒您?

标签: javascript asp.net url web-crawler bots


【解决方案1】:

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

【讨论】:

  • “按前缀”是什么意思?你能扩大一点吗?
  • 即“禁止 /blah”,这将阻止爬虫查看所有以 /blah 开头的网址(例如 /blah/foo 您可以更具体,并根据需要禁止尽可能多的条目。
  • 嗯不太可行。我有大约 20 个 ajax'ified url,具有不同的路径/格式。所以除非我将它们全部移动到某个 url 路径,否则我需要 20 个 robots.txt 条目。
  • 不可能有奇迹。你要么需要重新组织你不想暴露给搜索引擎的 AJAX url,要么在 robots.txt 中添加 20 个条目(顺便说一句,没有那么多条目)。
  • 您应该补充一点,您可以使用通配符,例如*。这意味着您可以拥有以/bleh/ 开头的所有ajax url,并在robots.txt 中添加bleh/*
猜你喜欢
  • 2020-02-09
  • 2012-07-13
  • 2013-09-03
  • 2012-04-14
  • 2021-09-15
  • 1970-01-01
  • 2021-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多