1

我遇到了 robots.txt 的问题。

我想禁止http://example.com/forbidden并允许http://example.com的任何其他子目录。通常,此语法为:

User-agent: *
Disallow: /forbidden/

但是,我不希望恶意机器人能够看到 /forbidden/ 目录存在 - 页面上没有任何链接到它,我希望它对所有人完全隐藏,除了那些知道它在那里的人首先。

有没有办法做到这一点?我的第一个想法是在子目录本身上放置一个 robots.txt,但这没有任何效果。如果我不希望我的子目录被良性或恶意机器人索引,我是否更安全地将其列在 robots.txt 或根本不列出或链接到它?

4

2 回答 2

2

即使不链接到它,爬虫也可能会找到这些 URL:

  • 其他人可以链接到它
  • 一些浏览器工具栏获取所有访问过的 URL 并将它们发送到搜索引擎
  • 您的 URL 可能出现在链接页面的(公共)Referer 日志中
  • 等等

所以你应该阻止他们。有两种变体(如果您不想使用访问控制):

  • 机器人.txt
  • meta-robots

(当然,这两种变体都只适用于礼貌的机器人)

您可以使用 robots.txt 而不使用完整的文件夹名称:

User-agent: *
Disallow: /fo

这将阻止所有fo. 当然,您必须找到一个与您仍希望被索引的其他 URL 不匹配的字符串。

但是,如果爬虫以某种方式发现了一个被阻止的页面(见上文),它可能仍会将 URL 添加到其索引中。robots.txt 仅禁止抓取/索引页面内容,但不禁止使用/添加/链接 URL。

但是,使用meta- robots,您甚至可以禁止将 URL 编入索引。将此元素添加到head要阻止的页面中:

<meta name="robots" content="noindex">

对于 HTML 以外的文件,有 HTTP 标头X-Robots-Tag

于 2013-06-13T11:28:17.963 回答
1

你最好不要在 robots.txt 中列出它。该文件纯粹是建议性的;表现良好的机器人会遵守它提出的请求,而粗鲁或恶意的机器人很可能会将其用作潜在有趣目标的列表。如果您的站点不包含指向该/forbidden/目录的链接,那么在任何情况下都没有机器人会找到它,除非它执行相当于字典攻击的操作,这可以通过 fail2ban 或一些类似的日志拖网渔船解决;在这种情况下,包括 robots.txt 中的目录充其量不会有额外的好处,最坏的情况是攻击者可以提供他可能找不到的东西的线索。

于 2013-06-11T15:43:32.430 回答