如何停止Google抓取网络服务网址?

时间:2014-09-12 09:34:58

标签: html web-crawler google-crawlers

我发现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进行模糊处理,还是有更好的方法来阻止这些被抓取?

2 个答案:

答案 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网站管理员工具中指定停止抓取特定网址。