0

为了支持远程 jQuery 模板,我在 javascripts 中出现了一些链接。喜欢:

<script type="text/javascript">
var catalog = {};
catalog['key1'] = 'somepath/template_1.html';
catalog['key2'] = 'anotherpath/template_2.html';
//and so on
</script>

现在,爬虫正试图追踪这些链接。如何防止这种情况?

4

2 回答 2

1

首先也是最重要的:哪些爬虫试图访问这些路径?它们是流行的(例如 Google Bot、Bing Bot、Yahoo! Slurp)还是其他一些机器人?最好的办法是确定哪些爬虫是“违规者”,然后尝试找出他们为什么要关注这些链接。如果不做一堆假设,很难告诉你如何防止这种情况发生。

继续阅读以了解可以做出多少假设:

假设有两种类型的爬虫:

  1. 聪明的:他们不会在 JavaScript 中查找 URL,因为它的效率非常低,并且可能会导致毫无意义地尝试抓取完全无意义的内容(例如http://link.to.other/javascript/stuff.js)。但是,这些爬虫可能正在执行 JavaScript。
  2. 愚蠢的:他们可能会获取 HTML 内容并应用正则表达式来提取所有 URL。大多数情况下,此类爬虫很可能甚至不会执行您的 JavaScript。

在爬虫中拥有 JavaScript 执行能力是相当复杂的,所以我只认为很少有爬虫有这样的能力,如果他们有,那么它们就是专业级的爬虫。如果他们是专业级爬虫,那么您可能会期望他们很可能支持 robots.txt 以及锚元素rel属性的“nofollow”之类的东西:

<a href="http://www.example.com/" rel="nofollow">Link text</a>

我会将这些存储在“智能”爬虫组中。大多数流行的机器人都很聪明,而且它们也很有礼貌,所以你不必太担心它们。

JavaScript 是否会修改文档,然后生成某种超链接?如果是,那么智能爬虫可以获取链接,但愚蠢的爬虫将无法获取链接,因为它们执行 JavaScript 的可能性要小得多。

那你能做什么呢?好吧,对于智能爬虫,您应该应用所有标准的礼貌政策:robots.txt、“nofollow”等。大多数情况下,这应该足以阻止它们爬取这些链接。无论如何,您都想对他们好,因为他们可能对您的网站有帮助(即他们会根据您的内容为网站增加流量)。

对于愚蠢的爬虫,您可能需要测试几种不同的解决方案:混淆 URL 或采用几种策略之一来检测它们。一旦检测到它们,您就可以做各种事情,有些很好,有些不太好:)。

同样,您可以看到,如果没有更多信息,我们必须做出很多假设。因此,您应该向我们提供更多信息,或者至少尝试自己分析信息并牢记上述问题/想法。

于 2013-02-25T18:19:25.030 回答
0

让它看起来不像链接

var catalog = {
  'key1': {'path':'somepath',   'page':'template_1.html'},
  'key2': {'path':'anotherpath','page':'template_2.html'}
}
//and so on
于 2013-02-22T10:08:15.570 回答