我发现GoogleBot正在抓取在JavaScript / AJAX代码中引用的网络服务网址。该网址已经在robots.txt中排除,但Google在确定 抓取 的内容时似乎不再服从robots.txt - 它似乎只是用它来知道什么不是 索引 。
值得庆幸的是,这些服务URL只返回数据而不是执行操作,但它会搞乱我们收集的统计数据,这是非常不受欢迎的。我个人无法看到Google如何找到网络服务的URL,除非它在Javascript代码中抓取任意字符串(这似乎不太可能?)。
对于某些网址,这也会导致我从网站上收到很多Elmah错误消息:
System.InvalidOperationException:对于意外以'/ GetShortlists'结尾的网址无法识别请求格式。“...当Google仅支持 GET 时 POST
它找到URL的代码如下:
function GetShortlistsForUser() {
$.ajax({
type: "POST", url: "/WebService/WebService.asmx/GetShortlists",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) { /*--CUT--*/ });
}
});
所以我应该通过替换斜杠来某种方式对URL进行模糊处理,还是有更好的方法来阻止这些被抓取?
答案 0 :(得分:0)
(1)尝试破解javascript代码中的url格式,例如
var breaker="x/G";
......
url: "/WebServic"+"e/WebService."+"asm"+breaker+"etshortlists",
因为谷歌可能会使用正则表达式来确定哪个部分是网址...(我不确定这是否会阻止抓取工具,但是如果它有效,则不需要将其分解为此延伸,因为它也会破坏代码读取经验。)
(2)在您的服务器上,Google抓取工具通常使用自定义代理字符串,因此您可以拒绝(或忽略它)。
答案 1 :(得分:-1)
您可以阻止机器人使用htaccess访问文件。将最后一行更改为要阻止的文件的位置。
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} Googlebot
RewriteRule ^.*$ "http\:\/\/website\.com\/path" [R=301,L]
您还可以在Google网站管理员工具中指定停止抓取特定网址。