阻止抓取工具跟踪javascripts中的链接

时间:2013-02-22 09:34:40

标签: javascript jquery web-crawler

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

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

现在,抓取工具正在尝试关注这些链接。如何防止这种情况?

2 个答案:

答案 0 :(得分:1)

首先,哪些抓取工具正在尝试访问这些路径?它们很受欢迎(例如Google Bot,Bing Bot,Yahoo!Slurp)还是其他一些机器人?您最好的选择是确定哪些抓取工具是“违规者”,然后尝试弄清楚他们为什么要关注这些链接。如果不做出一堆假设就很难告诉你如何防止这种情况。

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

假设有两种类型的抓取工具:

  1. 聪明的人:他们不会在JavaScript中查找URL,因为它的效率非常低,并且可能导致无意义的尝试来抓取完全无意义的内容(例如http://link.to.other/javascript/stuff.js)。但是,这些抓取工具可能正在执行JavaScript。
  2. 愚蠢的:他们可能会获取HTML内容并应用正则表达式来提取所有网址。大多数情况下,此类抓取工具很可能甚至无法执行您的JavaScript。
  3. 在爬虫程序中具有JavaScript执行功能非常复杂,因此我只认为很少有爬虫具有这样的功能,如果他们这样做,那么他们就是专业级爬虫。如果他们是专业级爬虫,那么你可能会期望他们很可能支持robots.txt以及像“nofollow”这样的锚元素的rel属性:

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

    我会把它们放在“智能”抓取工具组中。大多数流行的机器人非常聪明,他们也很有礼貌,所以你不必太担心它们。

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

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

    对于愚蠢的抓取工具,您可能需要测试一些不同的解决方案:模糊URL或employ one of several strategies to detect them。一旦你发现它们就可以做各种各样的事情,有些是好的,有些则不太好:)。

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

答案 1 :(得分:0)

让它看起来不像链接

var catalog = {
  'key1': {'path':'somepath',   'page':'template_1.html'},
  'key2': {'path':'anotherpath','page':'template_2.html'}
}
//and so on