【问题标题】:robots.txt disallow subdirectory without showing its name to robotsrobots.txt 不允许子目录不​​向机器人显示其名称
【发布时间】:2013-06-11 15:41:03
【问题描述】:

我遇到了 robots.txt 的问题。

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

User-agent: *
Disallow: /forbidden/

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

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

【问题讨论】:

  • 使用访问控制来阻止他们在服务器上的请求。

标签: security robots.txt robot


【解决方案1】:

即使没有链接到它,爬虫还是可以找到这些网址:

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

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

  • robots.txt
  • meta-robots

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

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

User-agent: *
Disallow: /fo

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2016-08-06
      相关资源
      最近更新 更多