我有一个要从网络爬网程序隐藏的子目录。

一种方法是在服务器的根目录中使用robots.txt并添加一条规则以排除该子目录,目录。但是,任何具有基本Web知识的人都可以访问robots.txt内容并找出不允许的目录。

我想办法避免这种情况,但我不确定是否可以使用。
X为我要排除的子目录的名称。阻止Web爬网程序索引X目录并同时使某人更难从根X识别robots.txt目录的一种方法是在robots.txt目录中添加X。 :


如果根目录中也已经存在robots.txt,那么网络爬虫会在子目录中找到robots.txt吗?

如果robots.txt位于X子目录,那么我应该使用相对路径还是绝对路径?

User-agent: *
Disallow: /X/




User-agent: *
Disallow: /




评论

我不确定为什么要避免人们阅读您不允许的目录,但是如果有敏感数据,那么它不仅应该被机器人阻止,还应该受到登录名或其他安全性的限制。

事实并非如此,我希望一个特定的用户可以访问它(对数据而言,不敏感,只是为了隐私),并且我不想锁定目录。

如果您有隐私问题,则应该以其他方式保护数据。那不是robots.txt的目的。

@AndrewLott这是正确的,但是如果您拥有管理员登录页面,则您不想将URL公开给该页面,因为这将导致漫游器在请求时对其进行锤击。例如,如果我有一个管理URL / admin_secretsausage,则我不希望Google为该索引编制索引,但我也不想公开该URL。

#1 楼

不会,网络搜寻器不会读取或遵守子目录中的robots.txt文件。如准官方robotstxt.org网站上所述:

放置位置
简短答案:位于Web服务器的顶级目录中。

或在Google的帮助页面上(重点是我的):

robots.txt文件是您网站根目录中的文件,用于指示您不希望搜索引擎抓取工具访问您网站中的那些部分。

无论如何,使用robots.txt隐藏搜索结果中的敏感页面是一个坏主意,因为如果其他页面链接到了robots.txt,搜索引擎可以为其索引。或者,如上面链接的Google帮助页所述:

您不应使用robots.txt作为从Google搜索结果中隐藏网页的方法。这是因为其他页面可能指向您的页面,并且可以通过这种方式为您的页面建立索引,从而避免了robots.txt文件。

那么您应该怎么做呢?
您可以让搜索引擎对页面进行爬网(如果他们能够找到它们),但是可以包含带有内容noindex,nofollow的漫游器元标记。这将告诉搜索引擎,即使它们确实找到了指向这些页面的链接,也不要为这些页面建立索引,并且不要跟随这些页面的任何其他链接。 (当然,这仅适用于HTML网页。)对于非HTML资源,您可以配置Web服务器(例如,使用.htaccess文件)以发送X-具有相同内容的Robots-Tag HTTP标头。


您可以设置密码验证来保护敏感页面。除了保护网页不受未经授权的人类访问者侵害外,它还可以有效地阻止网络爬虫。



评论


太棒了,是一个静态HTML页面,通过添加meta标签可以解决问题。谢谢。

–拉斐尔
16年1月31日在20:05

#2 楼

您的robots.txt应该位于根目录中,并且不应具有任何其他名称。根据标准规范:


必须通过HTTP在本地URL“ /robots.txt”上访问此文件。


评论


也就是说,网络搜寻器不会在robots.txt的其他目录中查找?

–拉斐尔
16年1月31日在19:59

并非我见过。 /robots.txt是标准,所以搜索引擎怎么会知道在其他地方应该看?

–安德鲁·洛特(Andrew Lott)
16年1月31日在20:00

#3 楼

您实际上可以在子目录中使用robots.txt。当前,这就是我们对待语言子域的方式。我们使用/robots.txt的301重定向到/lang/robots.txt(每个子域),并且可以正确拾取该文件。

它也可以拾取文件夹结构作为使用简单的正斜杠时正确的根。例如。 disallow:/

被视为禁止一切,而不仅仅是{redirected} robots.txt文件所在的当前子目录。

但是同样,我们使用301和有了它,所以如果没有301,我怀疑它是否会被发现...