【发布时间】: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 时)。这真的很烦人,因为它在我已经很混乱的路由表中添加了另一条路由。
任何提示/建议?
【问题讨论】:
-
是否有任何
<a>标签指向它们,在任何地方?哪些机器人正在攻击他们? -
@RPM1984:只是出于好奇,你有没有统计过用户代理的点击次数?由此看来,您最困扰的是哪种机器人?
-
我认为 googlebot 抓取 javascript 的能力有限,所以这可能是个问题。但是,Googlebot 尊重 robots.txt,因此您可以设置它以防止它抓取它们。
-
现在正式向您介绍在网站中执行 javascript 的新 Googlebot 功能
-
虽然这里似乎对 Google 有很多仇恨,但我仍然不相信 OP 受到它们的困扰,尤其是因为 OP 从未提及任何具体内容,尤其是因为机器人(除了big google/yahoo/ect)通常会绕过您设置的任何限制。 OP:您能否详细说明您认为哪些机器人正在试图压倒您?
标签: javascript asp.net url web-crawler bots