3

我发现 GoogleBot 正在抓取 JavaScript/AJAX 代码中引用的 Web 服务 URL。该 URL 已经在 robots.txt 中作为排除项,但在确定要抓取的内容时,Google 似乎不再遵守 robots.txt - 它似乎只是使用它来知道不索引的内容。

值得庆幸的是,这些服务 URL 只返回数据而不是执行操作,但它会弄乱我们收集的统计数据,这是非常不可取的。我个人无法看到 Google 是如何找到 Web 服务的 URL 的,除非它在 ​​Javascript 代码中抓取任意字符串(这似乎不太可能?)。

对于某些 URL,这也会导致我从网站上收到很多 Elmah 错误消息,这些消息说:

System.InvalidOperationException:无法识别 URL 意外以“/GetShortlists”结尾的请求格式。“......因为谷歌试图在它只支持POST时获取URL 。

它在其中查找 URL 的代码如下:

function GetShortlistsForUser() {
    $.ajax({
        type: "POST", url: "/WebService/WebService.asmx/GetShortlists",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) { /*--CUT--*/ });
        }
    });

那么我应该通过替换斜杠以某种方式混淆 URL,还是有更好的方法来阻止这些被抓取?

4

1 回答 1

0

(1) 尝试打破 javascript 代码中的 url 格式,例如,

var breaker="x/G";
......
url: "/WebServic"+"e/WebService."+"asm"+breaker+"etshortlists", 

因为谷歌可能会使用正则表达式来确定哪个部分是 url...(我不确定这是否可以阻止爬虫,但如果它有效,你不需要将它扩展到这个范围,因为它也会破坏代码阅读体验。)

(2) 在您的服务器上,Google 爬虫通常使用自定义的代理字符串,因此您可以拒绝它(或忽略它)。

于 2014-09-12T09:43:20.870 回答