Robots.txt和未被引用的位置

4

如果我想防止符合标准的机器人爬取一个文件夹,我可以通过robots.txt来拒绝它。

然而,问题在于隐藏文件夹的同时也暴露了它的存在。

所以,如果没有链接到这个文件夹的话,我是否需要在robots.txt中指定不希望被爬取的文件夹呢?“好的”网络爬虫只会遵循链接进行爬取,而不是随机搜索文件夹和文件。

谢谢。


2
安全性靠模糊不清很少有效,尤其是在互联网上。如果“不提供链接”是你唯一的防御措施,那么你应该始终认为这种防御已经被攻破了。 - Joachim Sauer
不要担心,这不仅仅是如此,但我更喜欢尽可能多的障碍,即使它们很简单,如果它们不会花费我任何东西,甚至不需要时间。 - Francisc
2个回答

3
让我向您保证,作为一个“好”的网络爬虫的作者,如果有什么东西在网上是公开可访问的,爬虫一定会找到它。如果您创建了一个像http://example.com/hidden_folder这样的文件夹,并认为通过不发布指向它的链接,没有人会发现它,那么您就错了。这和把房屋钥匙藏在门垫下没什么两样。虽然爬虫可能不会去搜索hidden_folder,但其他人会。当他们发现它时,他们会发布指向它的链接,我的爬虫会找到该链接。
即使没有人寻找您的隐藏文件夹,也可能发生类似的事情。例如,想象一下,您有一个名为http://example.com/hidden_folder/bookmarks.html的文件。在里面,您有指向所有喜欢网站的链接。
当您单击其中一个链接(比如joesblog.com)时,您的浏览器发送给joesblog.com的请求将包括引用URL——您的“隐藏”文件夹中的HTML文件。
您会惊讶地发现,有多少网站发布了其访问日志。如果joesblog是其中之一,则在该网站的某个位置,您将看到一个文件,其实际上说:“从http://example.com/hidden_folder/bookmarks.html访问了joesblog.com。”。
正如其他人所说,通过模糊保密确实行不通。如果网站上有一些您不希望被访问的信息,请使用密码或其他方法进行保护。不要假设爬虫或其他人不会找到它,只是因为您没有明确告诉他们。
编辑:
如果您没有在robots.txt文件中列出文件夹,则机器人将爬行它们(如果给出链接)。如果您列出了文件夹,则“好”的机器人将不会爬行。而“坏”的机器人无论如何都会爬行。
在我看来,有人阅读您的robots.txt以查找隐藏目录链接的可能性较低,而这些链接被其他方式发现的可能性较大。我建议使用@Joachim提出的解决方案,可以防止“好”的机器人爬行,并且不会揭示确切的目录名称。
此外,如果禁用了目录列表并且您的文件夹中没有默认页面,那么前往http://example.com/hidden_folder/的机器人将什么也得不到,只会收到一个错误消息,说明不能列出目录内容。

我的问题被误解了。我问的是是否最好不指定在robots.txt中隐藏的文件夹,而不是指定它们,而不是是否最好没有任何其他安全选项。 - Francisc

2

由于robots.txt中的Disallow行是前缀,因此您可以只提及一个前缀来指定与任何“公共”目录不共享的“隐藏”目录。

因此,如果您的“隐藏”目录名为/topsecrete_donotread/,则可以使用Disallow: /tops来避免被爬取。


哦,这很聪明,我不知道我可以禁止以某些东西开头的文件夹。 - Francisc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接